中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

react國際化化插件react-i18n-auto使用詳解

發布時間:2020-08-21 07:16:07 來源:腳本之家 閱讀:564 作者:Mr18 欄目:web開發

react-i18n-auto專門為中文國際化提供的自動化方案,快速迭代國際化開發,方法如下

安裝

npm install react-i18n-auto --save-dev

第一步:添加babel插件配置(.babelrc添加方式)

 {
 "plugins": [
  "@babel/plugin-transform-runtime",
  "react-i18n-auto",
  "..."
 ]
 }

第二步:添加自動化配置 i18n.config.js

const generator = require('react-i18n-auto/generator')
const path = require('path')

generator.gen({

 excluded: /node_modules|output/, //排除文件選項(默認為:/node_modules/)

 src: path.resolve(__dirname, './code'), //源文件目錄(必選)

 outputPath: path.resolve(__dirname, './output'), //國際化配置輸出目錄(必選)

})

然后運行 node i18n.config.js 自動生成配置文件,將localePolyfill.js,localeUtils.js,語言包文件自動生成到outputPath目錄下

localePolyfill.js暴露全局方法 $AI, $$AI 和全局變量 LOCALE (語言包),LOCALE_VERSION (語言包版本)

更多配置請移步至react-i18n-auto github主頁

第三步:修改webpack配置,為每一個entry入口添加localePolyfill.js

// webpack.config.js
const path = require('path')
module.exports = {
 entry: {
 main: [
  path.resolve(__dirname, './output/localePolyfill.js'),
  path.resolve(__dirname, './src/index.js')
 ],
 ...
 },

第四步:修改當前語言(中文無需加載語言包)

import React from 'react'
import en_US from '../output/en_US/locale'
import localeUtils from '../output/localeUtils'

localeUtils.locale(en_US)
// lolale.js
module.exports = {
 'I_2gaaanh': 'Student',
 'I_2aq02r1': 'Teacher'
}

第五步:唯一的額外的工作,動態加載語言包時(如果語言包已提前加載則無需此操作)

修改前

// const.js 
export default Const = {
 SelectOptions:[
 {
  name:'學生',
  value:'student',
 },
 {
  name:'教師',
  value:'teacher',
 },
 ]
}
// app.js
import React from 'react'
import Const from './const'

export default class App extends React.Component {
 render () {
 return <select>
  {
  Const.selectOptions.map(item => {
   return <option key={item.value} value={item.value}>
    {item.name}
   </option>
  })
  }
 </select>
 }
}

由于const為常量,當語言包LOCALE更新時,const并不會得到更新,需要手動調用$AI,類似的情況都需要手動更新

修改后

import React from 'react'
import Const from './const'

export default class App extends React.Component {
 render () {
 return <select>
  {
  Const.selectOptions.map(item => {
   return <option key={item.value} value={item.value}>
   {$AI(item.$_name, item.name)} {/*唯一需要修改的地方*/}
   </option>
  })
  }
 </select>
 }
}

// 編譯后的const.js
// 所有的中文對應的字段,自動添加$_前綴,值為對應中文的uuidKey

export default Const = {
 selectOptions: [{
 name: '學生',
 $_name: "I_2gaaanh",
 value: 'student'
 }, {
 name: '教師',
 $_name: "I_2aq02r1",
 value: 'teacher'
 }]
};

ps :通過代理getter,或提前加載語言包則可跳過步驟5,具體方法可自行嘗試

結束

編譯前后代碼對照,不污染源碼,無痕開發

import React from 'react'
export default class App extends React.Component {
 render () {
 return <div>
  <header>這是標題</header>
  <div title='這是提示文字'>
  <p>這是內容</p>
  </div>
  <footer>{this.state.title}</footer>
 </div>
 }
}
import React from 'react'
export default class App extends React.Component {
 render () {
 return <div>
  <header>{$AI('I_5wtgbv1', '這是標題')}</header>
  <div title={$AI('I_7reuhi4', '這是提示文字')}>
  <p>{$AI('I_4ximl4b', '這是內容')}</p>
  </div>
  <footer>{this.state.title}</footer>
 </div>
 }
}

到此這篇關于react國際化化插件react-i18n-auto使用詳解的文章就介紹到這了,更多相關react i18n auto 內容請搜索億速云以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持億速云!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

嵩明县| 天柱县| 长沙市| 泸州市| 民权县| 灵丘县| 阿坝| 成都市| 仙游县| 昔阳县| 夏邑县| 鲜城| 无棣县| 武功县| 积石山| 泽库县| 夏邑县| 电白县| 仪陇县| 施甸县| 新龙县| 工布江达县| 昌江| 阿拉尔市| 苏尼特右旗| 清新县| 淮阳县| 古交市| 长子县| 贵州省| 淄博市| 呼图壁县| 岚皋县| 石城县| 麦盖提县| 南木林县| 通化县| 宜州市| 新泰市| 淳化县| 华安县|