因此,我使用 Titanium 中的语言文件来提供 TSS 属性,我希望在整个应用程序的不同位置重复使用这些属性。这些语言文件变量应该在主题文件夹(或与此相关的任何其他 TSS 文件)中使用。
目前它适用于单一语言,但我的应用程序有多种语言。但我不想复制所有语言的语言文件。我可以在多种语言中重复使用同一个文件,而不必将文件复制到某个地方吗?
最佳答案
使用 ISO 639-1 处的 i18n 文件 代表。
该文件允许您使用任何语言并使用 Ti.Locale.getString() 的每个“标签” .
此外,您可以在 app.js 中使用文件的 require 并将此变量设置为全局变量。
语言.js(例如):
var language = (function() {
var self = {
currentLanguage: 'en' // by default
};
var labels = {
msgHello: {
en: 'Hello World',
es: 'Hola Mundo'
}
};
self.changeLanguage = function changeLanguage(newLanguage){
self.currentLanguage = newLanguage;
};
self.getLabel = function getLabel(key, language){
if(typeof language !== 'undefined') {
return labels[key][language];
}
else return labels[key][self.currentLanguage];
};
return self;
}());
module.exports = language;
app.js(例如):
var appLanguage = require('language.js');
(function() {
Ti.API.info("Language: "+appLanguage.currentLanguage);
Ti.API.info("MSG Hello World (English): "+appLanguage.getLabel(msgHello));
Ti.API.info("MSG Hello World (Spanish): "+appLanguage.getLabel(msgHello, es));
}());
您可以直接在任何文件上使用 appLanguage 变量。
关于internationalization - 如何在多种语言中重复使用语言文件,而无需使用 Titanium 将文件加倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25488383/