4

我最近才开始学习道场供个人使用和体验。到目前为止,我一直在做关于各种 dojo 东西的教程(在他们的网站和网络上),并且我一直在“努力”为更复杂的应用程序(或良好实践)实施具体的基础设施。我找到了一个有趣的项目(https://github.com/csnover/dojo-boilerplate)和文章(http://www.sitepen.com/blog/2011/05/04/what-is-the-best-开始-道场-项目/的方式)。有了这个,我想我的第一个问题就解决了。如我错了请纠正我。

我觉得 i18n 上的教程缺少具体的实现。例如,我想在样板项目的对话框中添加 i18n。

define([ 'dojo/_base/declare', 'dijit/Dialog' ], function (declare, Dialog) {
    return declare(Dialog, {
        title: 'Hello World',
        content: 'Loaded successfully!'
    });
});

在这里,我的项目层次结构是:

在此处输入图像描述

如您所见,我为我的应用程序创建了自己的 nls 文件夹,并为不同的(语言语言环境)我的“字符串”存储。现在,如何在上面的对话框代码的标题或内容上指定区域设置内容。我最近在 ruby​​ on rails 上完成了 i18n(使用 MVC 的概念),根据我的观点,我必须为这个特定的视图创建一个本地化文件(.yml)。我知道 RoR 和 Dojo 真的不是一回事,但是有一个小部件(可以与我的视图进行比较),所以每个小部件都需要有自己的本地化......我遇到了 2 个教程,第一个第二个。也许,我读错了。

我现在有这样的东西,但它不起作用..我错过了什么?

dojo.requireLocalization("app", "dialog");

define([ 'dojo/_base/declare', 'dijit/i18n' 'dijit/Dialog' ], function (declare, Dialog) {
    i18n: dojo.i18n.getLocalization("app", "dialog"),
    return declare(Dialog, {
        title: i18n.title,
        content: i18n.content
    });
});

谢谢你。

编辑:

define([ 'dojo/_base/declare', 'dojo/i18n!app/nls/labels', 'dijit/Dialog' ], function (declare, labels, Dialog) {
    return declare(Dialog, {
        title: labels.title,
        content: labels.content
    });
});

我现在没有错误,但我的 labels.title 是空的...?

编辑(1):我忘记在默认的 nls 文件夹中添加根目录。

4

1 回答 1

4

这是我如何构建一些本地化对话框的示例。

目录结构

myApp\
  dialog\
    myDialog.js
    nls\
      dialog.js
      fr-ca\
        dialog.js

myDialog.js

define("myApp/dialog/myDialog", [
  "dojo", "dijit/Dialog", "dojo/i18n", 
  "dojo/i18n!./nls/dialog" // this is a relative path to the 
                           // dialog.js from myDialog.js
], function(dojo, Dialog) {

  var i18n = dojo.i18n.getLocalization(
    "myApp.dialog",  // this is the directory path to the nls folder
    "dialog"         // this is the file
  );       

  return declare(Dialog, {
    title:    i18n.title,
    content:  i18n.content
  });
});
于 2012-06-07T18:50:53.417 回答