@intlayer/docs 7.5.0-canary.1 → 7.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (394) hide show
  1. package/README.md +19 -19
  2. package/blog/ar/intlayer_with_i18next.md +1 -1
  3. package/blog/ar/intlayer_with_next-i18next.md +1 -1
  4. package/blog/ar/intlayer_with_next-intl.md +1 -1
  5. package/blog/ar/intlayer_with_react-i18next.md +1 -1
  6. package/blog/ar/intlayer_with_react-intl.md +1 -1
  7. package/blog/ar/intlayer_with_vue-i18n.md +1 -1
  8. package/blog/ar/l10n_platform_alternative/Lokalise.md +80 -0
  9. package/blog/ar/l10n_platform_alternative/crowdin.md +86 -0
  10. package/blog/ar/l10n_platform_alternative/phrase.md +82 -0
  11. package/blog/de/intlayer_with_i18next.md +1 -1
  12. package/blog/de/intlayer_with_next-i18next.md +1 -1
  13. package/blog/de/intlayer_with_next-intl.md +1 -1
  14. package/blog/de/intlayer_with_react-i18next.md +1 -1
  15. package/blog/de/intlayer_with_react-intl.md +1 -1
  16. package/blog/de/intlayer_with_vue-i18n.md +1 -1
  17. package/blog/de/l10n_platform_alternative/Lokalise.md +84 -0
  18. package/blog/de/l10n_platform_alternative/crowdin.md +80 -0
  19. package/blog/de/l10n_platform_alternative/phrase.md +82 -0
  20. package/blog/en/intlayer_with_i18next.md +1 -1
  21. package/blog/en/intlayer_with_next-i18next.md +1 -1
  22. package/blog/en/intlayer_with_next-intl.md +1 -1
  23. package/blog/en/intlayer_with_react-i18next.md +1 -1
  24. package/blog/en/intlayer_with_react-intl.md +1 -1
  25. package/blog/en/intlayer_with_vue-i18n.md +1 -1
  26. package/blog/en/l10n_platform_alternative/Lokalise.md +80 -0
  27. package/blog/en/l10n_platform_alternative/crowdin.md +80 -0
  28. package/blog/en/l10n_platform_alternative/phrase.md +78 -0
  29. package/blog/en-GB/intlayer_with_i18next.md +1 -1
  30. package/blog/en-GB/intlayer_with_next-i18next.md +1 -1
  31. package/blog/en-GB/intlayer_with_next-intl.md +1 -1
  32. package/blog/en-GB/intlayer_with_react-i18next.md +1 -1
  33. package/blog/en-GB/intlayer_with_react-intl.md +1 -1
  34. package/blog/en-GB/intlayer_with_vue-i18n.md +1 -1
  35. package/blog/en-GB/l10n_platform_alternative/Lokalise.md +80 -0
  36. package/blog/en-GB/l10n_platform_alternative/crowdin.md +80 -0
  37. package/blog/en-GB/l10n_platform_alternative/phrase.md +78 -0
  38. package/blog/es/intlayer_with_i18next.md +1 -1
  39. package/blog/es/intlayer_with_next-i18next.md +1 -1
  40. package/blog/es/intlayer_with_next-intl.md +1 -1
  41. package/blog/es/intlayer_with_react-i18next.md +1 -1
  42. package/blog/es/intlayer_with_react-intl.md +1 -1
  43. package/blog/es/intlayer_with_vue-i18n.md +1 -1
  44. package/blog/es/l10n_platform_alternative/Lokalise.md +80 -0
  45. package/blog/es/l10n_platform_alternative/crowdin.md +86 -0
  46. package/blog/es/l10n_platform_alternative/phrase.md +84 -0
  47. package/blog/fr/intlayer_with_i18next.md +1 -1
  48. package/blog/fr/intlayer_with_next-i18next.md +1 -1
  49. package/blog/fr/intlayer_with_next-intl.md +1 -1
  50. package/blog/fr/intlayer_with_react-i18next.md +1 -1
  51. package/blog/fr/intlayer_with_react-intl.md +1 -1
  52. package/blog/fr/intlayer_with_vue-i18n.md +1 -1
  53. package/blog/fr/l10n_platform_alternative/Lokalise.md +84 -0
  54. package/blog/fr/l10n_platform_alternative/crowdin.md +86 -0
  55. package/blog/fr/l10n_platform_alternative/phrase.md +91 -0
  56. package/blog/hi/intlayer_with_i18next.md +1 -1
  57. package/blog/hi/intlayer_with_next-i18next.md +1 -1
  58. package/blog/hi/intlayer_with_next-intl.md +1 -1
  59. package/blog/hi/intlayer_with_react-i18next.md +1 -1
  60. package/blog/hi/intlayer_with_react-intl.md +1 -1
  61. package/blog/hi/intlayer_with_vue-i18n.md +1 -1
  62. package/blog/hi/l10n_platform_alternative/Lokalise.md +86 -0
  63. package/blog/hi/l10n_platform_alternative/crowdin.md +84 -0
  64. package/blog/hi/l10n_platform_alternative/phrase.md +78 -0
  65. package/blog/id/intlayer_with_i18next.md +1 -1
  66. package/blog/id/intlayer_with_next-i18next.md +1 -1
  67. package/blog/id/intlayer_with_next-intl.md +1 -1
  68. package/blog/id/intlayer_with_react-i18next.md +1 -1
  69. package/blog/id/intlayer_with_react-intl.md +1 -1
  70. package/blog/id/intlayer_with_vue-i18n.md +1 -1
  71. package/blog/id/l10n_platform_alternative/Lokalise.md +86 -0
  72. package/blog/id/l10n_platform_alternative/crowdin.md +84 -0
  73. package/blog/id/l10n_platform_alternative/phrase.md +89 -0
  74. package/blog/it/intlayer_with_i18next.md +1 -1
  75. package/blog/it/intlayer_with_next-i18next.md +1 -1
  76. package/blog/it/intlayer_with_next-intl.md +1 -1
  77. package/blog/it/intlayer_with_react-i18next.md +1 -1
  78. package/blog/it/intlayer_with_react-intl.md +1 -1
  79. package/blog/it/intlayer_with_vue-i18n.md +1 -1
  80. package/blog/it/l10n_platform_alternative/Lokalise.md +84 -0
  81. package/blog/it/l10n_platform_alternative/crowdin.md +86 -0
  82. package/blog/it/l10n_platform_alternative/phrase.md +82 -0
  83. package/blog/ja/intlayer_with_i18next.md +1 -1
  84. package/blog/ja/intlayer_with_next-i18next.md +1 -1
  85. package/blog/ja/intlayer_with_next-intl.md +1 -1
  86. package/blog/ja/intlayer_with_react-i18next.md +1 -1
  87. package/blog/ja/intlayer_with_react-intl.md +1 -1
  88. package/blog/ja/intlayer_with_vue-i18n.md +1 -1
  89. package/blog/ja/l10n_platform_alternative/Lokalise.md +80 -0
  90. package/blog/ja/l10n_platform_alternative/crowdin.md +80 -0
  91. package/blog/ja/l10n_platform_alternative/phrase.md +78 -0
  92. package/blog/ko/intlayer_with_i18next.md +1 -1
  93. package/blog/ko/intlayer_with_next-i18next.md +1 -1
  94. package/blog/ko/intlayer_with_next-intl.md +1 -1
  95. package/blog/ko/intlayer_with_react-i18next.md +1 -1
  96. package/blog/ko/intlayer_with_react-intl.md +1 -1
  97. package/blog/ko/intlayer_with_vue-i18n.md +1 -1
  98. package/blog/ko/l10n_platform_alternative/Lokalise.md +80 -0
  99. package/blog/ko/l10n_platform_alternative/crowdin.md +86 -0
  100. package/blog/ko/l10n_platform_alternative/phrase.md +78 -0
  101. package/blog/pl/intlayer_with_i18next.md +1 -1
  102. package/blog/pl/intlayer_with_next-i18next.md +1 -1
  103. package/blog/pl/intlayer_with_next-intl.md +1 -1
  104. package/blog/pl/intlayer_with_react-i18next.md +1 -1
  105. package/blog/pl/intlayer_with_react-intl.md +1 -1
  106. package/blog/pl/intlayer_with_vue-i18n.md +1 -1
  107. package/blog/pl/l10n_platform_alternative/Lokalise.md +84 -0
  108. package/blog/pl/l10n_platform_alternative/crowdin.md +80 -0
  109. package/blog/pl/l10n_platform_alternative/phrase.md +82 -0
  110. package/blog/pt/intlayer_with_i18next.md +1 -1
  111. package/blog/pt/intlayer_with_next-i18next.md +1 -1
  112. package/blog/pt/intlayer_with_next-intl.md +1 -1
  113. package/blog/pt/intlayer_with_react-i18next.md +1 -1
  114. package/blog/pt/intlayer_with_react-intl.md +1 -1
  115. package/blog/pt/intlayer_with_vue-i18n.md +1 -1
  116. package/blog/pt/l10n_platform_alternative/Lokalise.md +80 -0
  117. package/blog/pt/l10n_platform_alternative/crowdin.md +86 -0
  118. package/blog/pt/l10n_platform_alternative/phrase.md +78 -0
  119. package/blog/ru/intlayer_with_i18next.md +1 -1
  120. package/blog/ru/intlayer_with_next-i18next.md +1 -1
  121. package/blog/ru/intlayer_with_next-intl.md +1 -1
  122. package/blog/ru/intlayer_with_react-i18next.md +1 -1
  123. package/blog/ru/intlayer_with_react-intl.md +1 -1
  124. package/blog/ru/intlayer_with_vue-i18n.md +1 -1
  125. package/blog/ru/l10n_platform_alternative/Lokalise.md +80 -0
  126. package/blog/ru/l10n_platform_alternative/crowdin.md +86 -0
  127. package/blog/ru/l10n_platform_alternative/phrase.md +82 -0
  128. package/blog/tr/intlayer_with_i18next.md +1 -1
  129. package/blog/tr/intlayer_with_next-i18next.md +1 -1
  130. package/blog/tr/intlayer_with_next-intl.md +1 -1
  131. package/blog/tr/intlayer_with_react-i18next.md +1 -1
  132. package/blog/tr/intlayer_with_vue-i18n.md +1 -1
  133. package/blog/tr/l10n_platform_alternative/Lokalise.md +80 -0
  134. package/blog/tr/l10n_platform_alternative/crowdin.md +80 -0
  135. package/blog/tr/l10n_platform_alternative/phrase.md +89 -0
  136. package/blog/vi/intlayer_with_i18next.md +1 -1
  137. package/blog/vi/intlayer_with_next-i18next.md +1 -1
  138. package/blog/vi/intlayer_with_next-intl.md +1 -1
  139. package/blog/vi/intlayer_with_react-i18next.md +1 -1
  140. package/blog/vi/intlayer_with_react-intl.md +1 -1
  141. package/blog/vi/intlayer_with_vue-i18n.md +1 -1
  142. package/blog/vi/l10n_platform_alternative/Lokalise.md +87 -0
  143. package/blog/vi/l10n_platform_alternative/crowdin.md +80 -0
  144. package/blog/vi/l10n_platform_alternative/phrase.md +82 -0
  145. package/blog/zh/intlayer_with_i18next.md +1 -1
  146. package/blog/zh/intlayer_with_next-i18next.md +1 -1
  147. package/blog/zh/intlayer_with_next-intl.md +1 -1
  148. package/blog/zh/intlayer_with_react-i18next.md +1 -1
  149. package/blog/zh/intlayer_with_react-intl.md +1 -1
  150. package/blog/zh/intlayer_with_vue-i18n.md +1 -1
  151. package/blog/zh/l10n_platform_alternative/Lokalise.md +80 -0
  152. package/blog/zh/l10n_platform_alternative/crowdin.md +84 -0
  153. package/blog/zh/l10n_platform_alternative/phrase.md +84 -0
  154. package/dist/cjs/common.cjs +6 -6
  155. package/dist/cjs/common.cjs.map +1 -1
  156. package/dist/cjs/generated/blog.entry.cjs +61 -4
  157. package/dist/cjs/generated/blog.entry.cjs.map +1 -1
  158. package/dist/cjs/generated/docs.entry.cjs +4 -4
  159. package/dist/cjs/generated/docs.entry.cjs.map +1 -1
  160. package/dist/cjs/generated/frequentQuestions.entry.cjs +4 -4
  161. package/dist/cjs/generated/frequentQuestions.entry.cjs.map +1 -1
  162. package/dist/cjs/generated/legal.entry.cjs +4 -4
  163. package/dist/cjs/generated/legal.entry.cjs.map +1 -1
  164. package/dist/esm/generated/blog.entry.mjs +57 -0
  165. package/dist/esm/generated/blog.entry.mjs.map +1 -1
  166. package/dist/types/generated/blog.entry.d.ts +3 -0
  167. package/dist/types/generated/blog.entry.d.ts.map +1 -1
  168. package/docs/ar/dictionary/content_file.md +1 -1
  169. package/docs/ar/intlayer_CMS.md +1 -1
  170. package/docs/ar/intlayer_visual_editor.md +1 -1
  171. package/docs/ar/intlayer_with_nextjs_15.md +1 -1
  172. package/docs/ar/intlayer_with_nextjs_16.md +1 -1
  173. package/docs/ar/intlayer_with_nuxt.md +3 -3
  174. package/docs/ar/intlayer_with_react_router_v7.md +1 -1
  175. package/docs/ar/intlayer_with_react_router_v7_fs_routes.md +1 -1
  176. package/docs/ar/intlayer_with_tanstack.md +1 -1
  177. package/docs/ar/intlayer_with_vite+react.md +1 -1
  178. package/docs/ar/intlayer_with_vite+vue.md +1 -1
  179. package/docs/ar/packages/intlayer/getLocaleName.md +17 -1
  180. package/docs/ar/plugins/sync-json.md +1 -1
  181. package/docs/de/dictionary/content_file.md +1 -1
  182. package/docs/de/intlayer_CMS.md +1 -1
  183. package/docs/de/intlayer_visual_editor.md +1 -1
  184. package/docs/de/intlayer_with_nextjs_15.md +1 -1
  185. package/docs/de/intlayer_with_nextjs_16.md +1 -1
  186. package/docs/de/intlayer_with_nuxt.md +3 -3
  187. package/docs/de/intlayer_with_react_router_v7.md +1 -1
  188. package/docs/de/intlayer_with_react_router_v7_fs_routes.md +1 -1
  189. package/docs/de/intlayer_with_tanstack.md +1 -1
  190. package/docs/de/intlayer_with_vite+react.md +1 -1
  191. package/docs/de/intlayer_with_vite+vue.md +1 -1
  192. package/docs/de/packages/intlayer/getLocaleName.md +17 -1
  193. package/docs/de/plugins/sync-json.md +1 -1
  194. package/docs/en/dictionary/content_file.md +1 -1
  195. package/docs/en/intlayer_CMS.md +1 -1
  196. package/docs/en/intlayer_visual_editor.md +1 -1
  197. package/docs/en/intlayer_with_nextjs_15.md +1 -1
  198. package/docs/en/intlayer_with_nextjs_16.md +1 -1
  199. package/docs/en/intlayer_with_nuxt.md +3 -3
  200. package/docs/en/intlayer_with_react_router_v7.md +1 -1
  201. package/docs/en/intlayer_with_react_router_v7_fs_routes.md +1 -1
  202. package/docs/en/intlayer_with_tanstack.md +1 -1
  203. package/docs/en/intlayer_with_vite+preact.md +1 -2
  204. package/docs/en/intlayer_with_vite+react.md +1 -1
  205. package/docs/en/intlayer_with_vite+vue.md +1 -1
  206. package/docs/en/packages/intlayer/getLocaleName.md +17 -0
  207. package/docs/en/plugins/sync-json.md +1 -1
  208. package/docs/en-GB/dictionary/content_file.md +1 -1
  209. package/docs/en-GB/intlayer_CMS.md +1 -1
  210. package/docs/en-GB/intlayer_visual_editor.md +1 -1
  211. package/docs/en-GB/intlayer_with_nextjs_15.md +1 -1
  212. package/docs/en-GB/intlayer_with_nextjs_16.md +1 -1
  213. package/docs/en-GB/intlayer_with_nuxt.md +3 -3
  214. package/docs/en-GB/intlayer_with_react_router_v7.md +1 -1
  215. package/docs/en-GB/intlayer_with_react_router_v7_fs_routes.md +1 -1
  216. package/docs/en-GB/intlayer_with_tanstack.md +1 -1
  217. package/docs/en-GB/intlayer_with_vite+react.md +1 -1
  218. package/docs/en-GB/intlayer_with_vite+vue.md +1 -1
  219. package/docs/en-GB/packages/intlayer/getLocaleName.md +17 -1
  220. package/docs/en-GB/plugins/sync-json.md +1 -1
  221. package/docs/es/dictionary/content_file.md +1 -1
  222. package/docs/es/intlayer_CMS.md +1 -1
  223. package/docs/es/intlayer_visual_editor.md +1 -1
  224. package/docs/es/intlayer_with_nextjs_15.md +1 -1
  225. package/docs/es/intlayer_with_nextjs_16.md +1 -1
  226. package/docs/es/intlayer_with_nuxt.md +3 -3
  227. package/docs/es/intlayer_with_react_router_v7.md +1 -1
  228. package/docs/es/intlayer_with_react_router_v7_fs_routes.md +1 -1
  229. package/docs/es/intlayer_with_tanstack.md +1 -1
  230. package/docs/es/intlayer_with_vite+react.md +1 -1
  231. package/docs/es/intlayer_with_vite+vue.md +1 -1
  232. package/docs/es/packages/intlayer/getLocaleName.md +17 -1
  233. package/docs/es/plugins/sync-json.md +1 -1
  234. package/docs/fr/dictionary/content_file.md +1 -1
  235. package/docs/fr/intlayer_CMS.md +1 -1
  236. package/docs/fr/intlayer_visual_editor.md +1 -1
  237. package/docs/fr/intlayer_with_nextjs_15.md +1 -1
  238. package/docs/fr/intlayer_with_nextjs_16.md +1 -1
  239. package/docs/fr/intlayer_with_nuxt.md +3 -3
  240. package/docs/fr/intlayer_with_react_router_v7.md +1 -1
  241. package/docs/fr/intlayer_with_react_router_v7_fs_routes.md +1 -1
  242. package/docs/fr/intlayer_with_tanstack.md +1 -1
  243. package/docs/fr/intlayer_with_vite+react.md +1 -1
  244. package/docs/fr/intlayer_with_vite+vue.md +1 -1
  245. package/docs/fr/packages/intlayer/getLocaleName.md +17 -1
  246. package/docs/fr/plugins/sync-json.md +1 -1
  247. package/docs/hi/dictionary/content_file.md +1 -1
  248. package/docs/hi/intlayer_CMS.md +1 -1
  249. package/docs/hi/intlayer_visual_editor.md +1 -1
  250. package/docs/hi/intlayer_with_nextjs_15.md +1 -1
  251. package/docs/hi/intlayer_with_nextjs_16.md +1 -1
  252. package/docs/hi/intlayer_with_nuxt.md +3 -3
  253. package/docs/hi/intlayer_with_react_router_v7.md +1 -1
  254. package/docs/hi/intlayer_with_react_router_v7_fs_routes.md +1 -1
  255. package/docs/hi/intlayer_with_tanstack.md +1 -1
  256. package/docs/hi/intlayer_with_vite+react.md +1 -1
  257. package/docs/hi/intlayer_with_vite+vue.md +1 -1
  258. package/docs/hi/packages/intlayer/getLocaleName.md +17 -1
  259. package/docs/hi/plugins/sync-json.md +1 -1
  260. package/docs/id/dictionary/content_file.md +1 -1
  261. package/docs/id/intlayer_CMS.md +1 -1
  262. package/docs/id/intlayer_visual_editor.md +1 -1
  263. package/docs/id/intlayer_with_nextjs_15.md +1 -1
  264. package/docs/id/intlayer_with_nextjs_16.md +1 -1
  265. package/docs/id/intlayer_with_nuxt.md +3 -3
  266. package/docs/id/intlayer_with_react_router_v7.md +1 -1
  267. package/docs/id/intlayer_with_react_router_v7_fs_routes.md +1 -1
  268. package/docs/id/intlayer_with_tanstack.md +1 -1
  269. package/docs/id/intlayer_with_vite+preact.md +1 -2
  270. package/docs/id/intlayer_with_vite+react.md +1 -1
  271. package/docs/id/intlayer_with_vite+vue.md +1 -1
  272. package/docs/id/packages/intlayer/getLocaleName.md +17 -0
  273. package/docs/id/plugins/sync-json.md +1 -1
  274. package/docs/it/dictionary/content_file.md +1 -1
  275. package/docs/it/intlayer_CMS.md +1 -1
  276. package/docs/it/intlayer_visual_editor.md +1 -1
  277. package/docs/it/intlayer_with_nextjs_15.md +1 -1
  278. package/docs/it/intlayer_with_nextjs_16.md +1 -1
  279. package/docs/it/intlayer_with_nuxt.md +3 -3
  280. package/docs/it/intlayer_with_react_router_v7.md +1 -1
  281. package/docs/it/intlayer_with_react_router_v7_fs_routes.md +1 -1
  282. package/docs/it/intlayer_with_tanstack.md +1 -1
  283. package/docs/it/intlayer_with_vite+react.md +1 -1
  284. package/docs/it/intlayer_with_vite+vue.md +1 -1
  285. package/docs/it/packages/intlayer/getLocaleName.md +17 -1
  286. package/docs/it/plugins/sync-json.md +1 -1
  287. package/docs/ja/dictionary/content_file.md +1 -1
  288. package/docs/ja/intlayer_CMS.md +1 -1
  289. package/docs/ja/intlayer_visual_editor.md +1 -1
  290. package/docs/ja/intlayer_with_nextjs_15.md +1 -1
  291. package/docs/ja/intlayer_with_nextjs_16.md +1 -1
  292. package/docs/ja/intlayer_with_nuxt.md +3 -3
  293. package/docs/ja/intlayer_with_react_router_v7.md +1 -1
  294. package/docs/ja/intlayer_with_react_router_v7_fs_routes.md +1 -1
  295. package/docs/ja/intlayer_with_tanstack.md +1 -1
  296. package/docs/ja/intlayer_with_vite+react.md +1 -1
  297. package/docs/ja/intlayer_with_vite+vue.md +1 -1
  298. package/docs/ja/packages/intlayer/getLocaleName.md +17 -1
  299. package/docs/ja/plugins/sync-json.md +1 -1
  300. package/docs/ko/dictionary/content_file.md +1 -1
  301. package/docs/ko/intlayer_CMS.md +1 -1
  302. package/docs/ko/intlayer_visual_editor.md +1 -1
  303. package/docs/ko/intlayer_with_nextjs_15.md +1 -1
  304. package/docs/ko/intlayer_with_nextjs_16.md +1 -1
  305. package/docs/ko/intlayer_with_nuxt.md +3 -3
  306. package/docs/ko/intlayer_with_react_router_v7.md +1 -1
  307. package/docs/ko/intlayer_with_react_router_v7_fs_routes.md +1 -1
  308. package/docs/ko/intlayer_with_tanstack.md +1 -1
  309. package/docs/ko/intlayer_with_vite+react.md +1 -1
  310. package/docs/ko/intlayer_with_vite+vue.md +1 -1
  311. package/docs/ko/packages/intlayer/getLocaleName.md +17 -1
  312. package/docs/ko/plugins/sync-json.md +1 -1
  313. package/docs/pl/dictionary/content_file.md +1 -1
  314. package/docs/pl/intlayer_CMS.md +1 -1
  315. package/docs/pl/intlayer_visual_editor.md +1 -1
  316. package/docs/pl/intlayer_with_nextjs_15.md +1 -1
  317. package/docs/pl/intlayer_with_nextjs_16.md +1 -1
  318. package/docs/pl/intlayer_with_nuxt.md +3 -3
  319. package/docs/pl/intlayer_with_react_router_v7.md +1 -1
  320. package/docs/pl/intlayer_with_react_router_v7_fs_routes.md +2 -2
  321. package/docs/pl/intlayer_with_tanstack.md +1 -1
  322. package/docs/pl/intlayer_with_vite+preact.md +1 -2
  323. package/docs/pl/intlayer_with_vite+react.md +1 -1
  324. package/docs/pl/intlayer_with_vite+vue.md +1 -1
  325. package/docs/pl/packages/intlayer/getLocaleName.md +17 -0
  326. package/docs/pl/plugins/sync-json.md +1 -1
  327. package/docs/pt/dictionary/content_file.md +1 -1
  328. package/docs/pt/intlayer_CMS.md +1 -1
  329. package/docs/pt/intlayer_visual_editor.md +1 -1
  330. package/docs/pt/intlayer_with_nextjs_15.md +1 -1
  331. package/docs/pt/intlayer_with_nextjs_16.md +1 -1
  332. package/docs/pt/intlayer_with_nuxt.md +3 -3
  333. package/docs/pt/intlayer_with_react_router_v7.md +1 -1
  334. package/docs/pt/intlayer_with_react_router_v7_fs_routes.md +1 -1
  335. package/docs/pt/intlayer_with_tanstack.md +1 -1
  336. package/docs/pt/intlayer_with_vite+react.md +1 -1
  337. package/docs/pt/intlayer_with_vite+vue.md +1 -1
  338. package/docs/pt/packages/intlayer/getLocaleName.md +17 -1
  339. package/docs/pt/plugins/sync-json.md +1 -1
  340. package/docs/ru/dictionary/content_file.md +1 -1
  341. package/docs/ru/intlayer_CMS.md +1 -1
  342. package/docs/ru/intlayer_visual_editor.md +1 -1
  343. package/docs/ru/intlayer_with_nextjs_15.md +1 -1
  344. package/docs/ru/intlayer_with_nextjs_16.md +1 -1
  345. package/docs/ru/intlayer_with_nuxt.md +3 -3
  346. package/docs/ru/intlayer_with_react_router_v7.md +1 -1
  347. package/docs/ru/intlayer_with_react_router_v7_fs_routes.md +1 -1
  348. package/docs/ru/intlayer_with_tanstack.md +1 -1
  349. package/docs/ru/intlayer_with_vite+react.md +1 -1
  350. package/docs/ru/intlayer_with_vite+vue.md +1 -1
  351. package/docs/ru/packages/intlayer/getLocaleName.md +17 -1
  352. package/docs/ru/plugins/sync-json.md +1 -1
  353. package/docs/tr/dictionary/content_file.md +1 -1
  354. package/docs/tr/intlayer_CMS.md +1 -1
  355. package/docs/tr/intlayer_visual_editor.md +1 -1
  356. package/docs/tr/intlayer_with_nextjs_15.md +1 -1
  357. package/docs/tr/intlayer_with_nextjs_16.md +1 -1
  358. package/docs/tr/intlayer_with_nuxt.md +3 -3
  359. package/docs/tr/intlayer_with_react_router_v7.md +1 -1
  360. package/docs/tr/intlayer_with_react_router_v7_fs_routes.md +1 -1
  361. package/docs/tr/intlayer_with_tanstack.md +1 -1
  362. package/docs/tr/intlayer_with_vite+react.md +1 -1
  363. package/docs/tr/intlayer_with_vite+vue.md +1 -1
  364. package/docs/tr/packages/intlayer/getLocaleName.md +17 -0
  365. package/docs/tr/plugins/sync-json.md +1 -1
  366. package/docs/vi/dictionary/content_file.md +1 -1
  367. package/docs/vi/intlayer_CMS.md +1 -1
  368. package/docs/vi/intlayer_visual_editor.md +1 -1
  369. package/docs/vi/intlayer_with_nextjs_15.md +1 -1
  370. package/docs/vi/intlayer_with_nextjs_16.md +1 -1
  371. package/docs/vi/intlayer_with_nuxt.md +3 -3
  372. package/docs/vi/intlayer_with_react_router_v7.md +1 -1
  373. package/docs/vi/intlayer_with_react_router_v7_fs_routes.md +1 -1
  374. package/docs/vi/intlayer_with_tanstack.md +1 -1
  375. package/docs/vi/intlayer_with_vite+preact.md +1 -2
  376. package/docs/vi/intlayer_with_vite+react.md +1 -1
  377. package/docs/vi/intlayer_with_vite+vue.md +1 -1
  378. package/docs/vi/packages/intlayer/getLocaleName.md +17 -0
  379. package/docs/vi/plugins/sync-json.md +1 -1
  380. package/docs/zh/dictionary/content_file.md +1 -1
  381. package/docs/zh/intlayer_CMS.md +1 -1
  382. package/docs/zh/intlayer_visual_editor.md +1 -1
  383. package/docs/zh/intlayer_with_nextjs_15.md +1 -1
  384. package/docs/zh/intlayer_with_nextjs_16.md +1 -1
  385. package/docs/zh/intlayer_with_nuxt.md +3 -3
  386. package/docs/zh/intlayer_with_react_router_v7.md +1 -1
  387. package/docs/zh/intlayer_with_react_router_v7_fs_routes.md +1 -1
  388. package/docs/zh/intlayer_with_tanstack.md +1 -1
  389. package/docs/zh/intlayer_with_vite+react.md +1 -1
  390. package/docs/zh/intlayer_with_vite+vue.md +1 -1
  391. package/docs/zh/packages/intlayer/getLocaleName.md +17 -1
  392. package/docs/zh/plugins/sync-json.md +1 -1
  393. package/package.json +8 -8
  394. package/src/generated/blog.entry.ts +57 -0
