2

对于希望在同一页面上显示多种语言的奇怪场景,我如何利用 Dojo 的 extraLocale 功能以辅助语言标记标签?

假设我在 Dojo 中定义了一个额外的语言环境,如下所示

var dojoConfig = {
locale : "en",
extraLocale: [ "zh-cn", "ja-jp" ]
};

如果我随后以以下方式定义一个类,如果我尝试使用 i18n,我总是会得到一个已经包含 MyClass_nls 的所有英文标签的对象。如何指定一个额外的语言环境,例如“zh-cn”,以便它查找 MyClass_nls 的中文版本?

define(
    [   "dojo/_base/declare", "dojo/_base/lang",
    "dijit/_TemplatedMixin",
            "dijit/_WidgetsInTemplateMixin",
            "dojo/text!./templates/MyClass.html",
            "dojo/i18n!./nls/MyClass_nls" ],

    function(declare, lang, _TemplatedMixin,
            _WidgetsInTemplateMixin, template, i18n) {

        return declare(
                "group.test.MyClass",
                [ _TemplatedMixin, _WidgetsInTemplateMixin,
                        Evented ],
                {

像这样的东西会起作用,但我相信这不需要 dojoConfig 中的 extraLocale 功能

var bundle = i18nResolver.getLocalization("group/mypath", "MyClass_nls", "zh-cn");
4

1 回答 1

0

您可以通过在模块 ID 中包含语言环境来显式加载语言环境包。因此,dojo/i18n!./nls/MyClass_nls将成为dojo/i18n!./nls/zh-cn/MyClass_nls显式加载 zh-cn 语言环境。您不需要使用extraLocale,这是在 Dojo 1.6 和更早版本中预加载语言环境的遗留机制。

于 2013-06-30T03:19:50.050 回答