taro实现多语言切换

摘要:
1.下载并依赖npminstaclreact-i18next18next-browser-language-detector-S2。在配置文件中创建一个新文件和一个新的index.js文件importTrofrom“@tarojs/taro”;从“18下一个浏览器语言检测器”导入语言检测器;从'i1导入

1.下载依赖

npm install react-i18next i18next i18next-browser-languagedetector -S

2.新建文件,配置文件

新建index.js文件

import Taro from '@tarojs/taro';
import LanguageDetector from 'i18next-browser-languagedetector';
import i18n from 'i18next';
import zh from './zh'
import en from './en'
import {initReactI18next} from 'react-i18next';

i18n.use(LanguageDetector) //嗅探当前浏览器语言
.use(initReactI18next) //init i18next
.init({
  //引入资源文件
  resources: {
    en: {
      translation: en,
    },
    zh: {
      translation: zh,
    },
  },
  //选择默认语言,选择内容为上述配置中的key,即en/zh
  lng: Taro.getStorageSync('language') ? Taro.getStorageSync('language') : 'en',
  debug: false,
  interpolation: {
    escapeValue: false, // not needed for react as it escapes by default
  },
})

export default i18n;

新建zh.js中文文件

export default {
  // 设置-切换语言页
  languageList: {
    title: '切换语言',
    zh: '中文',
    en: '英文',
  }
}

新建en.js英文文件

export default {
  // 设置-切换语言页
  languageList: {
    title: 'Switch Language',
    zh: 'Chinese',
    en: 'English',
  }
}

app.js文件修改配置

import Taro from '@tarojs/taro';
import React, { Component }  from 'react';
import '@tarojs/async-await';
import 'taro-ui/dist/style/index.scss';
import i18n from '@/libs/text-i18n/index'

Component.prototype.$i18n = i18n;  //封装到全局

class App extends Component {

  componentDidMount () {
    //
  }

  componentDidShow () {
  }

  componentDidHide () {}

  componentDidCatchError () {}

  // this.props.children 是将要会渲染的页面
  render () {
    return this.props.children
  }
}

export default App;

3.页面使用

import Taro from '@tarojs/taro';
import React, { Component }  from 'react';
import { View, Image, Text } from '@tarojs/components';
import { observer, inject } from '@tarojs/mobx';
// 使用多语言
import { Translation } from 'react-i18next'

import './index.scss';

@observer
class LanguageList extends Component {

  state = {
  }

  componentDidShow () {
  }

  componentDidMount () {
  }
  
  UNSAFE_componentWillMount () { }

  componentDidHide () { }

  // 改变语言
  changeLang(type){
    this.$i18n.changeLanguage(type) // 'en' 'zh'等等
    // 储存语言类型
    Taro.setStorageSync('language', type);
    // 提示
    Taro.showToast({
      title: '切换语言成功',
      duration: 1000,
      icon: 'none'
    });
  }

  render() {
    return (
      <View className='language-list'>
        <Translation>
          {
            t => 
            <View className='list-content'>
              <Text className='title'>{t('languageList.title')}</Text>
              <View className='list-box'>
                <View className='libox' onClick={this.changeLang.bind(this, 'zh')}>
                  <Text className='t1'>{t('languageList.zh')}</Text>
                </View>
                <View className='libox' onClick={this.changeLang.bind(this, 'en')}>
                  <Text className='t1'>{t('languageList.en')}</Text>
                </View>
              </View>
            </View>
          }
        </Translation>
      </View>
    );
  }
}

export default LanguageList;

免责声明:文章转载自《taro实现多语言切换》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇16进制Unicode码和汉字互相转换初始jQuery下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

20、EVE-NG华丽登场Openstack镜像,体验私有云!

EVE-NG华丽登场Openstack镜像,体验私有云!为了推动Cloud技术在国内更快速的发展,本人决定为EVE-NG定制一个Openstack私有云系统的镜像,来提升工程师个人的技术实力,横向拓宽技术知识面,以应对IT技术高速迭代,快速发展的现状。当然,您可以将Openstack设备连接到其他拓补中,但设备所在的网络必须是10.0.0.0/24,并且网关...

MIPS学习笔记(一)

本章涉及MIPS变量声明、数据输入和输出、地址获取、分支跳转语句,基本上对应于任何高级语言的最基本操作。该信息的确切形式因汇编程序而异。在MIPS程序集中,标签是后跟冒号的符号名称。)syscall程序的结尾与C类似,可以调用exit函数来停止程序的执行。停止MIPS程序的一种方法是使用类似于在C中调用exit的方法。MIPS中有一个移动指令,它将一个寄存器...

JRebel 6 破解版及使用方法

2.解压下载的jrebel6.0.0-crack.zip、jrebel6.0 jar包和破解文件。假设文件在D:/jrebel步骤:1中解压缩。eclipse下载jrebe插件,可以在市场上下载。2.打开eclipse的窗口首选项jrebel,打开优势选项卡,并将jar包的路径指向D:/jrebel/jrebel.jar。用CMD打开DOS窗口,输入cd/d...

Android:在任务列表隐藏最近打开的app

//schemas.android.com/apk/res/android“package=”com.li.test“android:versionName=”1.0“&gt:targetSdkVersion=”23“/&gt:allowBackup=”true“android:icon=”@mipmap/ic_launcher“androi...

windows 常用命令行操作

目录操作˃pwd打印当前工作目录,通过此关键词可以查看当前所处的路径˃cd更改目录,用于多个目录之间的切换具体输入:cd目录名cd目录名/子目录名(可通过此方式到达最底层的目录)cd~(返回home目录)cd..(返回上一级目录)cd../..(返回上两级目录)cd盘符名:(不同盘符间跳转,cd后面跟上路径则可实现精准跳转)˃mkdir创建目录具体输入:mk...

echarts折线图 鼠标移入改变小点显示样式

=undefined){res+=nameList[i].seriesName+':'+nameList[i].data+'%'+''}}res=res.split;returnres[0]+''+res[1];}}echarts折线图的鼠标移动上去小点显示样式修改tooltip:{trigger:'axis',formatter:function{varr...