91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

高雄县| 永清县| 沂南县| 尖扎县| 左贡县| 曲靖市| 理塘县| 铜山县| 吕梁市| 满城县| 平乐县| 屏东市| 高安市| 会理县| 读书| 龙口市| 巴楚县| 哈尔滨市| 古田县| 新乡县| 宁明县| 孝昌县| 云浮市| 临邑县| 康平县| 焉耆| 鄂托克旗| 平邑县| 扎赉特旗| 鄯善县| 和平县| 鄂州市| 天镇县| 永德县| 赣榆县| 搜索| 沙洋县| 长治市| 西充县| 岚皋县| 运城市|