我使用http://jamuhl.github.com/i18next本地化静态网站.
我的初始化脚本是:
jQuery(function($) {
var setLng = $.url().param('setLng');
if (setLng)
{
language_complete = setLng.split("-");
}
else
{
language_complete = navigator.language.split("-");
}
language = (language_complete[0]);
console.log("I speak (root): %s", language);
i18n.init({ lng: language, debug: true }, function() {
// save to use translation function as resources are fetched
$(".tzm-i18n").i18n();
$(".page-i18n").i18n();
$(".menu-i18n").i18n();
$(".user-i18n").i18n();
$(".search-i18n").i18n();
$(".footer-i18n").i18n();
});
// language selector
var lngSld = false;
$('.lng_trigger').click(function() {
Run Code Online (Sandbox Code Playgroud)
这是HTML:
<div id="page" class="page-i18n">
<!--${languages} Bread crumbs -->
<p data-i18n="welcome.p1"></p>
<p data-i18n="welcome.p2"></p>
</div>
<li id="set-lang"><!-- …Run Code Online (Sandbox Code Playgroud) 我有一个requireJS设置,包含预编译的Handlebars模板和我在数据库中的翻译i18next.我需要按以下顺序做一些事情:
我的requireJS配置文件如下所示:
require.config({
deps: ["main"],
paths: {
'handlebars.runtime': "../assets/js/libs/handlebars.runtime.amd.min",
i18n: "../assets/js/libs/i18next-1.7.1",
// Shim Plugin
use: "../assets/js/plugins/use"
},
use: {
i18n: {
attach: "i18n"
}
}
});
Run Code Online (Sandbox Code Playgroud)
我的main.js文件看起来像这样,需要namespace.js:
require([
'namespace',
'modules/Transport'
], function (
namespace,
$,
Transport
) {
var Router = Backbone.Router.extend({
routes: {
'*any': 'any'
},
Run Code Online (Sandbox Code Playgroud)
我namespace.js将尝试注册Handlebars助手并使用翻译初始化i18next:
define([
"handlebars.runtime",
"use!i18n"
], function(
Handlebars,
i18n
) {
var defaultLanguage = 'en';
var translations;
$.when(
$.getJSON('/api/translations', function …Run Code Online (Sandbox Code Playgroud) 我正在尝试评估哪一个使用,所以会感谢做出这个决定的其他人的任何反馈.似乎有两个大的翻译项目:
http://messageformat.meteor.com/
PROS
笔记:
PROS
利弊? - 只有JSON格式,没有yaml,编辑非常繁琐 - 没有用于管理字符串的webUI
还有一些其他项目,如https://github.com/Nemo64/meteor-translator, 但上面两个似乎是最彻底的.我错过了其他人吗?
选择合适的工具时人们会使用哪些其他标准?messageFormat与i18next的基础技术似乎是一个因素.
1)页面中有多种语言
我正在尝试做一个双语应用程序但是:
点击:"只通过网络发送当前客户端语言所需的翻译"
这是否意味着语言只能是A或B,而不是混合,基于会话自动切换?
即如何在页面中提供助手以进行多次翻译
EN: {{tr "string", 'en'}}
FR: {{tr "string", 'fr'}}
Run Code Online (Sandbox Code Playgroud)
2)提取动态数据
至少messageFormat项目将捕获/提取静态页面中的字符串,但如果我已经在复杂的mongo集合中有很多内容,有没有办法捕获它?
感谢包装创作者或该领域其他人的任何见解.
javascript internationalization messageformat meteor i18next
我有一个使用aurelia-i18n的工作应用程序.我想将translation.json文件拆分成多个文件,如nav.json,message.json等,但我不知道该怎么做.
这就是它现在的样子.
locale
|-en
|- translation.jsonRun Code Online (Sandbox Code Playgroud)
但我想以这种方式改变它.
locale
|-en
|- nav.json
|- message.json
Run Code Online (Sandbox Code Playgroud)
有可能吗?如果是这样,我如何配置它并访问每个文件中的值?
我用create-react-app创建了一个React应用程序
我想实现翻译,我发现了react-i18next
安装完所需的软件包后,我设置了我的i18n.js配置文件:
import i18n from 'i18next';
import LanguageDetector from 'i18next-browser-languagedetector';
import XHR from 'i18next-xhr-backend';
i18n
.use(XHR)
.use(LanguageDetector)
.init({
debug: true,
lng: 'en',
nsSeparator: false,
keySeparator: false,
fallbackLng: false,
backend: {
loadPath: 'locales/{{lng}}/{{ns}}.json'
}
});
export default i18n;
Run Code Online (Sandbox Code Playgroud)
我收到这个错误: i18next::backendConnector: loading namespace translation for language en failed failed parsing locales/en/translation.json to json
这是因为webpack找不到json文件并返回index.html文件内容:
我在路径中有英文 json 翻译文件:translation/en.json
我像这样初始化 i18next:
i18next.init({
lng: navigator.language,
fallbackLng : "en",
backend: {
loadPath: '/translation/{{lng}}.json',
}
});
Run Code Online (Sandbox Code Playgroud)
跑完后
i18next.t(KEY);
Run Code Online (Sandbox Code Playgroud)
将在翻译文件中打印“KEY”而不是它的值
当翻译在 i18next 对象中的“资源”参数内时,它运行良好。像下面这样:
i18next.init({
lng: navigator.language,
fallbackLng : "en",
resources: {
en: {
translation: {
"KEY": "keyValue"
}
}
}
});
Run Code Online (Sandbox Code Playgroud)
我使用 i18next 框架
我有使用 react-i18next 的 React 应用程序,翻译存储在两个位置。一组在应用程序本地存储在一个文件夹中,其余的翻译来自远程 API。
我正在努力将两套都加载到应用程序中。使用 i18next-chained-backend 插件,它似乎只在第一个后端不加载翻译时提供回退,我似乎无法将其配置为加载两组翻译。
在基于 React 的应用程序中包含来自多个来源的翻译的最佳方法是什么?
我想使用 react-18next 支持本地化。此组件显示Picker,设置 LocalStorage 键(所选语言)并更改应用程序语言。我注意到该onValueChange方法被调用了两次。第一个调用(在 Picker 项目上使用正确的选择点击操作)具有正确的参数(我选择的语言),第二个调用具有第一个 Picker 项目的值,只要值为 (!)。
示例:如果我选择EnglishPicker 项目,我会看到 Picker 切换到英语(第一次_changeLanguage()调用),然后再次切换到“设备”(第二次_changeLanguage()调用)。我确定这是一个异步操作问题,不知道在哪里..
@translate(['settings', 'common'], { wait: true })
export default class Settings extends Component {
state = {};
constructor(props) {
super(props);
}
componentWillMount() {
this.getLang();
}
async _changeLanguage(ln) {
const { t, i18n, navigation } = this.props;
console.warn("_changeLanguage: ",ln)
await this.promisedSetState({lang:ln})
if(ln=="device") {
console.warn("removing lang setting")
await AsyncStorage.removeItem('@App:lang');
} else {
console.warn("lang setting: ", ln)
await AsyncStorage.setItem('@App:lang', …Run Code Online (Sandbox Code Playgroud) 我需要在 Angular 的一个大型项目中实现国际化。根据我的发现,有两个主要选择:Angular 的官方i18n或ngx-translate。
为了了解两者的优缺点,我进行了很多讨论:
https://github.com/angular/angular/issues/16477
https://github.com/ngx-translate/core/issues/495
https://github.com/ngx-translate/core/issues/783
现在,第三个选项是“ angular-i18next ”。这方面的文档并不多。我知道它是 i18next 的包装器。但它是否克服了任何缺点,例如:
翻译非模板文本。
无需重新加载页面的动态翻译。
使用 AOT 编译进行单一构建。
或者,我最好的选择是在i18n和ngx-translate之间进行选择?另外,有人在使用“ angular-i18next ”吗?
internationalization i18next angular-i18n ngx-translate angular
到目前为止,我的项目正在使用i18next和 react-i18next 并取得成功。不涉及本地化或服务器端。
当前设置:
- 默认和后备语言:en
- 附加语言:fr
我想自动化一些与错误检查相关的事情:
1. 检查所有键是否在每个定义的语言文件中被翻译
2. 在 dev env 或 lint 中为 ci/cd 发出警告。
我试过做 1. 使用以下选项:
saveMissing: true,
saveMissingTo:"all",
missingKeyHandler: (ng, ns, key, fallbackValue) => {
console.log(ng, ns, key, fallbackValue)
},
// other options
resources: {
en: {
translations: enTranslation,
},
fr: {
translations: frTranslation,
},
},
fallbackLng: 'en',
ns: ['translations'],
defaultNS: 'translations',
interpolation: {
formatSeparator: ',',
},
react: {
wait: true,
}
Run Code Online (Sandbox Code Playgroud)
我想如果我从我的法语 .json 中删除了一个密钥(以测试它是否有效),它会被记录下来,但它没有,只有当我删除这两个密钥时。
尝试过其他解决方案:
1. "eslint-plugin-i18n-json"但它没有检查我需要什么,没有找到正确的选项/配置 …
i18next ×10
javascript ×3
reactjs ×3
jquery ×2
amd ×1
angular ×1
angular-i18n ×1
aurelia ×1
expo ×1
meteor ×1
react-native ×1
requirejs ×1
translation ×1
webpack ×1