微服务国际化和本地化的最佳实践

mar*_*wun 7 translation localization internationalization language-translation microservices

正如主题所说,我正在寻找如何在微服务架构中处理 i18n 和 l10n 的最佳实践。关于这个话题似乎没有太多,但肯定还有其他话题

因此,在一个由一组微服务组成的相对复杂的系统中,可能使用多种语言开发,并且每个服务的代码托管在单独的 git 存储库中,并使用 Jenkins 管道构建,您如何着手本地化该系统?我做了一些研究,但无法找到这种设置的最佳实践。具体来说,我对如何在这样的环境中设置和管理持续本地化感兴趣。谢谢!干杯,

马丁

Chr*_*ard -1

您无需将数据本地化到微服务中,因为它们是后端的一部分。进入后端,您只处理关键字。然后在 GUI 中,您将拥有一个 i18n 系统,它将每个关键字替换为适当的句子。它不是特定于微服务的,您应该对整体应用程序执行相同的操作。

\n

例如,后端返回一个像这样的人:({"name":"Paul","job":"cook"}“job”是一个封闭的工作列表,如“cook”,“salesman”,“teacher”,...),并且GUI具有以下代码:

\n
import i18next from 'i18next';\ni18next.init({\n  resources: {\n    en: {\n      translation: {\n        "job": "Job",\n        "cook": "Cook",\n        "salesman": "Salesman",\n        "teacher": "Teacher"\n      }\n    },\n    fr: {\n      translation: {\n        "job": "M\xc3\xa9tier",\n        "cook": "Cuisinier",\n        "salesman": "Vendeur",\n        "teacher": "Enseignant"\n      }\n    },\n    es: {\n      translation: {\n        "job", "Trabajo",\n        "cook": "Cocinero",\n        "salesman": "Vendedor",\n        "teacher": "Profesor"\n      }\n    }\n  }\n});\n\n...\n\n// display the translation according to the current language\njobLabel.innerHTML = i18next.t("job");\njobField.innerHTML = i18next.t(person.job);\n
Run Code Online (Sandbox Code Playgroud)\n

如果您的 GUI 翻译不完整,则会显示 keyworkd,这通常是可接受的降级解决方案。

\n