@@ -0,0 +1,80 @@
1
+ ---
2
+ createdAt: 2025-12-18
3
+ updatedAt: 2025-11-06
4
+ title: Lokalise에 대한 L10n 플랫폼 대안
5
+ description: 귀하의 필요에 맞는 Lokalise 대안 L10n 플랫폼을 찾아보세요
6
+ keywords:
7
+ - L10n
8
+ - TMS
9
+ - Lokalise
10
+ slugs:
11
+ - blog
12
+ - l10n-platform-alternative
13
+ - lokalise
14
+ history:
15
+ - version: 7.5.0
16
+ date: 2025-12-18
17
+ changes: Initial version
18
+ ---
19
+
20
+ # Lokalise에 대한 L10N 오픈 소스 대안 (TMS)
21
+
22
+ ## 목차
23
+
24
+ <TOC/>
25
+
26
+ # 번역 관리 시스템 (TMS)
27
+
28
+ 번역 관리 시스템(TMS)은 번역 및 현지화(L10n) 프로세스를 자동화하고 간소화하도록 설계된 소프트웨어 플랫폼입니다. 전통적으로 TMS는 콘텐츠를 업로드하고 정리하며 인간 번역가에게 할당하는 중앙 허브 역할을 합니다. 워크플로우를 관리하고, 번역 메모리(같은 문장을 다시 번역하는 일을 방지하기 위해)를 저장하며, 번역된 파일을 개발자나 콘텐츠 관리자에게 다시 전달하는 작업을 처리합니다.
29
+
30
+ 본질적으로 TMS는 기술적인 코드(문자열이 존재하는 곳)와 문화적 이해를 가진 인간 언어 전문가들 사이를 잇는 다리 역할을 해왔습니다.
31
+
32
+ # Lokalise
33
+
34
+ Lokalise는 현대 TMS 환경에서 중요한 플레이어입니다. 2017년에 설립되어 개발자 경험(DX)과 디자인 통합에 강하게 집중하면서 시장을 교란하기 위해 등장했습니다. 기존의 구형 경쟁사들과 달리, Lokalise는 매끄러운 UI, 강력한 API, 그리고 Figma 및 GitHub과 같은 도구들과의 통합을 우선시하여 파일을 주고받는 마찰을 줄였습니다.
35
+
36
+ 그들의 성공은 "developer-friendly" TMS가 되는 데 기초했으며, 문자열의 추출과 삽입을 자동화하여 엔지니어의 시간을 확보해 주었습니다. 수동 스프레드시트 이메일을 없애고자 하는 빠르게 움직이는 기술 팀들에게 _continuous localization_ 문제를 효과적으로 해결했습니다.
37
+
38
+ # Intlayer
39
+
40
+ Intlayer는 주로 i18n 솔루션으로 알려져 있지만, headless CMS도 통합합니다. 문자열을 외부에서 동기화하는 도구로 주로 동작하는 Lokalise와 달리, Intlayer는 코드에 더 가깝게 존재합니다. 번들링 레이어에서 원격 콘텐츠 전달(remote content delivery)까지 전체 스택을 제어하여 보다 매끄럽고 효율적인 콘텐츠 흐름을 만듭니다.
41
+
42
+ ## AI 이후에 패러다임이 왜 바뀌었는가?
43
+
44
+ Lokalise는 로컬라이제이션의 "DevOps" 측면—문자열을 자동으로 이동시키는 부분—을 완성시켰습니다. 그러나 Large Language Models (LLMs)의 등장은 로컬라이제이션의 패러다임을 근본적으로 바꿔 놓았습니다. 병목은 더 이상 *문자열을 이동하는 것*이 아니라, *문자열을 생성하는 것*입니다.
45
+
46
+ LLMs의 등장으로 번역 비용은 급격히 하락했고 처리 속도는 기하급수적으로 증가했습니다. localization team의 역할은 이제 "managing translators"에서 "managing context and review"로 이동하고 있습니다.
47
+
48
+ Lokalise가 AI 기능을 추가하긴 했지만, 근본적으로는 사람 중심의 워크플로우를 관리하고 좌석 수나 키 수로 과금하도록 설계된 플랫폼으로 남아 있습니다. AI-first 세계에서 진정한 가치는 작업을 인간 에이전시에 얼마나 쉽게 할당하느냐가 아니라, AI 모델을 얼마나 잘 오케스트레이션하여 컨텍스트 인식(context-aware) 콘텐츠를 생성하느냐에 달려 있습니다.
49
+
50
+ 오늘날 가장 효율적인 워크플로우는 먼저 AI를 사용해 페이지를 글로벌하게 번역하고 배치하는 것입니다. 그다음 단계에서는 제품이 이미 수익을 창출하기 시작하면 특정 고트래픽 콘텐츠를 human copywriters(인간 카피라이터)가 최적화하여 전환율을 높입니다.
51
+
52
+ ## Intlayer가 Lokalise의 좋은 대안인 이유는 무엇인가요?
53
+
54
+ Intlayer는 AI 시대에 태어난 솔루션입니다. 원시적인 번역은 상품화될 수 있지만, *컨텍스트*가 핵심이라는 원칙으로 설계되었습니다.
55
+
56
+ Lokalise는 종종 높은 요금제 구조로 비판받으며, 스타트업이 성장함에 따라 비용이 감당할 수 없게 될 수 있습니다. Intlayer는 다른 접근 방식을 취합니다:
57
+
58
+ 1. **비용 효율성:** 성장에 불이익을 주는 "per key" 또는 "per seat" 요금 모델에 묶이지 않습니다. Intlayer에서는 자체 추론 비용(BYO Key)을 지불하므로, 비용이 플랫폼의 마진이 아니라 실제 사용량에 따라 직접 확장됩니다.
59
+ 2. **워크플로 통합:** Lokalise는 파일 동기화(자동화된 경우에도)를 필요로 하는 반면, Intlayer는 컴포넌트 파일(React, Next.js 등) 내에서 선언형 콘텐츠(Declarative Content) 정의를 허용합니다. 이렇게 하면 문맥이 UI 바로 옆에 유지되어 오류를 줄일 수 있습니다.
60
+ 3. **시각적 관리:** Intlayer는 실행 중인 애플리케이션과 직접 상호작용하는 시각적 에디터를 제공하여 편집이 전체 시각적 문맥에서 이루어지도록 보장합니다—전통적인 TMS의 파일 목록에서는 흔히 단절되는 부분입니다.
61
+
62
+ # 나란히 비교
63
+
64
+ | 기능 | Lokalise (Modern TMS) | Intlayer (AI-Native) |
65
+ | :------------ | :-------------------------------- | :------------------------------------- |
66
+ | **핵심 철학** | 자동화 및 디자인 단계 L10n. | 콘텐츠 로직 및 AI 생성 관리. |
67
+ | **가격 모델** | 좌석 기반 / MAU / 키 수(고비용). | 자체 추론 비용 지불(BYO Key). |
68
+ | **통합** | API 기반 동기화 / Figma 플러그인. | 심층 코드 통합(선언적). |
69
+ | **업데이트** | 동기화 지연 / PR 생성 필요. | 코드베이스나 라이브 앱과 즉시 동기화. |
70
+ | **파일 형식** | 무관(모바일, 웹, 문서). | 모던 웹(JSON, JS, TS). |
71
+ | **테스트** | 검토 워크플로우. | CI / CLI / A/B 테스트. |
72
+ | **호스팅** | SaaS(클로즈드 소스). | 오픈 소스 및 자체 호스팅 가능(Docker). |
73
+
74
+ Intlayer는 콘텐츠를 깊게 통합할 수 있는 완전한 올인원 i18n 솔루션을 제공합니다. 원격 콘텐츠를 코드베이스나 라이브 애플리케이션과 직접 동기화할 수 있습니다. 비교하자면, Lokalise는 일반적으로 리포지토리의 콘텐츠를 업데이트하기 위해 Pull Request를 생성하는 방식에 의존하므로 "콘텐츠 상태"와 "애플리케이션 상태"가 분리된 상태를 유지합니다.
75
+
76
+ 또한 Intlayer는 Feature Flag나 A/B testing 도구로 활용되어 서로 다른 콘텐츠 변형을 동적으로 테스트할 수 있게 합니다. Lokalise가 단어(문구)를 정확히 맞추는 데 중점을 둔다면, Intlayer는 동적 데이터 서빙을 통해 *사용자 경험*을 올바르게 만드는 데 중점을 둡니다.
77
+
78
+ Lokalise는 모바일 앱(iOS/Android)과 디자인 중심 워크플로에 매우 적합합니다. 그러나 Next.js나 React와 같은 프레임워크를 사용하는 최신 웹 애플리케이션의 경우, Intlayer는 `.js`, `.ts` 및 JSON 사전을 네이티브로 처리하여 콘텐츠에 대한 완전한 TypeScript 지원을 제공하므로 개발자 경험(DX)이 우수하며 번역 키가 누락된 상태로 배포되는 일이 없도록 보장합니다.
79
+
80
+ 마지막으로 데이터 주권과 통제권을 우선시하는 사용자에게 Intlayer는 오픈소스이며 자체 호스팅이 가능합니다. Docker 파일이 리포지토리에 직접 제공되어 로컬라이제이션 인프라를 완전히 소유할 수 있는데, 이는 Lokalise의 폐쇄형 SaaS 모델과 뚜렷한 대조를 이룹니다.
@@ -0,0 +1,86 @@
1
+ ---
2
+ createdAt: 2025-12-18
3
+ updatedAt: 2025-11-06
4
+ title: L10n 플랫폼 대안
5
+ description: 필요에 맞는 최적의 L10n 플랫폼 대안을 찾으세요
6
+ keywords:
7
+ - L10n
8
+ - TMS
9
+ - Crowdin
10
+ slugs:
11
+ - blog
12
+ - l10n-platform-alternative
13
+ - crowdin
14
+ history:
15
+ - version: 7.5.0
16
+ date: 2025-12-18
17
+ changes: 초기 버전
18
+ ---
19
+
20
+ # Crowdin (TMS)에 대한 오픈 소스 L10N 대안
21
+
22
+ ## 목차
23
+
24
+ <TOC/>
25
+
26
+ # 번역 관리 시스템 (Translation Management System)
27
+
28
+ 번역 관리 시스템(Translation Management System, TMS)은 번역 및 로컬라이제이션(L10n) 프로세스를 자동화하고 간소화하도록 설계된 소프트웨어 플랫폼입니다. 전통적으로 TMS는 콘텐츠를 업로드하고 정리하며 인간 번역가에게 할당하는 중앙 허브 역할을 합니다. 워크플로를 관리하고, 번역 메모리(같은 문장을 두 번 번역하는 것을 방지)를 저장하며, 번역된 파일을 개발자나 콘텐츠 관리자에게 전달하는 작업을 처리합니다.
29
+
30
+ 요컨대, TMS는 기술적 코드(문자열이 존재하는 곳)와 문화적 맥락을 이해하는 인간 언어 전문가(linguists) 사이의 가교 역할을 해왔습니다.
31
+
32
+ # Crowdin
33
+
34
+ Crowdin은 이 분야의 베테랑입니다. 2009년에 설립되었으며, 로컬라이제이션의 주요 과제였던 연결성(connectivity)이 핵심이던 시기에 등장했습니다. 그 사명은 명확했습니다: 카피라이터, 번역가, 그리고 프로젝트 소유자들을 효과적으로 연결하는 것.
35
+
36
+ 10년 넘게 Crowdin은 로컬라이제이션 관리를 위한 업계 표준이었습니다. 팀이 `.po`, `.xml`, 또는 `.yaml` 파일을 업로드하고 번역가들이 클라우드 인터페이스에서 작업할 수 있도록 허용함으로써 분절화(fragmentation) 문제를 해결했습니다. 견고한 워크플로 자동화를 바탕으로 명성을 쌓아, 기업들이 스프레드시트에 파묻히지 않고 한 언어에서 열 언어로 확장할 수 있게 했습니다.
37
+
38
+ # Intlayer
39
+
40
+ Intlayer는 주로 i18n 솔루션으로 알려져 있지만 CMS도 통합합니다. 기존 i18n 설정의 래퍼 역할에 국한된 Crowdin과 달리, Intlayer는 번들링 레이어부터 원격 콘텐츠 전달에 이르기까지 전체 스택을 제어하여 콘텐츠 흐름을 보다 원활하고 효율적으로 만듭니다.
41
+
42
+ ## AI 이후로 패러다임이 왜 바뀌었나?
43
+
44
+ Crowdin이 인간 중심의 워크플로우를 최적화한 반면, 거대 언어 모델(LLMs)의 등장으로 로컬라이제이션의 패러다임은 근본적으로 바뀌었습니다. 카피라이터의 역할은 더 이상 번역을 처음부터 생성하는 것이 아니라 AI가 생성한 콘텐츠를 검토하는 것이 되었습니다.
45
+
46
+ 왜일까요? AI는 비용이 1,000배 저렴하고 속도는 사실상 무한히 빠르기 때문입니다.
47
+
48
+ 그러나 한계가 있습니다. 카피라이팅은 단순한 번역이 아니라 메시지를 서로 다른 문화와 맥락에 맞게 적응시키는 작업입니다. 같은 iPhone을 당신의 할머니에게 판매하는 방식과 중국의 비즈니스 임원에게 판매하는 방식은 동일하지 않습니다. 어조, 관용구, 그리고 문화적 단서가 달라야 합니다.
49
+
50
+ 오늘날 가장 효율적인 워크플로우는 먼저 AI를 사용해 페이지를 글로벌하게 번역하고 포지셔닝하는 것입니다. 그런 다음 두 번째 단계에서, 제품이 이미 수익을 창출하기 시작하면 특정 고트래픽 콘텐츠를 인간 카피라이터가 최적화해 전환율을 높입니다.
51
+
52
+ 비록 Crowdin의 수익이—주로 입증된 레거시 솔루션에 의해—여전히 양호하게 유지되고 있지만, 전통적인 로컬라이제이션 업계는 향후 5~10년 내에 심각한 영향을 받을 것이라고 나는 믿습니다. 관리 도구에 대해 단어별 또는 사용자별로 비용을 지불하는 모델은 점점 구식이 되고 있습니다.
53
+
54
+ ## 왜 Intlayer가 Crowdin에 대한 좋은 대안인가?
55
+
56
+ Intlayer는 AI 시대에 태어난 솔루션입니다. 2026년에는 원시 번역(raw translation)이 더 이상 본질적 가치를 지니지 않는다는 원칙으로 설계되었습니다. 번역은 이제 상품(commodity)입니다.
57
+
58
+ 따라서 Intlayer는 단순히 TMS로 자신을 포지셔닝하지 않고, 시각적 편집기와 국제화 로직을 깊게 통합한 **Content Management** 솔루션으로 자리매김합니다.
59
+
60
+ Intlayer를 사용하면 번역은 추론 비용으로 생성됩니다. 플랫폼의 가격 모델에 묶이지 않으며, 공급자(OpenAI, Anthropic, Mistral 등)와 모델을 선택하고 CI(Continuous Integration), CLI 또는 통합된 CMS를 통해 번역할 수 있습니다. 이는 번역가에 대한 접근(access to translators)에서 문맥 관리(management of context)로 가치를 전환합니다.
61
+
62
+ # 나란히 비교
63
+
64
+ | 기능 | Crowdin (레거시 TMS) | Intlayer (AI-Native) |
65
+ | :------------ | :--------------------------------------------- | :--------------------------------------- |
66
+ | **핵심 철학** | 사람을 문자열에 연결한다. | 콘텐츠 로직 및 AI 생성 관리를 수행한다. |
67
+ | **가격 정책** | 좌석별 / 호스팅 등급 기반. | 자체 추론 비용 지불 (BYO Key). |
68
+ | **통합** | 파일 기반 교환(업로드/다운로드). | 깊은 코드 통합(선언적). |
69
+ | **업데이트** | 텍스트 배포를 위해 종종 CI/CD 재빌드가 필요. | 코드베이스 또는 라이브 앱과 즉시 동기화. |
70
+ | **파일 형식** | 다양한(.po, .xml, .yaml 등). | 모던 웹(JSON, JS, TS). |
71
+ | **테스트** | 제한적. | CI / CLI. |
72
+ | **호스팅** | 주로 SaaS. | 오픈 소스 및 자체 호스팅 가능(Docker). |
73
+ | **가격 모델** | 좌석당 과금 / 호스팅 티어. | 자체 추론 비용 지불 (BYO Key 사용). |
74
+ | **통합** | 파일 기반 교환(업로드/다운로드). | 깊은 코드 통합(선언적). |
75
+ | **업데이트** | 텍스트 배포를 위해 CI/CD 재빌드가 자주 필요함. | 코드베이스 또는 라이브 앱과 즉시 동기화. |
76
+ | **파일 형식** | 다양함(.po, .xml, .yaml 등). | 모던 웹(JSON, JS, TS). |
77
+ | **테스트** | 제한적. | CI / CLI. |
78
+ | **호스팅** | 주로 SaaS. | 오픈 소스 및 셀프 호스팅 가능(Docker). |
79
+
80
+ Intlayer는 콘텐츠를 깊게 통합할 수 있는 완전한 올인원 i18n 솔루션을 제공합니다. 원격 콘텐츠를 코드베이스(codebase)나 라이브 애플리케이션과 직접 동기화할 수 있습니다. 반면 Crowdin은 콘텐츠를 업데이트하려면 종종 CI/CD 파이프라인에서 애플리케이션을 재빌드해야 하므로 번역팀과 배포 프로세스 사이에 마찰을 발생시킬 수 있습니다.
81
+
82
+ 또한 Intlayer는 Feature Flag나 A/B 테스트 도구로 활용할 수 있어 다양한 콘텐츠 변형을 동적으로 테스트할 수 있습니다—이는 Crowdin과 같은 표준 TMS 도구가 기본적으로 지원하지 않는 기능입니다.
83
+
84
+ Crowdin은 `.po`, `.xml`, `.yaml`` 같은 레거시 타입을 포함한 광범위한 파일 포맷을 지원하므로 기존 워크플로우나 구형 시스템을 가진 프로젝트에 유리할 수 있습니다. 반면 Intlayer는 주로 `.json`, `.js`, `.ts`` 같은 현대적 웹 지향 포맷을 사용합니다. 이는 Intlayer가 모든 레거시 파일 형식과 호환되지 않을 수 있음을 의미하며, 구 플랫폼에서 마이그레이션하는 팀은 이를 고려해야 합니다.
85
+
86
+ 마지막으로 data sovereignty와 제어를 우선시하는 경우, Intlayer는 open-source이며 자체 호스팅(self-hosted)이 가능합니다. Docker 파일은 레포지토리(repository)에 직접 제공되어 localization infrastructure에 대한 완전한 소유권을 제공합니다.
@@ -0,0 +1,78 @@
1
+ ---
2
+ createdAt: 2025-12-18
3
+ updatedAt: 2025-11-06
4
+ title: Phrase용 L10n 플랫폼 대안
5
+ description: 귀하의 필요에 맞는 Phrase의 최적 L10n 플랫폼 대안을 찾아보세요
6
+ keywords:
7
+ - L10n
8
+ - TMS
9
+ - Phrase
10
+ slugs:
11
+ - blog
12
+ - l10n-platform-alternative
13
+ - phrase
14
+ history:
15
+ - version: 7.5.0
16
+ date: 2025-12-18
17
+ changes: Initial version
18
+ ---
19
+
20
+ # Phrase (TMS)을 위한 L10N 오픈 소스 대안
21
+
22
+ ## 목차
23
+
24
+ <TOC/>
25
+
26
+ # 번역 관리 시스템 (TMS)
27
+
28
+ A Translation Management System (TMS) is a software platform designed to automate and streamline the translation and localization (L10n) process. Traditionally, a TMS serves as a centralized hub where content is uploaded, organized, and assigned to human translators. It manages workflows, stores translation memories (to avoid re-translating the same sentence twice), and handles the delivery of translated files back to the developers or content managers.
29
+
30
+ In essence, a TMS has historically been the bridge between the technical code (where strings live) and the human linguists (who understand the culture).
31
+
32
+ # Phrase (formerly PhraseApp)
33
+
34
+ Phrase는 엔터프라이즈 로컬라이제이션 분야의 강자입니다. 원래 PhraseApp으로 알려졌으며, 특히 Memsource와의 합병 이후 크게 성장했습니다. 소프트웨어 현지화를 위해 설계된 포괄적인 Localization Suite로 자리매김하며, 강력한 API 기능과 광범위한 포맷 지원을 제공합니다.
35
+
36
+ Phrase는 확장성을 염두에 두고 만들어졌습니다. 복잡한 워크플로우, 방대한 번역 메모리, 그리고 여러 팀에 걸친 엄격한 품질 보증 프로세스를 관리해야 하는 대기업들이 선호하는 선택지입니다. 그 강점은 'heavy duty' 로컬라이제이션 작업을 처리하는 능력에 있으며, 소프트웨어 문자열과 문서 번역 모두를 위한 올인원 생태계를 제공합니다.
37
+
38
+ # Intlayer
39
+
40
+ Intlayer는 주로 i18n 솔루션으로 알려져 있지만, 헤드리스 CMS도 통합합니다. 외부의 거대한 엔터프라이즈 스위트로 기능하는 Phrase와 달리, Intlayer는 민첩하고 코드에 통합된 레이어로 작동합니다. 번들링 레이어부터 원격 콘텐츠 전달(remote content delivery)에 이르기까지 스택 전체를 제어하여 현대 웹 애플리케이션에서 더 부드럽고 효율적인 콘텐츠 흐름을 제공합니다.
41
+
42
+ ## AI 이후에 패러다임이 왜 바뀌었나?
43
+
44
+ Phrase는 지난 10년의 문제를 해결하기 위해 구축되었습니다: 대규모의 인간 번역가 팀을 관리하고 분산된 엔터프라이즈 부서 전반에 걸쳐 워크플로우를 표준화하는 것. 워크플로우 거버넌스(workflow governance)에서 특히 강점을 보입니다.
45
+
46
+ 그러나 대형 언어 모델(LLM)의 등장으로 로컬라이제이션의 패러다임이 근본적으로 바뀌었습니다. 문제는 더 이상 "번역가 50명을 어떻게 관리할까?"가 아니라 "AI가 생성한 콘텐츠를 어떻게 효율적으로 검증할까?"입니다.
47
+
48
+ Phrase가 AI 기능을 통합하긴 했지만, 그 기능들은 종종 사람 중심 워크플로우와 좌석 기반 라이선싱(seat-based licensing)을 위해 설계된 레거시 아키텍처 위에 얹혀 있습니다. 현대에는 "pushing to TMS"와 "pulling from TMS"라는 마찰이 점점 구식이 되고 있습니다. 개발자들은 콘텐츠가 코드만큼 유연하게 다뤄지기를 기대합니다.
49
+
50
+ 오늘날 가장 효율적인 워크플로우는 먼저 AI를 사용해 페이지를 글로벌하게 번역하고 포지셔닝하는 것입니다. 그런 다음 두 번째 단계에서 제품이 이미 수익을 창출하기 시작한 후 특정 트래픽이 많은 콘텐츠를 인간 카피라이터가 최적화하여 전환율을 높이는 방식입니다.
51
+
52
+ ## 왜 Intlayer가 Phrase에 대한 좋은 대안인가?
53
+
54
+ Intlayer는 AI 시대에 탄생한 솔루션으로, 현대 JavaScript/TypeScript 생태계에 맞춰 설계되었습니다. 민첩성과 투명성으로 Phrase의 무거운 엔터프라이즈 모델에 도전합니다.
55
+
56
+ 1. **가격 투명성:** Phrase는 엔터프라이즈 요금제로 잘 알려져 있으며, 성장 중인 기업에는 불투명하고 비용이 많이 들 수 있습니다. Intlayer는 자체 API 키(OpenAI, Anthropic 등)를 사용할 수 있게 하여 플랫폼 구독에 붙는 마크업이 아니라 AI 제공업체의 시장 가격으로 인공지능 기능을 이용할 수 있도록 합니다.
57
+ 2. **개발자 경험(DX):** Phrase는 파일을 동기화하기 위해 CLI 도구와 API 호출에 크게 의존합니다. Intlayer는 번들러와 런타임에 직접 통합됩니다. 이는 정의가 엄격하게 타입화되어(TypeScript) 누락된 키가 프로덕션이 아닌 컴파일 시점에 포착된다는 것을 의미합니다.
58
+ 3. **시장 출시 속도:** Intlayer는 TMS의 "블랙 박스"를 제거합니다. 파일을 외부로 보내서 돌아오길 기다릴 필요가 없습니다. CI 파이프라인 또는 로컬 환경에서 AI를 통해 즉시 번역을 생성하여 개발 루프를 빠르게 유지합니다.
59
+
60
+ # 나란히 비교
61
+
62
+ | 기능 | Phrase (엔터프라이즈 TMS) | Intlayer (AI-네이티브) |
63
+ | :------------ | :------------------------------------- | :--------------------------------------- |
64
+ | **핵심 철학** | 엔터프라이즈 거버넌스 및 워크플로우. | 콘텐츠 로직 및 AI 생성 관리. |
65
+ | **가격 모델** | 맞춤형 엔터프라이즈 / 좌석 기반(높음). | 자체 추론 비용 지불 (BYO 키). |
66
+ | **통합** | API/CLI에 대한 높은 의존도. | 심층 코드 통합(선언적). |
67
+ | **업데이트** | 동기화 필요 / 파이프라인 의존. | 코드베이스 또는 라이브 앱과 즉시 동기화. |
68
+ | **파일 형식** | 매우 광범위함(레거시 및 문서 포함). | 모던 웹(JSON, JS, TS). |
69
+ | **테스트** | QA 검사 / LQA 단계. | CI / CLI / A/B 테스트. |
70
+ | **호스팅** | SaaS(엔터프라이즈 전용). | 오픈 소스 및 자체 호스팅 가능(Docker). |
71
+
72
+ Intlayer는 콘텐츠의 깊은 통합을 가능하게 하는 완전한 올인원 i18n 솔루션을 제공합니다. 원격 콘텐츠는 코드베이스나 라이브 애플리케이션과 직접 동기화될 수 있습니다. 이에 비해 Phrase는 강력하지만 복잡한 외부 의존성으로, 효과적으로 운영하려면 전담 현지화 관리자들이 필요한 경우가 많습니다.
73
+
74
+ 또한 Intlayer는 Feature Flag 또는 A/B 테스트 도구로 활용되어 서로 다른 콘텐츠 변형을 동적으로 테스트할 수 있게 합니다. Phrase는 언어적 일관성을 보장하도록 설계된 반면, Intlayer는 동적 데이터를 통해 전환율 및 사용자 경험을 최적화하는 데 도움을 줍니다.
75
+
76
+ Phrase는 복잡하고 다중 포맷의 엔터프라이즈 요구사항(예: PDF, 자막 및 소프트웨어를 동시에 번역하는 경우)에 대해 강력한 도구인 것은 부정할 수 없지만, Intlayer는 product teams가 웹 애플리케이션을 구축하면서 full ownership, type safety 및 엔터프라이즈 오버헤드 없이 현대적이고 AI-driven한 워크플로우를 원할 때 더 우수한 선택입니다.
77
+
78
+ 마지막으로 데이터 주권(data sovereignty)과 통제를 우선시하는 경우, Intlayer는 open-source이며 self-hosted가 가능합니다. Docker 파일은 리포지토리에서 직접 제공되어 로컬라이제이션 인프라에 대한 완전한 소유권을 부여합니다 — Phrase의 폐쇄형 SaaS 생태계에서는 불가능한 일입니다.
@@ -31,7 +31,7 @@ history:
31
31
 
