首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >最佳实践javascript和多语言

最佳实践javascript和多语言
EN

Stack Overflow用户
提问于 2008-10-23 07:21:17
回答 5查看 98.7K关注 0票数 76

在javascript中使用DOM操作多语言网站的最佳实践是什么?我使用javascript构建网站的一些动态部分。我的第一个想法是使用一个包含文本字符串和语言代码的数组作为索引。这是个好主意吗?

EN

回答 5

Stack Overflow用户

发布于 2015-05-12 20:53:32

在阅读了nickf和Leo的优秀答案之后,我创建了以下CommonJS样式的language.js来管理我所有的字符串(也可以选择使用Mustache来格式化它们):

代码语言:javascript
复制
var Mustache = require('mustache');

var LANGUAGE = {
    general: {
        welcome: "Welcome {{name}}!"
    }
};

function _get_string(key) {
    var parts = key.split('.');
    var result = LANGUAGE, i;
    for (i = 0; i < parts.length; ++i) {
        result = result[parts[i]];
    }
    return result;
}

module.exports = function(key, params) {
    var str = _get_string(key);
    if (!params || _.isEmpty(params)) {
        return str;
    }
    return Mustache.render(str, params);
};

下面是我获取字符串的方法:

代码语言:javascript
复制
var L = require('language');
var the_string = L('general.welcome', {name='Joe'});
票数 5
EN

Stack Overflow用户

发布于 2019-09-11 12:57:13

这样你就可以通过多个单词使用多语言的一个js代码:

代码语言:javascript
复制
var strings = new Object();

if(navigator.browserLanguage){
  lang = navigator.browserLanguage;
}else{
  lang = navigator.language;
}

lang = lang.substr(0,2).toLowerCase();



if(lang=='fa'){/////////////////////////////Persian////////////////////////////////////////////////////


        strings["Contents"]                              = "فهرست";
        strings["Index"]                                 = "شاخص";
        strings["Search"]                                = "جستجو";
        strings["Bookmark"]                              = "ذخیره";

        strings["Loading the data for search..."]        = "در حال جسنجوی متن...";
        strings["Type in the word(s) to search for:"]    = "لغت مد نظر خود را اینجا تایپ کنید:";
        strings["Search title only"]                     = "جستجو بر اساس عنوان";
        strings["Search previous results"]               = "جستجو در نتایج قبلی";
        strings["Display"]                               = "نمایش";
        strings["No topics found!"]                      = "موردی یافت نشد!";

        strings["Type in the keyword to find:"]          = "کلیدواژه برای یافتن تایپ کنید";

        strings["Show all"]                              = "نمایش همه";
        strings["Hide all"]                              = "پنهان کردن";
        strings["Previous"]                              = "قبلی";
        strings["Next"]                                  = "بعدی";

        strings["Loading table of contents..."]          = "در حال بارگزاری جدول فهرست...";

        strings["Topics:"]                               = "عنوان ها";
        strings["Current topic:"]                        = "عنوان جاری:";
        strings["Remove"]                                = "پاک کردن";
        strings["Add"]                                   = "افزودن";

}else{//////////////////////////////////////English///////////////////////////////////////////////////

strings["Contents"]                              = "Contents";
strings["Index"]                                 = "Index";
strings["Search"]                                = "Search";
strings["Bookmark"]                              = "Bookmark";

strings["Loading the data for search..."]        = "Loading the data for search...";
strings["Type in the word(s) to search for:"]    = "Type in the word(s) to search for:";
strings["Search title only"]                     = "Search title only";
strings["Search previous results"]               = "Search previous results";
strings["Display"]                               = "Display";
strings["No topics found!"]                      = "No topics found!";

strings["Type in the keyword to find:"]          = "Type in the keyword to find:";

strings["Show all"]                              = "Show all";
strings["Hide all"]                              = "Hide all";
strings["Previous"]                              = "Previous";
strings["Next"]                                  = "Next";

strings["Loading table of contents..."]          = "Loading table of contents...";

strings["Topics:"]                               = "Topics:";
strings["Current topic:"]                        = "Current topic:";
strings["Remove"]                                = "Remove";
strings["Add"]                                   = "Add";

}

您可以在此代码中添加另一个lang,并在您的html代码上设置对象。我使用波斯语的波斯语和英语,你可以使用任何类型的语言只需创建这部分代码的副本,如果-否则语句。

票数 2
EN

Stack Overflow用户

发布于 2020-05-15 09:15:28

您可以使用google翻译器:

代码语言:javascript
复制
<div id="google_translate_element" style = "float: left; margin-left: 10px;"></div>

<script type="text/javascript">
function googleTranslateElementInit() {
  new google.translate.TranslateElement({pageLanguage: 'en', layout: google.translate.TranslateElement.InlineLayout.HORIZONTAL}, 'google_translate_element');
}
</script>

<script type="text/javascript" src="//translate.google.com/translate_a/element.js?cb=googleTranslateElementInit"></script>

</div><input type = "text" style = "display: inline; margin-left: 8%;" class = "sear" placeholder = "Search people..."><button class = "bar">&#128270;</button>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/228835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档