【发布时间】:2014-01-21 11:13:48
【问题描述】:
我正在使用RequireJS i18n plugin 将翻译加载到我的应用程序中。我正在为用户首选语言的运行时确定的概念而苦恼。
如果您使用navigator.language 来确定用户的首选语言,该插件运行良好,但在我的应用程序中,用户的语言保存在服务器上的数据库中。所以我需要在运行时设置语言环境:
require.config({
config: {
i18n: {
locale: userLocale
}
}
});
所以我需要一种巧妙的方法来设置userLocale 在 RequireJS 加载我的应用程序之前。有谁知道实现这一目标的最佳方法是什么?可能性包括:
1) 在我的应用程序之外以非 AMD 方式设置 userLocale:
//run Ajax call to determine user's localization preferencess
var Localization = Localization || getUserLocalization();
//and then...
require.config({
config: {
i18n: {
locale: Localization.userLocale
}
}
});
require(['app']);
这让我有点难过,因为这意味着我的一些应用程序将在 RequireJS 之外,因此不整洁。这也意味着所有用户的本地化设置(语言时区、日期格式、数字格式)都将保存在全局命名空间中。
2) 有一个单独的 require 调用来检索本地化设置
我不确定这是如何工作的,但也许:
var Localization = require(['localization']);
require.config({
config: {
i18n: {
locale: Localization.userLocale
}
}
});
require(['app']);
也许由于异步,这不起作用?此外,app 无法访问 Localization 对象,因此仍需要将其存储为全局变量。
任何人都可以找到解决此问题的好方法吗?有没有人使用过 RequireJS i18n 插件来做类似的事情?
【问题讨论】:
标签: javascript internationalization requirejs