如何从en.json中删除翻译密钥?

时间:2017-11-13 18:10:55

标签: angularjs webpack i18next

我不想在json文件中使用翻译键。 我希望文件只有2个级别,我的意思是我不想在每个语言环境文件中包含翻译键:

{
  "translation": {
    "sidebar": {
      "dashboard": "Dashboard",
      "clients": "Clients",
      "coaches": "Coaches",
      "candidates": "Candidates",
      "trackList": "Track List",
      "reports": "Reports"
    },
    "clients": {
      "clients": "Clients",
      "companyName": "Company Name",
      "previous": "Previous",
      "next": "Next"
    }
  }
}

这是我初始化i18next的i18n.js文件。

import angular from 'angular';
import ngSanitize from 'angular-sanitize';
import i18next from 'i18next';
import ngI18next from 'ng-i18next';
import enLocale from './locales/en.json'

const module = angular.module('app.i18n', [ngSanitize, ngI18next]);

module
  .config(function() {

    window.i18next = i18next;

    i18next.init({
      debug: true,
      lng: 'en',
      fallbackLng: false,
      resources: {
        en: enLocale
      },
      useCookie: false,
      useLocalStorage: false
    }, function(err, t) {
      console.log('i18next was initialized');
      console.log( t('global.clients') );
      console.log( t('global.addNewClient') );
    });

});
export default module.name;

1 个答案:

答案 0 :(得分:0)

从Json中删除翻译并尝试。它应该默认工作。 如果没有设置。

fallbackNS= false; 

如果STill不起作用。创建一个新的Json变量以将其传递给资源。

import enLocale from './locales/en.json'
const enLocaleData = {"en":{"transalation":enLocale["en"] }};

 i18next.init({
      debug: true,
      lng: 'en',
      resources: {
        en: enLocaleData 
      });

这样,您就可以通过两个级别传递json。

{
"en":
   {
    "key":"keyValue",
    "key2":"keyValue2",
   }
}

希望它能帮助...... :)