我是 Dojo 和 i18n 的新手。我希望在我的应用程序中将一些作品转换为不同的语言。我已经阅读了几篇文章,老实说,我觉得有很多信息需要我消化,我正在努力消化。有人能为我提供最简单的方法吗?假设我想更改“你好”这个词。在我的脑海里它会是这样的:
- Dojo 库可供使用
- 我在我的 javascript 文件中定义了字符串“hello”。它有“你好”的占位符文本
我在我的 HTML 中指定我希望我的页面是
“此处指定的字符串以不同的语言显示你好”
这就是我能从有限的知识中吸收的尽可能多的东西。我如何从根本上使这种设置起作用?我假设我需要在我的页面上要求 i18n,但我如何执行它还有待确定。
任何帮助都会很棒。请记住,如果可能的话,我对您的回答知之甚少,谢谢!
最佳答案
nls 文件夹通常用于存储您的翻译字符串,并且通常是使用它的小部件旁边的子目录。
即。如果您的小部件存储在名为 app 的文件夹中的 myWidget.js 中,那么您的 myWidget.js 翻译字符串将存储在一个文件中目录 app/nls 中的相同名称 (myWidget.js)。
这只是惯例,但可能值得遵循,因为它使您的目录结构合乎逻辑。
这是 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;
});
这是一个非常简单的小部件,可在屏幕上创建一个 小部件将需要在与 myWidget.js 相同的目录中创建 nls 目录。在 nls 目录中,您创建另一个名为 myWidget.js 的 javascript 文件(即与父级同名)。该文件是您的根翻译文件,如下所示: 在这里,您已将字符串“Hello”分配给属性hello。这不是很有用,因为没有提供翻译。如果你想要一个挪威语翻译,那么你可以像这样修改它: 在这里你是说除了根翻译字符串你还有挪威语翻译。然后您需要创建您的挪威语翻译文件并将其放置在名为 no 的 nls 子目录中。因此,您创建了另一个名为 myWidget.js 的文件并将其放在 nls/no 中: 翻译文件的格式与根文件略有不同。使用默认字符串,除非在当前浏览器语言中可以为给定字符串提供翻译(即,您不需要翻译每个字符串,只需翻译您想要翻译的字符串)。 在小部件外部加载翻译字符串: 以上示例显示了如何按照常规约定为小部件加载翻译文本。您可以在任何小部件或任何 require 语句中加载您想要的任何字符串集。 dojo/i18n 类能够加载您指定的任何字符串集。 关于internationalization - 如何以最简单的方式使用 Dojo i18n,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/13682539/
define({
root: ({
"hello": "Hello"
})
});
define({
root: ({
"hello": "Hello"
}) ,
"no": true
});
define({
"hello": "Hei"
});
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
});