32
32
  # Jak zautomatyzować tłumaczenia JSON i18next za pomocą Intlayer
33
33
 
34
- <iframe title="Jak zautomatyzować tłumaczenia JSON i18next za pomocą Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
34
+ <iframe title="Jak zautomatyzować tłumaczenia JSON i18next za pomocą Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
35
35
 
36
36
  ## Czym jest Intlayer?
37
37
 
@@ -27,7 +27,7 @@ history:
27
27
 
28
28
  # Internacjonalizacja (i18n) w Next.js z next-i18next i Intlayer
29
29
 
30
- <iframe title="Jak zautomatyzować tłumaczenia JSON next-i18next za pomocą Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
30
+ <iframe title="Jak zautomatyzować tłumaczenia JSON next-i18next za pomocą Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
31
31
 
32
32
  ## Spis treści
33
33
 
@@ -26,7 +26,7 @@ history:
26
26
 
27
27
  # Jak zautomatyzować tłumaczenia JSON next-intl za pomocą Intlayer
28
28
 
29
- <iframe title="Jak zautomatyzować tłumaczenia JSON next-intl za pomocą Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
29
+ <iframe title="Jak zautomatyzować tłumaczenia JSON next-intl za pomocą Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
30
30
 
31
31
  ## Czym jest Intlayer?
32
32
 
