我需要重构自己的应用程序以使其支持国际化。

我找到了https://github.com/jquery-i18n-properties/jquery-i18n-properties ,但它似乎仅支持使用jQuery以编程方式翻译文本。

但是在我的JSP / html文件中有大量的硬编码文本,因此我希望找到一种方式来使ALSO支持国际化静态html文本,例如:

<title>@{title_here}<title>
<div>@{label}</div> 

在我读取正确的属性文件后,页面将自动将这些值替换为正确的值,而无需使用$ {....)。text(read_from_properties)之类的jquery设置每个文本。

有没有办法做到这一点?

#1楼 票数:0

由于html是静态的,因此您不能仅仅将其抛出数据文件并期望它输出正确的语言。

如果您的JSP文件中包含硬编码的文本,则可以在服务器端实现i18n。

如果您有一个单页应用程序,则可能会使用一些模板引擎(作为MV *框架的一部分,或作为独立引擎)来呈现html。 我过去曾经使用过多种语言 ,效果很好。

无论哪种方式,您都需要更改所有当前的静态文本。

#2楼 票数:0

我不知道这是否正是您要寻找的东西,但是当我看到您想要的东西时,想到的第一件事就是车把表达式

<script id="myTemplate" type="text/x-handlebars-template">
    <div>{{welcome}}</div>
    <div>{{name}}</div>
    <div>{{time}}</div>
</script>
<div id="generated"></div>

您仍然需要一些代码才能将语言从一种更改为另一种,但是没有什么真正困难的。 您可以看到一个在这里运行的示例: http : //jsfiddle.net/gj9hbhwj/1/

function changeLanguage(lang) {
    var templateSource = document.getElementById('myTemplate').innerHTML;
    var template = Handlebars.compile(templateSource);
    var generatedHolder = document.getElementById('generated');
    generatedHolder.innerHTML = template(int[lang]);
}

在个人和小型项目/应用程序上,我使用简单的jQuery / JSON组合,该组合仅需几行代码,就可以像魅力一样工作:

/** ON A SEPARATE FILE **/
int = {
    "en": {
        "#welcome": "Welcome to my site",
        "#name": "My name is...",
        "#time": "It's 8 o'clock"
    },
    "es": {
        "#welcome": "Bienvenido a mi web",
        "#name": "Mi nombre es...",
        "#time": "Son las 8 en punto"
    }
}

/** ON MAIN SCRIPT **/
function changeLanguage(target_lang) {
    if (int[target_lang]) {
        $.each(int[target_lang], function (index, value) {
            $(index).text(value);
        });
    }
}

键是我要修改的元素的CSS选择器,值是不同语言的文本。 使用$.each()我可以立即修改所有字符串,而只需修改3行代码(与要替换的短语数量无关)。 您可以看到它在这里运行: http : //jsfiddle.net/4y5j0gr7/

  ask by Jaskey translate from so

未解决问题?本站智能推荐:

8回复

HTML文件的国际化

我正在开发一个项目并使用HTML文件(不是JSP或客户端的任何其他技术)。 我使用JQuery编写脚本。 我有表,列和许多字段,上面有“文本”。 如何使用JQuery将我的网页国际化? 我的意思是我将加载文件_tr.extension,我的网页将是土耳其语,_swe.extension将
1回复

国际化的jsp页面?

我有下面的jsp代码。 在这里我想外部化所有标签名称,标签名称将基于区域设置显示。 基本上我需要jsp标签使用i18n。 我怎样才能做到这一点? 谢谢!
3回复

jqGrid国际化

我为我的HTML文件使用jqGrid网格表插件。 如何将我的表格列,标题等国际化? 我的意思是我将加载属性文件或更改变量,我的表模板将使用该语言?
2回复

jQuery国际化

我正在尝试通过替换文本字符串来进行简单的国际化,并为此开发了下一个代码: 当我单击一个标志时,在控制台中我得到了: [17:53:04.223] TypeError:arrayCadenas.each不是一个函数@ file:///var/www/TRABAJOS/SARTUWEB/%2
10回复

我的GoogleChrome扩展程序的HTML页面国际化

我找到了一种非常简单的方法来实现Google Chrome 扩展的翻译(或本地化),但这似乎只适用于.json 、 css和js文件。 但是如何本地化我的html内容,比如在弹出窗口或选项窗口中?
1回复

在Chrome的非重点输入元素中捕获日语输入

当用户在<input>元素未集中的状态下开始键入内容时,我希望用户输入的内容进入文本输入元素。 我可以通过在keydown处理程序中调用$input.select()来实现$input.select()如果输入尚未聚焦)。 这适用于英语,但日语输入行为在Chrome 44和Fi
2回复

根据语言替换html元素的内容

我是一个软件开发人员,因此需要在同一个网页上创建各种语言版本。 当我有这样的HTML元素时: 当语言设置为“ fr”而不是“ en”时,最简单的自动更改文本(Javascript或JQ?)的方法是什么? 文本将变为“ Mon Bouton”,如果以后要添加德语翻译,则需要保持简单。
5回复

如何禁用谷歌翻译原始文本工具提示

我在我的网站上使用谷歌翻译作为语言转换器,但它显示了令人讨厌的工具提示,称为“原始文本”。 如何禁用此功能以及任何其他更好的创意/工具/ apis来执行此操作? 谢谢。 使用的代码是......