使用react-redux-i18n将来自API的语言环境数据与商店同步

时间:2017-09-02 20:18:07

标签: javascript reactjs redux internationalization

是否可以根据API的内容与react-redux-i18n动态同步一组翻译?

现在,我在我的应用程序中静态存储了几种语言(fr,en,es,nl)的一组翻译,并且非常适合我的网络应用程序的网站端的翻译目的。

例如,我有一种语言的对象(locale-data/nl.js下的荷兰语):

export default {
  application: {
    title: 'Toffe app met i18n!',
    hello: 'Hallo, %{name}!'
  },
  date: {
    long: 'D MMMM YYYY'
  },
  export: 'Exporteer %{count} dingen',
  export_0: 'Niks te exporteren',
  export_1: 'Exporteer %{count} ding',
  two_lines: 'Regel 1<br />Regel 2',
  action: {
    sign_up: 'Registreren',
    sign_out: 'Afmelden',
    log_in: 'Aanmelden',
    dashboard: 'Dashboard'
  }
}

等于locale-data/en.js

下的en
export default {
  application: {
    title: 'Awesome app with i18n!',
    hello: 'Hello, %{name}!'
  },
  date: {
    long: 'MMMM Do, YYYY'
  },
  export: 'Export %{count} items',
  export_0: 'Nothing to export',
  export_1: 'Export %{count} item',
  two_lines: 'Line 1<br />Line 2',
  action: {
    sign_up: 'Sign Up',
    sign_out: 'Sign Out',
    log_in: 'Log In',
    dashboard: 'Dashboard'
  }
}

通过使用嵌入式方法,我可以在初始化时定义我的应用程序中的默认语言:

// locale-data/index.js    
import fr from './fr'
import en from './en'
import nl from './nl'
import es from './es'


// in index.js
...
export default { fr, en, nl, es }

import translations_data from './locale-data'

const translationsObject = {
  ...translations_data
}


syncTranslationWithStore(store)
store.dispatch(loadTranslations(translationsObject))
store.dispatch(setLocale('en'))

问题是,如果我想为每种语言使用大量的字符串集合,那么它会大大降低我的前端应用程序的速度。是否可以在开头加载某些语言(例如:英语)并在用户触发redux操作时更新商店,以便从API重新同步所需的翻译?

0 个答案:

没有答案