java - 构建过程中的 i18n(或将一个模板 HTML 编译为 i18n HTML)

标签 java internationalization client-side

我正在开发一个需要支持国际化的项目。 我们想到的解决方案是:

  1. 创建带有语言占位符的 HTML 模板(即 home.html)。
  2. 创建一个 i18n 目录,其中包含“language_en_GB.json”等文件。
  3. 在构建过程中将它们合并在一起以创建输出 HTML。输出文件将位于基于语言的目录(例如“views/en_GB/home.html”或“views/fr_CA/home.html”)。

基本上是这样的:

<h1>{{i18n_welcome}}</h1>
<h2>{{userName}}</h2>

与此合并:

 {
      welcome:"Welcome!"
  }

在构建过程中将变成这样:

   <h1>Welcome!</h1>
   <h1>{{userName}}</h1>

我有几个问题,感谢您的意见。

  1. 这对于 i18n 来说是一个好方法吗?
  2. 您知道可以很好地进行 i18n 处理的模板引擎吗?
  3. 有客户端“烘焙”的解决方案吗?我希望 UI 开发人员也能够在本地进行烘焙。

最佳答案

有几个框架可以开箱即用地支持 i18n,具体取决于您的需求以及您当前在代码中使用的内容。作为纯模板引擎,可以看一下VelocityFreemarker 。更完整的框架可以看SpringSpring exampleStrutsStruts2 example .

当然,还有许多其他选择。我只是列出了我见过人们使用的四个最流行的。

基本上,对于任何框架,您都可以为每种语言创建资源包(使用特定包的语言命名。例如: language_en_GB.properties)。所以你的思维过程几乎是一致的。基本上,您从 html 文件开始并包含占位符。在每种语言的资源包中,您指定字符串应该是什么。之后,框架会使用适用于相关语言的适当资源包,为您即时进行合并。

所以你几乎走在正确的轨道上 - 这一切都变成了与你的框架正确集成并利用它来进行合并的问题,而不是在构建管道期间进行合并。

关于java - 构建过程中的 i18n(或将一个模板 HTML 编译为 i18n HTML),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11396476/

相关文章:

java - 我在尝试将 PlSql Grammar 与 Antlr4 一起使用时是否错过了一个步骤?

Java国际地址解析

javascript - 谷歌地图javascript如何绕过 "Same Origin Policy"

delphi - 如何获取Delphi资源字符串的字符串表资源id?

javascript - 如何在内存中创建一个文件供用户下载,而不是通过服务器?

javascript - HTML 中的数据处理,无需服务器代码(仅使用 Javascript)

java - 查找数组中出现次数最多的元素[java]

java - 以编程方式执行 Java 应用程序

java - 当我们在类中定义接口(interface)的抽象方法时,我们是 'override' 还是 'implement' 或者简单地说 'define' 这些方法?

javascript - VUE中切换语言时如何更改头部元数据?