JavaScript @umijs/plugin-locale插件使用教程
介紹
plugin-locale是一個(gè)國(guó)際化的插件,用于解決i18n問(wèn)題,約定式的多語(yǔ)言支持,可以進(jìn)行多個(gè)國(guó)際語(yǔ)言的切換
啟用方式
在umirc.ts文件中配置locale:{}開(kāi)啟
使用
在src下創(chuàng)建一個(gè)locales文件夾,在文件夾下配置我們的語(yǔ)言文件
中文語(yǔ)言文件:zh-CN.js
export default {
WELCOME_TO_UMI_WORLD: '{name},歡迎光臨umi的世界',
};英文語(yǔ)言文件:en-US.js
export default {
WELCOME_TO_UMI_WORLD: "{name}, welcome to umi's world",
};注意:如果項(xiàng)目配置了singular: true,locales要改成locale
App.ts配置
import zhTW from 'antd/es/locale/zh_TW';
import {addLocale} from 'umi'
// 動(dòng)態(tài)增加新語(yǔ)言
addLocale(
'zh-TW',
{
// id 列表
name: '妳好,{name}',
},
{
momentLocale: 'zh-tw',
antd: zhTW,
},
);動(dòng)態(tài)的增加語(yǔ)言,增加語(yǔ)言之后可以通過(guò)getAllLocales獲取列表
addLocale 三個(gè)參數(shù)。
name語(yǔ)言的 key。例如 zh-TWmessage語(yǔ)言的 id 列表。 例如:{// id 列表 name: '妳好,{name}',}- 相應(yīng)的
momentLocale和antd配置
配置完以上代碼之后,我們需要重新運(yùn)行一下項(xiàng)目,頁(yè)面可能會(huì)報(bào)一些紅色波浪線錯(cuò)誤,但不影響使用,原因是ts類型問(wèn)題,如果不想報(bào)紅色波浪線,可以在后面加上:any,這是最快的解決方案,但是一般不推薦使用
在組件中使用
getAllLocales
獲取當(dāng)前獲得所有國(guó)際化文件的列表,默認(rèn)會(huì)在locales文件夾下尋找類似en-US.(js|json|ts)文件
import { getAllLocales } from 'umi';
console.log(getAllLocales()); // [en-US,zh-CN,...]getLocale
獲取當(dāng)前選擇的語(yǔ)言
import { getLocale } from 'umi';
console.log(getLocale()); // en-US | zh-CNuseIntl
useIntl是最常用的 api,它可以獲得formatMessage等 api 來(lái)進(jìn)行具體的值綁定
import styles from './index.less';
import { getAllLocales } from 'umi';
import { useIntl} from 'umi';
export default function IndexPage() {
const intl = useIntl();
console.log(intl);
return (
<div className={styles.title}>
<h1>Page index</h1>
<div>{intl.messages.WELCOME_TO_UMI_WORLD}</div>
</div>
);
}通過(guò)useIntl可以把我們的語(yǔ)言文件中內(nèi)容渲染到頁(yè)面
setLocale
設(shè)置切換語(yǔ)言,默認(rèn)會(huì)刷新頁(yè)面,可以通過(guò)設(shè)置第二個(gè)參數(shù)為false,來(lái)實(shí)現(xiàn)無(wú)刷新動(dòng)態(tài)切換
import styles from './index.less';
import { getAllLocales } from 'umi';
import { useIntl, setLocale } from 'umi';
export default function IndexPage() {
const intl = useIntl();
console.log(intl);
console.log(getAllLocales()); // [en-US,zh-CN,...]
return (
<div className={styles.title}>
<h1>Page index</h1>
<div>{intl.messages.WELCOME_TO_UMI_WORLD}</div>
<button
onClick={() => {
setLocale('zh-CN', false);
}}
>
切換中文
</button>
<button onClick={() => {
setLocale('en-US', false);
}}>切換英文</button>
</div>
);
}給定了兩個(gè)button按鈕,可以做語(yǔ)言的切換
以上是plugin-locale的簡(jiǎn)單操作,詳情請(qǐng)查看umi官網(wǎng)@umijs/plugin-locale
到此這篇關(guān)于JavaScript @umijs/plugin-locale插件使用教程的文章就介紹到這了,更多相關(guān)JS @umijs/plugin-locale內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- umi插件開(kāi)發(fā)仿dumi項(xiàng)目自動(dòng)生成導(dǎo)航欄實(shí)現(xiàn)詳解
- umi插件開(kāi)發(fā)仿dumi項(xiàng)目加載markdown文件實(shí)現(xiàn)詳解
- umi插件開(kāi)發(fā)仿dumi項(xiàng)目實(shí)現(xiàn)markdown文件轉(zhuǎn)為頁(yè)面
- 獨(dú)立使用umi的核心插件模塊示例詳解
- Umi4集成阿里低代碼框架lowcode-engine實(shí)現(xiàn)
- 如何在Laravel之外使用illuminate組件詳解
- umi插件開(kāi)發(fā)仿dumi項(xiàng)目實(shí)現(xiàn)頁(yè)面布局詳解
相關(guān)文章
js+html5實(shí)現(xiàn)可在手機(jī)上玩的拼圖游戲
這篇文章主要介紹了js+html5實(shí)現(xiàn)可在手機(jī)上玩的拼圖游戲,涉及javascript結(jié)合html5進(jìn)行圖形操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07
js實(shí)現(xiàn)簡(jiǎn)單的網(wǎng)頁(yè)換膚效果
本文主要分享了js實(shí)現(xiàn)簡(jiǎn)單的網(wǎng)頁(yè)換膚效果的示例代碼。具有一定的參考價(jià)值,下面跟著小編一起來(lái)看下吧2017-01-01
js實(shí)現(xiàn)鼠標(biāo)移入圖片放大效果
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)鼠標(biāo)移入圖片放大效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
微信小程序自定義菜單切換欄tabbar組件代碼實(shí)例
這篇文章主要介紹了微信小程序自定義菜單切換欄tabbar組件代碼實(shí)例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-12-12
遍歷json 對(duì)象的屬性并且動(dòng)態(tài)添加屬性的實(shí)現(xiàn)
下面小編就為大家?guī)?lái)一篇遍歷json 對(duì)象的屬性并且動(dòng)態(tài)添加屬性的實(shí)現(xiàn)。小編覺(jué)的挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-12-12

