什么是多语言JavaScript应用程序的不同方法

时间:2011-04-14 14:13:56

标签: javascript multilingual

我想知道有什么不同,哪个是设置多语言javascript应用程序的最佳方法。我希望在一个文件中使用所有字符串,以便以后轻松更改字符串或添加更多语言。

日Thnx!

4 个答案:

答案 0 :(得分:23)

你可以简单地制作一个大对象树:

var languages = {
   english:{
      Save:"Save"
   },
   german:{
      Save:"Speichern"
   }
};

在你的应用中:

var l = languages.german;
alert(l.Save); //Alerts "Speicher"

这个系统的好处是你可以让子对象将一些值组合在一起。

答案 1 :(得分:4)

无论你做什么,最重要的是将你的代码与文本分开

如果代码和文本混合在一起,则无法进行维护,您很快就会放弃它。

翻译文本必须易于扫描,以便翻译人员可以翻译文本。然后,您应该可以方便地插入翻译。

我们使用包含字符串映射的JS文件。我们有一个简单的Python脚本,可以从中提取可翻译的字符串。相同的脚本还构建输出JS文件,其中包含与已翻译字符串相同的标签。

结果是:

  • 当应用程序发展时,它就是 容易添加新字符串。
  • 脚本会自动查找新字符串 我们可以翻译它们。
  • 完成的翻译返回JS文件 没有人工。

答案 2 :(得分:1)

我喜欢使用“语言字典数组”,您可以使用JSON或简单数组。

这很容易实现:

var lang = 0 //0 = english, 1=french

var phrases=[]
phrases['cancel'] = "cancel,annuler".split(",")

alert(phrases['cancel'][lang])

答案 3 :(得分:1)

这是我根据此问题中接受的答案处理语言翻译的功能:

/**
 Core script to handle language translations
 **/
var Language = function() {

    var activeLanguage = 'en';

    var languagePack = {

        'en': {
            'hello-world': 'Hello World',
            'show-variants': 'Show Variants',
            'hide-variants': 'Hide Variants'
        },
        'fr': {
            'hello-world': 'Bonjour World',
            'show-variants': 'représentent des variantes',
            'hide-variants': 'masquer variantes'
        }

    }
    var translate = function(key, language)
    {
        if (typeof languagePack[language] == 'undefined')
        {
            return;
        }else {
            return languagePack[language][key];
        }
    };

    return {
        init: function(language)
        {
            activeLanguage = language;
        },
        getString: function(key, defaultText)
        {
            var text = translate(key, activeLanguage);
            if (typeof(text) === 'undefined' || text.length == 0 ||  text == null)
            {
                text = defaultText;
            }
            return text;
        }


    }


}();

然后在公共页面代码中初始化它,其中${language.language}是jsp代码,用于从服务器端配置设置语言。

<script type="text/javascript">
jQuery(document).ready(function() {
        Language.init('${language.language}');

    });
</script>

然后,无论何时需要使用消息

Language.getString('hello-world', 'Hi World');