@@ -29,7 +29,7 @@ history:
29
29
 
30
30
  # Jak zautomatyzować tłumaczenia JSON react-i18next za pomocą Intlayer
31
31
 
32
- <iframe title="Jak zautomatyzować tłumaczenia JSON react-i18next za pomocą Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
32
+ <iframe title="Jak zautomatyzować tłumaczenia JSON react-i18next za pomocą Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
33
33
 
34
34
  ## Czym jest Intlayer?
35
35
 
@@ -27,7 +27,7 @@ history:
27
27
 
28
28
  # Jak zautomatyzować tłumaczenia JSON react-intl za pomocą Intlayer
29
29
 
30
- <iframe title="Jak zautomatyzować tłumaczenia JSON react-intl za pomocą Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
30
+ <iframe title="Jak zautomatyzować tłumaczenia JSON react-intl za pomocą Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
31
31
 
32
32
  ## Spis treści
33
33
 
@@ -27,7 +27,7 @@ history:
27
27
 
28
28
  # Internacjonalizacja (i18n) Vue.js z vue-i18n i Intlayer
29
29
 
30
- <iframe title="Jak zautomatyzować tłumaczenia JSON vue-i18n za pomocą Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
30
+ <iframe title="Jak zautomatyzować tłumaczenia JSON vue-i18n za pomocą Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
31
31
 
