我正在寻找一个国际化框架,并遇到了jqueryi-18next.js.我实际上完全对使用此插件感到困惑,因为示例文件中的代码与文档不同.
我修改了sample.html,我添加了两个语言资源(de,fr),当我更改脚本中的"lng"值时,它工作正常.
i18next.init({
lng: 'de',
resources: {
en: {
translation: {
nav: {
page1: 'Page One',
page2: 'Page Two',
page3: 'Page Three'
}
}
},
de: {
translation: {
nav: {
page1: 'Seite Eins',
page2: 'Seite Zwei',
page3: 'Seite Drei'
}
}
},
fr: {
translation: {
nav: {
page1: 'Page Un',
page2: 'Page Deux',
page3: 'Page Trois'
}
}
}
}
}, function(err, t) {
i18nextJquery.init(i18next, $);
$('.nav').localize();
});Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-i18next/0.0.14/i18next-jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/i18next/2.0.22/i18next.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.js"></script>
<ul class="nav">
<li><a href="#" data-i18n="nav.page1"></a></li>
<li><a href="#" data-i18n="nav.page2"></a></li>
<li><a href="#" data-i18n="nav.page3"></a></li>
</ul>Run Code Online (Sandbox Code Playgroud)
根据文档,插件初始化使用:
jqueryI18next.init(i18nextInstance, $, {...
Run Code Online (Sandbox Code Playgroud)
此外,如果我从存储库加载jquery-i18next.min.js 它根本不起作用,我只能看到列表项点.
我基本上想要实现的是:
我不知道该怎么做,所以我真的很感激任何帮助!
非常感谢你提前!
joe*_*lnb 11
我想我可以回答你问题的两个部分.
i18next.chngeLanguage以设置新语言,然后调用$(elem).localize()最初本地化的每个元素.在此示例中,如果.lang-select单击任何链接,则会更新语言.i18next.init({
lng: 'de',
resources: {
en: {
translation: {
nav: {
page1: 'Page One',
page2: 'Page Two',
page3: 'Page Three'
}
}
},
de: {
translation: {
nav: {
page1: 'Seite Eins',
page2: 'Seite Zwei',
page3: 'Seite Drei'
}
}
},
fr: {
translation: {
nav: {
page1: 'Page Un',
page2: 'Page Deux',
page3: 'Page Trois'
}
}
}
}
}, function(err, t) {
i18nextJquery.init(i18next, $);
$('.nav').localize();
$('.lang-select').click(function() {
i18next.changeLanguage(this.innerHTML);
$('.nav').localize();
});
});Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-i18next/0.0.14/i18next-jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/i18next/2.0.22/i18next.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.js"></script>
<a href="#" class="lang-select">en</a>
<a href="#" class="lang-select">de</a>
<a href="#" class="lang-select">fr</a>
<ul class="nav">
<li><a href="#" data-i18n="nav.page1"></a></li>
<li><a href="#" data-i18n="nav.page2"></a></li>
<li><a href="#" data-i18n="nav.page3"></a></li>
</ul>Run Code Online (Sandbox Code Playgroud)
loadPath来控制文件的存储方式.要将每种语言的所有命名空间存储在单个文件中,请使用loadPath: '/locales/{{lng}}.json'或将所有语言存储在单个文件中loadPath: '/locales.json'.i18next
.use(i18nextXHRBackend)
.init({
lng: 'de',
backend: {
loadPath: '/locales/{{lng}}/{{ns}}.json'
}
}, function(err, t) {
jqueryI18next.init(i18next, $);
$('.nav').localize();
$('.lang-select').click(function() {
i18next.changeLanguage(this.innerHTML, function() {
$('.nav').localize();
});
});
});Run Code Online (Sandbox Code Playgroud)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-i18next/0.0.14/i18next-jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/i18next/2.0.22/i18next.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.0/jquery.js"></script>
<a href="#" class="lang-select">en</a>
<a href="#" class="lang-select">de</a>
<a href="#" class="lang-select">fr</a>
<ul class="nav">
<li><a href="#" data-i18n="nav.page1"></a></li>
<li><a href="#" data-i18n="nav.page2"></a></li>
<li><a href="#" data-i18n="nav.page3"></a></li>
</ul>Run Code Online (Sandbox Code Playgroud)
目录结构需要:
locales
??? de
? ??? translation.json
??? dev
? ??? translation.json
??? en
? ??? translation.json
??? fr
??? translation.json
Run Code Online (Sandbox Code Playgroud)
示例translation.json:
{
"nav": {
"page1": "Seite Eins",
"page2": "Seite Zwei",
"page3": "Seite Drei"
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4986 次 |
| 最近记录: |