gpt4 book ai didi

javascript - 如何使用 i18next?翻译问题

转载 作者:技术小花猫 更新时间:2023-10-29 11:59:02 28 4
gpt4 key购买 nike

我想在我的 jQuery Mobile 和 jQuery 网站上使用国际化选项。我试图用 http://i18next.com 上的文档生成一个示例但似乎我失败了。有人有使用 i18next 的经验吗?

这里是我的例子:

index.html:

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
<script src="jquery-mobile/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="jquery-mobile/jquery.mobile-1.0.min.js" type="text/javascript"></script>
<script src="js/i18next-1.5.6.min.js" type="text/javascript"></script>
<script src="js/translation.js" type="text/javascript"></script>
</head>
<body>
<div data-role="page" id="page">
<div data-role="content">
<div id="headline1" data-i18n="headline"></div>
<table width="100%" border="0" id="menu1" class="menu">
<tr id="surname">
<td width="50%" data-i18n="menu.surname"></td>
<td width="50%">&nbsp;</td>
</tr>
<tr id="firstName">
<td width="50%" data-i18n="menu.firstName"></td>
<td width="50%">&nbsp;</td>
</tr>
</table>
</div>
</div>
</body>
</html>

翻译文件:/locales/de/translation.json

{
"menu": {
"surname": "Name:",
"firstName": "Vorname:"
},

"headline": "Daten:",
"headline_1": "Daten Allgemein:",
"headline_2": "Daten Speziell:"
}

/locales/en/translation.json

/locales/dev/translation.json

{
"menu": {
"surname": "Name:",
"firstName": "First Name:"
},

"headline": "Data:",
"headline_1": "Daten Common:",
"headline_2": "Daten Specific:"
}

/js/translation.js

$(document).ready(function(){
language_complete = navigator.language.split("-");
language = (language_complete[0]);
console.log("Sprache (root): %s", language);

i18n.init({ lng: language });
i18n.init({ debug: true });
$(".menu").i18n();
$("headline").i18n();
});

我得到的菜单的翻译是“menu.name”而不是预期的“Name:”。对于标题,我没有得到任何翻译,但我希望是“Data:”或“Daten:”。

如果我尝试以下直接调用,我得不到任何翻译: i18n.t("menu.surname", { defaultValue: "姓名:"});

有人知道问题出在哪里吗?或者有人有适合我尝试做的工作示例吗?

最佳答案

主要问题是你不能调用 i18n.t("menu.surname", { defaultValue: "Name:"});初始化后直接加载,因为从服务器加载资源是异步的,所以基本上你尝试在 i18next 获取资源之前进行翻译。

改为使用回调加载它:

$(document).ready(function(){
language_complete = navigator.language.split("-");
language = (language_complete[0]);
console.log("Sprache (root): %s", language);

i18n.init({ lng: language, debug: true }, function() {
// save to use translation function as resources are fetched
$(".menu").i18n();
$("headline").i18n();
});
});

或者使用标志来同步加载资源。

顺便说一句:您的 html 代码有一个结尾 </div>太多了。

调用$("headline").i18n();应该是 $("#headline").i18n(); .

关于javascript - 如何使用 i18next?翻译问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13005791/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com