【问题标题】:Dojo internationalization via markup outside of widgets通过小部件外部的标记实现 Dojo 国际化
【发布时间】:2012-04-10 02:50:56
【问题描述】:

Dojo 自定义小部件可以按照herehere 概述的步骤通过_templated mixin 进行国际化。然后像这样的小部件模板中的占位符:${i18n.username} 会自动替换为适当的语言翻译。

在小部件之外进行类似的 nls 语言替换的最简单方法是什么? 理想情况下,我想向标签添加一个属性以替换其中的所有占位符,包括嵌套标签。是否有某种类型的容器小部件已经这样做了?

或者 Dojo 开发是否假设所有内容都在(自定义)小部件中?我需要本地化已经存在的不使用小部件的代码。

目前我发现的最佳解决方案是:

【问题讨论】:

    标签: internationalization dojo


    【解决方案1】:

    我假设外部 html 中的符号是 ${i18n.username}。这将找到任何具有 class="i18nReplace" 的节点并替换该节点的 innerHTML。我没有测试任何这些,但我希望你可以以此为起点。

    dojo.require("dojo.i18n");
    dojo.require("dojo.query");
    dojo.requireLocalization("myI18n", "myI18N"); // This will need to be modified to get your i18n files
    
    dojo.addOnLoad(function() {
      var i18n = dojo.i18n.getLocalization("myI18n", "myI18N");
      dojo.query(".i18nReplace").forEach(function(node, index, arr){
    
          node.innerHTML = dojo.replace(node.innerHTML, { i18n: i18n } );
    
          // blindly doing this, does not support nested tags.
          // you could add conditional logic to check for children 
          // and if they exist separately process them, otherwise 
          // replace the html.
      });
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多