【问题标题】:i18n in ExtJS & Spring MVCExtJS 和 Spring MVC 中的 i18n
【发布时间】:2009-03-23 13:29:50
【问题描述】:

我在网上搜索了一下,但还没有真正找到一个具体的解决方案来国际化运行 ExtJS 和 Spring MVC 的应用程序。目前(用于测试),我在 JSP 中定义全局 javascript 变量并使用 JSTL 标记分配字符串文字。

有没有人成功地提出了一个清晰/干净/灵活的解决方案?

任何想法都非常感谢。 TIA。

【问题讨论】:

    标签: spring internationalization extjs


    【解决方案1】:

    您应该在应用程序中翻译 3 种类型的字符串

    1. 页面上的静态字符串 -> 正如 Adam 所说,使用模板是个好主意。 MVC 可以解决这个问题。因此,您将所有字符串保存在数据库或属性文件中。

    2. 发送到 Ext J.S 的错误消息字符串 -> 这里有两个解决方案,要么允许 Ext J.S 处理它们,所以这意味着你有加载翻译的 js 文件 或者 在您发送回复之前在 MVC 上添加您的回复中的翻译

    3. 必须翻译的 db 表中的值,例如汽车零件。在这种情况下,您将密钥保留在 car_parts 表中,并将翻译保留在属性文件或 db 中的翻译表中。

    在我当前的应用程序中,我在 MVC 级别执行翻译,并将翻译保存在数据库中。优点是 1.翻译逻辑是MVC的一个地方而不是拆分。 2.您的翻译在一个地方,每当您在翻译中出现错误时,您不必发布新版本,您只需更新数据库,或者您在应用程序管理员上提供一个表格以自行完成。翻译表需要备份!!!

    【讨论】:

      【解决方案2】:

      这是在我的应用程序中完成的,它使用 Pylons、Ext JS 和一个名为 Mako 的模板引擎。

      我将 JavaScript 文件视为模板。我将每个类保存在一个单独的文件中,并使用我定义的函数 require() 来处理依赖关系。我的服务器处理这些模板,处理依赖关系,将它们连接在一起并压缩。这些模板包含对 gettext-like 函数“_”的调用,例如:

      window.setTitle("${_('My title')}");
      

      这些模板是常规 Mako 模板,可以通过类似 gettext 的实用程序进行预处理以创建 .po 文件。我正在使用的 .po 生成器(Babel)将找到的字符串的位置作为 cmets 放在 .po 文件中,这对我来说很方便,因为我知道字符串在哪里出现了。

      【讨论】:

        【解决方案3】:

        看看Spring MVC Ajax example frpm Spring。 如果您使用 JSP 视图,则可以使用 fmt 标记库和资源包。 如果您使用 Velocity 视图,请按照 Spring documentation 中的说明使用 #springMessage('my.key')。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-03-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2013-06-23
          相关资源
          最近更新 更多