そのため、Titanium の言語ファイルを使用して、さまざまな場所でアプリ全体で再利用したい TSS プロパティを提供しています。これらの言語ファイル変数は、テーマ フォルダー (またはその他の TSS ファイル) で使用する必要があります。
現在、単一の言語で動作しますが、私のアプリには複数の言語があります。しかし、すべての言語の言語ファイルを複製したくありません。ファイルをどこかにコピーしなくても、複数の言語で同じファイルを再利用できますか?
そのため、Titanium の言語ファイルを使用して、さまざまな場所でアプリ全体で再利用したい TSS プロパティを提供しています。これらの言語ファイル変数は、テーマ フォルダー (またはその他の TSS ファイル) で使用する必要があります。
現在、単一の言語で動作しますが、私のアプリには複数の言語があります。しかし、すべての言語の言語ファイルを複製したくありません。ファイルをどこかにコピーしなくても、複数の言語で同じファイルを再利用できますか?
ISO 639-1 表現で i18n ファイルを使用します。
そのファイルでは、任意の言語を使用でき、Ti.Locale.getString()で各「ラベル」を使用できます。
また、app.js でファイルの require を使用して、この変数を global のように配置することもできます。
language.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 変数は、任意のファイルで直接使用できます。