32
32
  ## Spis treści
33
33
 
@@ -0,0 +1,84 @@
1
+ ---
2
+ createdAt: 2025-12-18
3
+ updatedAt: 2025-11-06
4
+ title: Alternatywa platformy L10n dla Lokalise
5
+ description: Znajdź najlepszą alternatywę platformy L10n dla Lokalise odpowiadającą Twoim potrzebom
6
+ keywords:
7
+ - L10n
8
+ - TMS
9
+ - Lokalise
10
+ slugs:
11
+ - blog
12
+ - l10n-platform-alternative
13
+ - lokalise
14
+ history:
15
+ - version: 7.5.0
16
+ date: 2025-12-18
17
+ changes: Wersja początkowa
18
+ ---
19
+
20
+ # Open-source alternatywa L10n dla Lokalise (TMS)
21
+
22
+ ## Spis treści
23
+
24
+ <TOC/>
25
+
26
+ # System zarządzania tłumaczeniami
27
+
28
+ System Zarządzania Tłumaczeniami (TMS) to platforma programowa zaprojektowana do automatyzacji i usprawnienia procesu tłumaczeń i lokalizacji (L10n). Tradycyjnie TMS działa jako scentralizowany hub, w którym treści są przesyłane, organizowane i przypisywane do ludzkich tłumaczy. Zarządza przepływami pracy, przechowuje pamięci tłumaczeń (aby uniknąć ponownego tłumaczenia tego samego zdania) oraz obsługuje zwrot przetłumaczonych plików do deweloperów lub menedżerów treści.
29
+
30
+ W istocie, TMS historycznie stanowił pomost między technicznym kodem (gdzie znajdują się stringi) a ludzkimi lingwistami (którzy rozumieją kontekst kulturowy).
31
+
32
+ System zarządzania tłumaczeniami (TMS) to platforma programowa zaprojektowana w celu automatyzacji i usprawnienia procesu tłumaczenia i lokalizacji (L10n). Tradycyjnie TMS pełni rolę scentralizowanego centrum, do którego przesyłane są treści, gdzie są one organizowane i przypisywane tłumaczom. Zarządza workflows, przechowuje translation memories (aby uniknąć ponownego tłumaczenia tych samych zdań) i obsługuje dostarczanie przetłumaczonych plików z powrotem do deweloperów lub menedżerów treści.
33
+
34
+ W istocie TMS historycznie był pomostem między technicznym kodem (gdzie znajdują się strings) a lingwistami (którzy rozumieją kontekst kulturowy).
35
+
36
+ # Lokalise
37
+
38
+ Lokalise jest znaczącym graczem we współczesnym krajobrazie TMS. Założony w 2017 roku, pojawił się, aby zrewolucjonizować rynek, koncentrując się mocno na developer experience (DX) i integracji z designem. W przeciwieństwie do starszych konkurentów, Lokalise priorytetowo traktował elegancki interfejs użytkownika, potężne API oraz integracje z narzędziami takimi jak Figma i GitHub, aby zmniejszyć tarcia związane z przesyłaniem plików tam i z powrotem.
39
+
40
+ Swoje sukcesy zbudował na byciu "developer-friendly" TMS, automatyzując ekstrakcję i wstawianie stringów, aby uwolnić czas inżynierów. Skutecznie rozwiązał problem _continuous localization_ dla szybko rozwijających się zespołów technologicznych, które chciały pozbyć się ręcznych e-maili z arkuszami kalkulacyjnymi.
41
+
42
+ # Intlayer
43
+
44
+ Intlayer jest znany przede wszystkim jako rozwiązanie i18n, ale integruje także headless CMS. W przeciwieństwie do Lokalise, które działa w dużej mierze jako zewnętrzne narzędzie do synchronizacji Twoich strings, Intlayer funkcjonuje bliżej Twojego kodu. Kontroluje cały stos — od warstwy bundlingu po zdalne dostarczanie treści — co skutkuje płynniejszym i bardziej efektywnym przepływem zawartości.
45
+
46
+ ## Dlaczego paradygmaty zmieniły się od pojawienia się AI?
47
+
48
+ Lokalise udoskonaliło stronę „DevOps” lokalizacji — automatyczne przenoszenie strings. Jednak pojawienie się Large Language Models (LLMs) zasadniczo przesunęło paradygmaty lokalizacji. Wąskim gardłem nie jest już _przenoszenie_ strings; jest nim _generowanie_ ich.
49
+
50
+ Dzięki LLMs koszt tłumaczeń drastycznie spadł, a szybkość wzrosła wykładniczo. Rola zespołu lokalizacyjnego przesuwa się z "zarządzania tłumaczami" na "zarządzanie kontekstem i przeglądem".
51
+
52
+ Chociaż Lokalise dodał funkcje AI, w istocie pozostaje platformą zaprojektowaną do zarządzania ludzkimi workflow i pobierania opłat za seat lub liczbę kluczy. W świecie zorientowanym na AI wartość leży w tym, jak dobrze potrafisz orkiestrację swoich modeli AI, aby generowały treści uwzględniające kontekst, a nie tylko w tym, jak łatwo można zlecić zadanie agencji ludzkiej.
53
+
54
+ Obecnie najwydajniejszym workflow jest najpierw przetłumaczyć i wypozycjonować strony globalnie przy użyciu AI. Następnie, w drugiej fazie, wykorzystujesz copywriterów do optymalizacji konkretnych treści o dużym ruchu, aby zwiększyć konwersję, gdy produkt zaczyna już generować przychód.
55
+
56
+ ## Dlaczego Intlayer jest dobrą alternatywą dla Lokalise?
57
+
58
+ Intlayer to rozwiązanie urodzone w erze AI. Zostało zaprojektowane zgodnie z zasadą, że surowe tłumaczenie to towar, ale kontekst jest królem.
59
+
60
+ Lokalise bywa często krytykowane za strome progi cenowe, które mogą stać się prohibicyjne w miarę skalowania startupu. Intlayer przyjmuje inne podejście:
61
+
62
+ 1. **Efektywność kosztowa:** Nie jesteś związany modelem cenowym "per key" lub "per seat", który penalizuje wzrost. W Intlayer płacisz za własne inferencje (BYO Key), co oznacza, że twoje koszty skalują się bezpośrednio z rzeczywistym użyciem, a nie z marżami platformy.
63
+ 2. **Integracja workflow:** Podczas gdy Lokalise wymaga synchronizacji plików (nawet jeśli zautomatyzowanej), Intlayer pozwala na definiowanie Declarative Content bezpośrednio w plikach komponentów (React, Next.js, itd.). Dzięki temu kontekst znajduje się tuż obok UI, co zmniejsza liczbę błędów.
64
+ 3. **Zarządzanie wizualne:** Intlayer udostępnia edytor wizualny, który wchodzi w bezpośrednią interakcję z uruchomioną aplikacją, zapewniając, że zmiany są dokonywane w pełnym kontekście wizualnym — coś, co w tradycyjnych listach plików TMS jest często rozłączone.
65
+
66
+ # Porównanie obok siebie
67
+
68
+ | Funkcja | Lokalise (Nowoczesny TMS) | Intlayer (AI-Native) |
69
+ | :------------------- | :------------------------------------------------- | :------------------------------------------------------------------------ |
70
+ | **Główna filozofia** | Automatyzacja i L10n na etapie projektowania. | Zarządza logiką treści i generowaniem przez AI. |
71
+ | **Model cenowy** | Per seat / MAU / liczba kluczy (wysoki koszt). | Płacisz za własne inferencje (BYO Key — użyj własnego klucza). |
72
+ | **Integracja** | Synchronizacja przez API / wtyczki do Figma. | Głęboka integracja z kodem (deklaratywna). |
73
+ | **Aktualizacje** | Opóźnienia synchronizacji / wymóg tworzenia PR-ów. | Błyskawiczna synchronizacja z repozytorium kodu lub działającą aplikacją. |
74
+ | **Formaty plików** | Agnostyczne (Mobile, Web, Documents). | Nowoczesne webowe (JSON, JS, TS). |
75
+ | **Testowanie** | Proces przeglądu. | CI / CLI / testy A/B. |
76
+ | **Hosting** | SaaS (zamknięte źródło). | Open Source i możliwość własnego hostingu (Docker). |
77
+
78
+ Intlayer oferuje kompletne, all-in-one rozwiązanie i18n, które umożliwia głęboką integrację Twoich treści. Zdalne treści mogą być synchronizowane bezpośrednio z Twoją codebase lub Twoją aplikacją działającą na żywo. W porównaniu, Lokalise zazwyczaj polega na tworzeniu Pull Requestów, aby zaktualizować treści w Twoim repozytorium, co utrzymuje rozdział między "stanem treści" a "stanem aplikacji".
79
+
80
+ Ponadto Intlayer może być wykorzystywany jako narzędzie Feature Flag lub A/B testing, umożliwiając dynamiczne testowanie różnych wariantów treści. Podczas gdy Lokalise skupia się na poprawności słów, Intlayer skupia się na zapewnieniu właściwego _doświadczenia użytkownika_ poprzez dynamiczne serwowanie danych.
81
+
82
+ Lokalise sprawdza się świetnie w aplikacjach mobilnych (iOS/Android) oraz w workflowach zorientowanych na design. Jednak dla nowoczesnych aplikacji webowych korzystających z frameworków takich jak Next.js czy React, natywne obsługiwanie przez Intlayer plików `.js`, `.ts` oraz słowników JSON oferuje lepsze doświadczenie deweloperskie (DX) z pełnym wsparciem TypeScript dla treści — dzięki czemu nigdy więcej nie wypuścisz aplikacji z brakującym kluczem tłumaczenia.
83
+
84
+ Na koniec, dla tych, którzy priorytetowo traktują suwerenność danych i kontrolę, Intlayer jest open-source i może być hostowany lokalnie. Pliki Docker są dostępne bezpośrednio w repozytorium, dając Ci pełną kontrolę nad infrastrukturą lokalizacyjną — co stanowi wyraźny kontrast w stosunku do zamkniętego modelu SaaS Lokalise.
@@ -0,0 +1,80 @@
1
+ ---
2
+ createdAt: 2025-12-18
3
+ updatedAt: 2025-11-06
4
+ title: Alternatywa platformy L10n
5
+ description: Znajdź najlepszą alternatywę platformy L10n dla swoich potrzeb
6
+ keywords:
7
+ - L10n
8
+ - TMS
9
+ - Crowdin
10
+ slugs:
11
+ - blog
12
+ - l10n-platform-alternative
13
+ - crowdin
14
+ history:
15
+ - version: 7.5.0
16
+ date: 2025-12-18
17
+ changes: Wersja początkowa
18
+ ---
19
+
20
+ # Alternatywa L10n open-source dla Crowdin (TMS)
21
+
22
+ ## Spis treści
23
+
24
+ <TOC/>
25
+
26
+ # System zarządzania tłumaczeniami
27
+
28
+ System zarządzania tłumaczeniami (Translation Management System, TMS) to platforma programowa zaprojektowana w celu automatyzacji i usprawnienia procesu tłumaczenia i lokalizacji (L10n). Tradycyjnie TMS pełni rolę scentralizowanego centrum, do którego przesyła się treści, które są organizowane i przydzielane tłumaczom. Zarządza workflows, przechowuje pamięci tłumaczeń (translation memories — aby uniknąć ponownego tłumaczenia tych samych zdań) i obsługuje dostarczanie przetłumaczonych plików z powrotem do deweloperów lub menedżerów treści.
29
+
30
+ W istocie TMS historycznie pełnił funkcję mostu między technicznym kodem (gdzie znajdują się strings) a ludzkimi lingwistami (którzy rozumieją kontekst kulturowy).
31
+
32
+ # Crowdin
33
+
34
+ Crowdin jest weteranem w tej dziedzinie. Założony w 2009 roku, powstał w czasie, gdy głównym wyzwaniem lokalizacji była łączność. Jego misja była jasna: skutecznie łączyć copywriterów, tłumaczy i właścicieli projektów.
35
+
36
+ Przez ponad dekadę Crowdin był branżowym standardem w zarządzaniu lokalizacją. Rozwiązał problem fragmentacji, umożliwiając zespołom przesyłanie plików `.po`, `.xml` lub `.yaml` i pozwalając tłumaczom pracować nad nimi w interfejsie w chmurze. Zbudował swoją reputację na solidnej automatyzacji workflow, pozwalając firmom skalować z jednego języka do dziesięciu bez tonienia w arkuszach kalkulacyjnych.
37
+
38
+ # Intlayer
39
+
40
+ Intlayer jest znany przede wszystkim jako rozwiązanie i18n, ale integruje też CMS. W przeciwieństwie do Crowdin, które ogranicza się do bycia nakładką na istniejącą konfigurację i18n, Intlayer kontroluje cały stos — od warstwy bundlingu po zdalne dostarczanie treści — co skutkuje płynniejszym i bardziej efektywnym przepływem treści.
41
+
42
+ ## Dlaczego paradygmaty zmieniły się od pojawienia się AI?
43
+
44
+ Podczas gdy Crowdin optymalizował workflow ludzki, pojawienie się Large Language Models (LLMs) zasadniczo zmieniło paradygmaty lokalizacji. Rola copywritera nie polega już na tworzeniu tłumaczenia od zera, lecz na weryfikacji treści generowanych przez AI.
45
+
46
+ Dlaczego? Ponieważ AI jest 1000 razy tańsze i nieskończenie szybsze.
47
+
48
+ Jednak istnieje ograniczenie. Copywriting to nie tylko tłumaczenie; chodzi o dostosowanie przekazu do różnych kultur i kontekstów. Nie sprzedajemy iPhone'a twojej babci w ten sam sposób, w jaki sprzedajemy go chińskiemu menedżerowi biznesowemu. Ton, idiom i znaczniki kulturowe muszą się różnić.
49
+
50
+ Dziś najefektywniejszy workflow polega na tym, by najpierw użyć AI do przetłumaczenia i globalnego umiejscowienia stron. Następnie, w drugiej fazie, korzysta się z ludzkich copywriterów, by zoptymalizować konkretne treści o dużym ruchu i zwiększyć konwersję, gdy produkt zaczyna już generować przychody.
51
+
52
+ Chociaż przychody Crowdina — napędzane głównie przez jego dobrze sprawdzone legacy rozwiązania — nadal są solidne, uważam, że tradycyjny sektor lokalizacji zostanie poważnie dotknięty w horyzoncie 5–10 lat. Model płacenia za słowo lub za miejsce (per seat) za narzędzie do zarządzania staje się przestarzały.
53
+
54
+ ## Dlaczego Intlayer jest dobrą alternatywą dla Crowdina?
55
+
56
+ Intlayer to rozwiązanie powstałe w erze AI. Zostało zaprojektowane z założeniem, że w 2026 roku surowe tłumaczenie nie będzie miało już wartości samej w sobie. Stanie się towarem.
57
+
58
+ Dlatego Intlayer nie pozycjonuje się jedynie jako TMS, lecz jako rozwiązanie **Content Management**, które głęboko integruje edytor wizualny oraz logikę internacjonalizacji.
59
+
60
+ Dzięki Intlayer generujesz tłumaczenia ponosząc koszt swoich inferencji. Nie jesteś związany modelem cenowym platformy; wybierasz dostawcę (OpenAI, Anthropic, Mistral itp.), wybierasz model i tłumaczysz przez CI (Continuous Integration), CLI lub bezpośrednio przez zintegrowany CMS. Przesuwa to wartość z dostępu do tłumaczy na zarządzanie kontekstem.
61
+
62
+ # Porównanie obok siebie
63
+
64
+ | Feature | Crowdin (Legacy TMS) | Intlayer (AI-Native) |
65
+ | :----------------------- | :------------------------------------------------- | :-------------------------------------------------------------- |
66
+ | **Podstawowa filozofia** | Łączy ludzi ze stringami. | Zarządza logiką treści i generowaniem przez AI. |
67
+ | **Pricing Model** | Opłata za stanowisko / plan hostowany. | Płać za własne inferencje (BYO Key). |
68
+ | **Integration** | Wymiana plikowa (przesyłanie/pobieranie). | Głęboka integracja z kodem (deklaratywna). |
69
+ | **Updates** | Często wymaga przebudowy CI/CD, aby wdrożyć tekst. | Natychmiastowa synchronizacja z codebase lub aplikacją na żywo. |
70
+ | **File Formats** | Różnorodne (.po, .xml, .yaml itp.). | Nowoczesne Web (JSON, JS, TS). |
71
+ | **Testing** | Ograniczone. | CI / CLI. |
72
+ | **Hosting** | Głównie SaaS. | Open Source i możliwość samodzielnego hostowania (Docker). |
73
+
74
+ Intlayer oferuje kompletne, wszystko-w-jednym rozwiązanie i18n, które pozwala na głęboką integrację Twoich treści. Zdalne zasoby mogą być synchronizowane bezpośrednio z codebase'em lub z aplikacją działającą na żywo. Dla porównania, Crowdin często wymaga przebudowy aplikacji w pipeline CI/CD, aby zaktualizować treści, co powoduje tarcia między zespołem tłumaczeniowym a procesem wdrażania.
75
+
76
+ Ponadto Intlayer może być używany jako Feature Flag lub narzędzie do testów A/B, umożliwiając dynamiczne testowanie różnych wariantów treści — czego standardowe narzędzia TMS, takie jak Crowdin, natywnie nie obsługują.
77
+
78
+ Crowdin obsługuje szeroki zakres formatów plików — w tym starsze typy takie jak `.po`, `.xml` i `.yaml`, co może być korzystne dla projektów z ustalonymi workflowami lub starszymi systemami. Intlayer, w przeciwieństwie do tego, działa przede wszystkim z nowoczesnymi, webowymi formatami takimi jak `.json`, `.js` i `.ts`. Oznacza to, że Intlayer może nie być kompatybilny ze wszystkimi starszymi formatami plików, co jest istotne dla zespołów migrujących ze starszych platform.
79
+
80
+ Na koniec, dla tych, którzy priorytetowo traktują suwerenność danych i kontrolę, Intlayer jest open-source i może być samodzielnie hostowany (self-hosted). Pliki Docker są dostępne bezpośrednio w repozytorium, co daje pełną kontrolę i własność nad Twoją infrastrukturą lokalizacyjną.
@@ -0,0 +1,82 @@
1
+ ---
2
+ createdAt: 2025-12-18
3
+ updatedAt: 2025-11-06
4
+ title: Otwarte (open-source) rozwiązanie L10n — alternatywa dla Phrase
5
+ description: Znajdź najlepszą platformę L10n jako alternatywę dla Phrase dopasowaną do Twoich potrzeb
6
+ keywords:
7
+ - L10n
8
+ - TMS
9
+ - Phrase
10
+ slugs:
11
+ - blog
12
+ - l10n-platform-alternative
13
+ - phrase
14
+ history:
15
+ - version: 7.5.0
16
+ date: 2025-12-18
17
+ changes: Initial version
18
+ ---
19
+
20
+ # Otwarte (open-source) rozwiązanie L10n — alternatywa dla Phrase (TMS)
21
+
22
+ ## Spis treści
23
+
24
+ <TOC/>
25
+
26
+ # System zarządzania tłumaczeniami
27
+
28
+ System zarządzania tłumaczeniami (TMS) to platforma programowa zaprojektowana do automatyzacji i usprawnienia procesu tłumaczenia i lokalizacji (L10n). Tradycyjnie TMS pełni rolę scentralizowanego centrum, w którym treści są przesyłane, organizowane i przypisywane tłumaczom. Zarządza przepływami pracy, przechowuje pamięci tłumaczeń (aby uniknąć ponownego tłumaczenia tych samych zdań) oraz obsługuje zwrotne dostarczanie przetłumaczonych plików do deweloperów lub menedżerów treści.
29
+
30
+ W istocie TMS od dawna jest pomostem między warstwą techniczną (gdzie znajdują się stringi) a ludzkimi lingwistami (którzy rozumieją kontekst kulturowy).
31
+
32
+ System zarządzania tłumaczeniami (Translation Management System, TMS) to platforma programowa zaprojektowana do automatyzacji i usprawnienia procesu tłumaczenia i lokalizacji (L10n). Tradycyjnie TMS pełni rolę scentralizowanego centrum, gdzie treści są przesyłane, organizowane i przypisywane tłumaczom. Zarządza workflowami, przechowuje pamięci tłumaczeń (translation memories — aby uniknąć ponownego tłumaczenia tych samych zdań) i obsługuje dostarczanie przetłumaczonych plików z powrotem do deweloperów lub menedżerów treści.
33
+
34
+ W istocie TMS historycznie stanowił pomost między technicznym kodem (gdzie znajdują się strings) a ludzkimi lingwistami (którzy rozumieją kontekst kulturowy).
35
+
36
+ # Phrase (dawniej PhraseApp)
37
+
38
+ Phrase to potęga w obszarze lokalizacji korporacyjnej. Początkowo znane jako PhraseApp, znacznie się rozrosło, zwłaszcza po połączeniu z Memsource. Pozycjonuje się jako kompleksowy Localization Suite zaprojektowany do lokalizacji oprogramowania, oferując rozbudowane możliwości API i szerokie wsparcie formatów.
39
+
40
+ Phrase zostało zaprojektowane z myślą o skali. To wybór preferowany przez duże przedsiębiorstwa, które muszą zarządzać złożonymi przepływami pracy, ogromnymi pamięciami tłumaczeń oraz rygorystycznymi procesami zapewniania jakości w wielu zespołach. Jego siła tkwi w zdolności do obsługi "heavy duty" zadań lokalizacyjnych, oferując kompleksowy ekosystem zarówno dla stringów w oprogramowaniu, jak i tłumaczeń dokumentów.
41
+
42
+ # Intlayer
43
+
44
+ Intlayer jest znany przede wszystkim jako rozwiązanie i18n, ale integruje także headless CMS. W przeciwieństwie do Phrase, które funkcjonuje jako rozbudowany, zewnętrzny pakiet klasy enterprise, Intlayer działa jako zwinna, z kodem zintegrowana warstwa. Kontroluje cały stack — od warstwy bundlingu po zdalne dostarczanie treści — co skutkuje płynniejszym i bardziej efektywnym przepływem treści w nowoczesnych aplikacjach webowych.
45
+
46
+ ## Dlaczego paradygmaty zmieniły się od czasu pojawienia się AI?
47
+
48
+ Phrase zostało zbudowane, aby rozwiązywać problemy poprzedniej dekady: zarządzanie ogromnymi zespołami tłumaczy oraz standaryzacja workflowów w rozdrobnionych działach korporacyjnych. Doskonale sprawdza się w zakresie governance workflowów.
49
+
50
+ Jednak pojawienie się Large Language Models (LLMs) zasadniczo zmieniło paradygmaty lokalizacji. Wyzwanie nie polega już na tym: "jak zarządzać 50 tłumaczami?", lecz na tym: "jak efektywnie walidować treści generowane przez AI?"
51
+
52
+ Chociaż Phrase zintegrowało funkcje AI, są one często nakładane na dziedziczoną architekturę zaprojektowaną pod kątem procesów zorientowanych na ludzi i licencjonowania seat-based. W nowej erze tarcie związane z "wysyłaniem do TMS" i "pobieraniem z TMS" staje się przestarzałe. Deweloperzy oczekują, że treść będzie tak płynna jak kod.
53
+
54
+ Dziś najbardziej efektywny workflow to najpierw przetłumaczyć i umiejscowić strony globalnie przy użyciu AI. Następnie, w drugiej fazie, zatrudnia się ludzkich copywriterów do optymalizacji konkretnych treści o dużym natężeniu ruchu, aby zwiększyć konwersję, gdy produkt zacznie już generować przychody.
55
+
56
+ ## Dlaczego Intlayer jest dobrą alternatywą dla Phrase?
57
+
58
+ Intlayer to rozwiązanie stworzone w erze AI, zaprojektowane specjalnie dla nowoczesnego ekosystemu JavaScript/TypeScript. Kwestionuje ciężki model enterprise stosowany przez Phrase, oferując zwinność i przejrzystość.
59
+
60
+ 1. **Przejrzystość cen:** Phrase jest znane ze swoich cen Enterprise, które mogą być nieprzejrzyste i kosztowne dla rozwijających się firm. Intlayer pozwala używać własnych kluczy API (OpenAI, Anthropic itd.), dzięki czemu płacisz rynkowe stawki za inteligencję zamiast narzutu w cenie subskrypcji platformy.
61
+ 2. **Doświadczenie deweloperskie (DX):** Phrase w dużej mierze polega na narzędziach CLI i wywołaniach API do synchronizacji plików. Intlayer integruje się bezpośrednio z bundlerem i środowiskiem uruchomieniowym. Oznacza to, że Twoje definicje są ściśle typowane (TypeScript), a brakujące klucze wykrywane są w czasie kompilacji, a nie w produkcji.
62
+ 3. **Szybkość wprowadzenia na rynek:** Intlayer eliminuje "czarną skrzynkę" TMS. Nie wysyłasz plików gdzieś i nie czekasz na ich zwrot. Generujesz tłumaczenia natychmiast za pomocą AI w swoim pipeline CI lub w środowisku lokalnym, utrzymując krótki cykl rozwoju.
63
+
64
+ # Porównanie obok siebie
65
+
66
+ | Feature | Phrase (Enterprise TMS) | Intlayer (AI-Native) |
67
+ | :------------------ | :------------------------------------------------------------- | :-------------------------------------------------------------- |
68
+ | **Core Philosophy** | Zarządzanie korporacyjne i workflow. | Zarządza logiką treści i generowaniem przez AI. |
69
+ | **Pricing Model** | Dostosowany dla przedsiębiorstw / opłata za miejsce (wysokie). | Płać za własną inferencję (BYO Key). |
70
+ | **Integration** | Intensywne użycie API / CLI. | Głęboka integracja z kodem (deklaratywna). |
71
+ | **Updates** | Wymagana synchronizacja / zależne od pipeline. | Natychmiastowa synchronizacja z codebase lub aplikacją na żywo. |
72
+ | **File Formats** | Bardzo szeroki (systemy legacy i dokumenty). | Nowoczesne technologie webowe (JSON, JS, TS). |
73
+ | **Testing** | Kontrole QA / etapy LQA. | CI / CLI / testy A/B. |
74
+ | **Hosting** | SaaS (wyłącznie dla przedsiębiorstw). | Open Source i możliwość self-hostingu (Docker). |
75
+
76
+ Intlayer oferuje kompletne, all-in-one rozwiązanie i18n, które umożliwia głęboką integrację Twoich treści. Twoje zdalne treści mogą być synchronizowane bezpośrednio z codebase'em lub z live application. W porównaniu, Phrase jest potężną, lecz złożoną zewnętrzną zależnością, która często wymaga dedykowanych localization managerów, aby działać efektywnie.
77
+
78
+ Ponadto Intlayer może być wykorzystywany jako Feature Flag lub narzędzie do testów A/B, umożliwiając dynamiczne testowanie różnych wariantów treści. Phrase zostało zaprojektowane, aby zapewnić spójność językową, podczas gdy Intlayer pomaga optymalizować konwersję i user experience poprzez dynamic data.
79
+
80
+ Choć Phrase jest niezaprzeczalnie skuteczny w przypadku złożonych, wielomateriałowych potrzeb korporacyjnych (np. jednoczesne tłumaczenie plików PDF, napisów i oprogramowania), Intlayer jest lepszym wyborem dla zespołów produktowych budujących aplikacje webowe, które chcą full ownership, type safety i nowoczesnego, AI-driven workflow bez enterprise overhead.
81
+
82
+ Na koniec, dla tych, którzy priorytetowo traktują suwerenność danych i kontrolę, Intlayer jest open-source i może być self-hosted. Pliki Docker są dostępne bezpośrednio w repozytorium, dając pełne ownership nad infrastrukturą lokalizacyjną — coś niemożliwego w zamkniętym ekosystemie SaaS Phrase.
@@ -31,7 +31,7 @@ history:
31
31
 
