i18n,javascript-有没有办法使用第二个文件来处理这些差异?

i18n,javascript-有没有办法使用第二个文件来处理这些差异?,javascript,internationalization,i18next,Javascript,Internationalization,I18next,正如我现在所做的,我想使用一个文件作为我的主要语言,第二个文件作为英语。 这很有效 现在我想再添加两个文件。其中一种语言与第一种语言相比仅发生了变化,而另一种语言则发生了变化 换句话说,第一个文件是一个包含所有字典的大文件,但是对于一个特定的客户,我需要一些不同的单词翻译。而不是写另一个文件99%等于原来我只想写不同的字 我该怎么做 这是我的代码: var i18nextInstance=i18next .使用(i18nextXHRBackend) .使用(i18nextBrowserLangu

正如我现在所做的,我想使用一个文件作为我的主要语言,第二个文件作为英语。 这很有效

现在我想再添加两个文件。其中一种语言与第一种语言相比仅发生了变化,而另一种语言则发生了变化

换句话说,第一个文件是一个包含所有字典的大文件,但是对于一个特定的客户,我需要一些不同的单词翻译。而不是写另一个文件99%等于原来我只想写不同的字

我该怎么做

这是我的代码:

var i18nextInstance=i18next
.使用(i18nextXHRBackend)
.使用(i18nextBrowserLanguageDetector)
.init(
{
检测:{
//Escludo localStorage。实用语言。
//顺序:['querystring','cookie','localStorage','navigator','htmlTag'],
订单:['querystring','cookie','navigator','htmlTag'],
},
撤退:“恩”,
液化天然气:阿提瓦语,
调试:错误,
ns:[“普通”],
defaultNS:“常见”,
后端:{
加载路径:'./i18n/{{lng}}/{{ns}}.json',
跨域:是的,
解析:函数(数据){
//第三个问题是如何使用语言。
//因法蒂语,每种语言都有一份文件,非安德烈布语种。一个人的声音
//来吧,我要去沃格里奥诺。我要去拉西奥和埃斯库多。
试一试{
var json=json.parse(数据);//-->{en:{…}
var m=Object.keys(json);//-->['en']
返回json[m[0]];//-->{common:{…}
}捕获(e){
alert(e);//上述字符串中有错误(在本例中,是)!
}
},
},
},
函数(err,t){
//已初始化并准备就绪!
//在ingresso non avevo passato nessuna lingua,la imposto adesso con quella rilevata中
if(语言=未定义){
lingua_attiva=i18nextInstance.language.substr(0,2);
}
//这是一种非英语的语言,适合英格尔语
如果(希腊语!=“it”&&langua\u attiva!=“en”){
阿提瓦语='en';
}
网站(;
AggiornaTraduzioni();
}
);
//根据实用程序jquery nelle traduzioni配置操作
jqueryI18next.init(i18nextInstance,${
t名称:'t',/-->附加$.t=i18next.t
i18nName:'i18n',//-->追加$.i18n=i18next
handleName:'localize',//-->附加$(选择器).localize(选项);
selectoratr:'data-i18n',//用于转换元素的选择器
targetAttr:'i18n target',//data-()属性以获取要转换的目标元素(如果不同,则为自身)
optionsAttr:'i18n options',//data-()包含选项的属性将在useOptionsAttr=true时加载/设置
UseOptions属性:true,//请参阅Options属性
parseDefaultValueFromContent:true,//从content ele.val或ele.text解析默认值
});

您可以仅使用diff创建一个新文件(这意味着密钥与
公共
文件中的密钥相同),让我们称之为
diff
并使用i18next功能

在特定位置,您可以使用
diff
名称空间(它将加载
diff.json
文件),并回退到
common
名称空间以查找缺少的键

由于您的配置已被定义为
common
defaultNS
,因此您只需为特定用户将名称空间更改为
diff

<div class="outer" data-i18n="diffs:key"></div>
// -----------------------------^

$(".outer").localize();

太好了,很有效,谢谢!我只有最后一个问题。假设我将有一个包含所有内容的文件“common.json”,然后创建customer1.json和customer2.json。当customer1登录时,我只需要将customer1的文件添加到i18n中,否则将添加其他文件。如何动态添加“ns”并动态设置defaultNS?-添加新名称空间
$(".outer").localize({ns: 'diffs'});
// this will call translation on the `.outer` div with a specific namespace without the need to attach it as I've showed before