我正在开发一个使用 ExtJS 3.2.1 进行 UI 设计的项目。我想同样实现国际化(i18n)。(不导出项目)?
我参考了以下链接:
http://www.sencha.com/learn/Tutorial:Localizing_Ext
http://extjstutorial.org/extjs/meertalig-i18n-met-extjs-en-codeigniter/
有人可以建议一些分步教程/电子书以供进一步参考吗?
谢谢!
我正在开发一个使用 ExtJS 3.2.1 进行 UI 设计的项目。我想同样实现国际化(i18n)。(不导出项目)?
我参考了以下链接:
http://www.sencha.com/learn/Tutorial:Localizing_Ext
http://extjstutorial.org/extjs/meertalig-i18n-met-extjs-en-codeigniter/
有人可以建议一些分步教程/电子书以供进一步参考吗?
谢谢!
除了本地化 Ext 的内置字符串外,根据您的链接,我们还有一个返回本地化字符串的全局函数,并在我们想要显示字符串的任何地方调用它。我们还将用户当前选择的语言存储在变量和 cookie 中。
根据我们的经验,我建议您可能希望将本地化字符串存储在数据库中的服务器上,并通过加载时的 Ajax 调用将它们关闭。这允许您在不部署代码更改的情况下管理这些字符串。
当用户更改语言时,我们设置语言 cookie 并重新加载整个浏览器窗口。
// global shortcut function for retrieving a localized string
function i18n(key, arrInsertValues) {
return Local.getLocalizedString(key, Local.languageCode, arrInsertValues);
}
// "Local" is a simple "static" object containing methods and localization strings
Local = {
// Default locale code - set based on cookie at the bottom of this script
languageCode: 'en',
languageCodeDefault: 'en',
charset: 'utf-8',
languages: [
['en', 'English', 'utf-8'],
['ja', '日本語', 'utf-8']
],
getLocalizedString: function(key, languageCode, arrInsertValues) {
if (!this.localizedStrings[key]) {
// return empty string if key is undefined
return '';
}
if (!this.localizedStrings[key][languageCode]) {
// return default language string or empty string if the string for the specified language is undefined
return this.formatString(this.localizedStrings[key][this.lcDefault] || '', arrInsertValues);
}
// give 'em what they asked for
return (this.formatString(this.localizedStrings[key][languageCode], arrInsertValues));
},
// returns a localized string formatted to replace values {0},{1} etc with values from the passed array
formatString: function(string, arrInsertValues) {
var formattedString = string;
if (arrInsertValues && arrInsertValues.constructor.toString().indexOf("Array") != -1) {
for (var i = 0; i < arrInsertValues.length; i++) {
formattedString = formattedString.replace('{' + i + '}', arrInsertValues[i]);
}
}
return formattedString;
},
localizedStrings: {
tEN: { en: 'Eng', ja: '英語' },
tJPN: { en: 'Jpn', ja: '日本語' },
tYes: { en: 'Yes', ja: 'はい' },
tNo: { en: 'No', ja: 'いいえ' },
tAnd: { en: 'and', ja: 'と' },
tOr: { en: 'or', ja: 'or' },
tDateFormat : { en: 'Y\/m\/d - g\:iA', ja: 'G\:i - Y年m月d日' },
tGoodMorning: { en: 'Good morning, {0}.', ja: '{0}様、おはようございます。' }
}
}
// this is the first script to run, so we can set default language here based on cookie
var cookie = new Ext.state.CookieProvider();
Local.languageCode = cookie.get('languageCode') ? cookie.get('languageCode') : Local.languageCodeDefault;