32
32
  # Como automatizar suas traduções JSON do i18next usando Intlayer
33
33
 
34
- <iframe title="Como automatizar suas traduções JSON do i18next usando Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
34
+ <iframe title="Como automatizar suas traduções JSON do i18next usando Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
35
35
 
36
36
  ## O que é o Intlayer?
37
37
 
@@ -27,7 +27,7 @@ history:
27
27
 
28
28
  # Internacionalização (i18n) Next.js com next-i18next e Intlayer
29
29
 
30
- <iframe title="Como automatizar suas traduções JSON do next-i18next usando Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
30
+ <iframe title="Como automatizar suas traduções JSON do next-i18next usando Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
31
31
 
32
32
  ## Índice
33
33
 
@@ -26,7 +26,7 @@ history:
26
26
 
27
27
  # Como automatizar suas traduções JSON do next-intl usando Intlayer
28
28
 
29
- <iframe title="Como automatizar suas traduções JSON do next-intl usando Intlayer" class="m-auto aspect-[16/9] w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
29
+ <iframe title="Como automatizar suas traduções JSON do next-intl usando Intlayer" class="m-auto aspect-16/9 w-full overflow-hidden rounded-lg border-0" allow="autoplay; gyroscope;" loading="lazy" width="1080" height="auto" src="https://www.youtube.com/embed/MpGMxniDHNg?autoplay=0&amp;origin=http://intlayer.org&amp;controls=0&amp;rel=1"/>
30
30
 
31
31
  ## O que é Intlayer?
32
32