的NLS文件夾,通常是用來存放你的翻譯字符串,通常是一個子目錄旁邊的小部件使用。
即。如果你的widget被存儲在myWidget.js一個名爲應用文件夾中,然後myWidget.js你的翻譯字符串存儲在具有相同名稱的文件(myWidget.js)目錄應用/ nls。
這只是慣例,但可能是值得跟隨,因爲它使你的目錄結構的邏輯。
這裏是myWidget.js的例子部件:
define([
"dojo/_base/declare",
"dijit/_WidgetBase",
"dijit/_TemplatedMixin",
"dojo/i18n!./nls/myWidget"
], function(
declare, _widget, _templated, strings, domAttr
){
"use strict";
var construct = declare([_widget, _templated], {
"i18n": strings,
"templateString": "<div>${i18n.hello}</div>"
});
return construct;
});
這是創建了一個非常簡單的小部件<DIV>(見templateString屬性)在屏幕上。該<DIV>應包含翻譯文件加載並分配給你好屬性中的文本。
小部件將需要nls目錄創建在與相同的目錄myWidget.js。在NLS目錄中創建一個名爲myWidget.js(即同名的母公司)其他JavaScript文件。該文件是你的根翻譯文件,看起來像這樣:
define({
root: ({
"hello": "Hello"
})
});
在這裏您已經分配的字符串,「你好」向物業你好。這不是非常有用,因爲沒有提供翻譯。如果你想有一個挪威的翻譯,那麼你將修改它是這樣的:你說
define({
root: ({
"hello": "Hello"
}) ,
"no": true
});
這裏說的還有根翻譯字符串你也有一個挪威的翻譯。然後您需要創建您的挪威語翻譯文件並將其放置在nls的子目錄否。所以,你創建一個名爲myWidget.js另一個文件,並將其放置在NLS/NO:
define({
"hello": "Hei"
});
的翻譯文件的格式是根文件略有不同。使用默認字符串,除非在當前瀏覽器語言中給定字符串的翻譯可用(即,您不需要翻譯每個字符串,只需要翻譯那些字符串即可)。
加載翻譯串插件之外:
上述實施例表明如何加載翻譯文本以下的正常約定的窗口小部件。您可以在任何小部件或任何require語句中加載您想要的任何字符串集。 dojo/i18n類可以加載您指定的任何一組字符串。
eg:
require([
"dojo/i18n!<PATH TO TRANSLATION ROOT FILE YOU WANT TO LOAD>"
], function(string) {
// translation-string are stored in the 'strings' variable for the
// current browser language
});
感謝您的回覆。我有我的main.js包含所需的項目。然後,在js/app/nls中,我有sample.js,它保存了根指定的定義。在這裏,我沒有如此真實。然後在js/app/nls/no中,我使用挪威語中的規範定義了sample.js。我已經指定我的區域設置爲否,但沒有任何反應。我試圖修改的頭文件保留了它在HTML中指定的默認值,並且不會更改爲我在任何sample.js文件中的內容。我很茫然。你有一個樣本項目或知道任何我可以看到一個實例嗎? Dojo文檔沒有幫助。 – Creights
我已經快速地將上述項目發佈到Bitbucket(https://bitbucket.org/ssimpo/stackoverflow-13702818/src)。我已經使用Firefox 17.0.1在我的機器上測試過了。注意:我正在使用Dojo 1.8.1,不確定你使用的是哪個版本,但是認爲代碼應該可以在舊版本上工作(除了在data-dojo類型中將斜線改爲點)。如果將瀏覽器語言設置爲英語,則應顯示Hello,如果設置爲挪威語,則應顯示Hei。您可以通過將Dojo SDK降級並獲得更多提示,並通過您的評論來了解核心dijits(https://dojotoolkit.org/download/) –
中的i18n如何判斷,我認爲您需要require/define行爲「 dojo/i18n!./ nls/sample「(因爲你稱之爲sample.js),假設代碼正在運行,就像dojo可以正確映射relative-url一樣。嘗試一個完整的路徑到你的根文件並從那裏向後工作(例如「dojo/i18n!http://www.myserver.com/js/app/nls/sample.js」) –