internationalization - 如何在多种语言中重复使用语言文件,而无需使用 Titanium 将文件加倍

标签 internationalization titanium appcelerator tss

因此,我使用 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/

相关文章:

android - android 钛 Appcelerator 的 sqlite 加密

sql-server - SQL Server 排序规则选择

mysql - Unicode CSV 文件中未显示孟加拉语文本

javascript - JS toLocaleString 始终显示货币符号,无论语言环境如何

ios - Titanium Appcelerator PUT方法不起作用

ubuntu - 安装 Appcelerator Studio 时连接到下载服务器时出错

titanium - 在 Titanium 移动应用程序中添加计时器

ios - 钛制发射器窗小

winforms - WinForms应用程序的本地化和全局化

javascript - Titanium - 当用户点击 Android 通知时执行操作