国际化(微信小程序+TS)

这篇具有很好参考价值的文章主要介绍了国际化(微信小程序+TS)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、环境配置

1、安装根目录依赖

2、安装minprogram依赖

3、新建gulpfile文件

二、i18文本定义

1、中文 zh-CN.json

2、英文 en-US.json

三、使用

1、WXML中的使用

2、Javascript中的使用

3、中英文切换

四、打包编译

1、配置TS

2、配置project.config.js

3、打包

参考文档


一、环境配置

        目录结构示例

├── dist               // 小程序构建目录
├── gulpfile.js
├── node_modules
├── package.json
└── miniprogram                // 小程序源文件目录
|   ├── app.js
|   ├── app.json
|   ├── app.wxss
|   ├── i18n           // 国际化文本目录
|   |   ├── en-US.json
|   |   └── zh-CN.json

1、安装根目录依赖

        在项目根目录运行以下命令安装 gulp 及 miniprogram-i18n 的 gulp 插件。

npm i -D gulp @miniprogram-i18n/gulp-i18n-locales @miniprogram-i18n/gulp-i18n-wxml

2、安装minprogram依赖

        1)初始化仓库 npm init 

        一直回车,最后输入yes,minprogram中生成package.json文件,即初始化成功,此时即可安装依赖。

国际化(微信小程序+TS)

        2)安装依赖。

        在 miniprogram下进入终端,输入以下命令

npm i -S @miniprogram-i18n/core

        3)构建npm

        小程序开发工具左上角>工具>构建npm,构建成功之后minprogram中会生成一个miniprogram_npm这个文件夹,这个时候就已经可以使用依赖了。

3、新建gulpfile文件

        在根目录创建gulpfile.js文件

国际化(微信小程序+TS)

        复制以下代码

/* eslint-disable require-jsdoc */
const {src, dest, series} = require('gulp');
const gulpI18nWxml = require('@miniprogram-i18n/gulp-i18n-wxml');
const gulpI18nLocales = require('@miniprogram-i18n/gulp-i18n-locales');

function mergeAndGenerateLocales() {
  return src('miniprogram/i18n/*.json')
      .pipe(gulpI18nLocales({defaultLocale: 'zh-CN', fallbackLocale: 'zh-CN'}))
      .pipe(dest('dist/i18n/'));
}

function transpileWxml() {
  return src('miniprogram/**/*.wxml')
      .pipe(gulpI18nWxml({
        wxsPath: 'miniprogram/i18n/locales.wxs',
      }))
      .pipe(dest('dist/'));
}

function copyToDist() {
  return src(['miniprogram/**/*', '!miniprogram/**/*.wxml', '!miniprogram/i18n/*.json'])
      .pipe(dest('dist/'));
}

exports.default = series(copyToDist, transpileWxml, mergeAndGenerateLocales);

二、i18文本定义

在minprogram中新建i18n文件夹,新建相应的json文件(内容为空时,必须有一个{},否则报错

(ps:目前 miniprogram-i18n 仅支持纯文本及文本插值,后续会对其他 i18n 特性进行支持)

1、中文 zh-CN.json

// i18n/zh-CN.json
{
  "cc": "超",
  "withdata": "{value}超"
}

2、英文 en-US.json

// i18n/en-US.json
{
  "cc": "chao",
  "withdata": "{value} chao"
}

三、使用

1、WXML中的使用

        直接通过 t('cc')使用即可

<view>{{ t('cc') }}</view>
<view>{{t('cc',{value:'kk'})}}</view>

2、Javascript中的使用

        先引入,然后通过  i18n.t('cc') 直接使用即可

import { getI18nInstance } from '@miniprogram-i18n/core'
const i18n = getI18nInstance()

3、中英文切换

setLocale         设置当前语言

getLocale         获取当前语言

getFallbackLocale         获取备选语言

onLocaleChange(()=> {})        语言改变时触发的回调

import { I18nPage } from '@miniprogram-i18n/core'
I18nPage({
  onLoad() {
    // 语言切换时触发
    this.onLocaleChange((locale) => {
      // 获取当前语言
      console.log('current locale:', this.getLocale(), locale)
    })
    // 设置中文
    this.setLocale('zh-CN')
  },
   
  toggleLocale() {
    // 切换语言
    this.setLocale(
      this.getLocale() === 'zh-CN' ? 'en-US' : 'zh-CN'
    )
  },
})

四、打包编译

1、配置TS

        打开文件:typings>types>index.d.ts,在最后一行注入以下代码

(declare就是告诉TS编译器你担保这些变量和模块存在,并声明了相应类型,编译的时候不需要提示错误 )

declare module '@miniprogram-i18n/core'

2、配置project.config.js

         将minprogram修改为dist

国际化(微信小程序+TS)

3、打包

         1)在根目录的package.json文件中添加命令 “build”:“gulp”

国际化(微信小程序+TS)

        2)打开终端,输入npm run build

国际化(微信小程序+TS)

        3)完成

       注意:修改miniprogram代码的内容后,重新npm run build即可。

参考文档

https://github.com/wechat-miniprogram/miniprogram-i18nhttps://github.com/wechat-miniprogram/miniprogram-i18n

一键完成小程序国际化 | 微信开放社区本文介绍了一个用于小程序国际化的工具https://developers.weixin.qq.com/community/develop/article/doc/000aea41d44be836fbf882e845b813文章来源地址https://www.toymoban.com/news/detail-484464.html

到了这里,关于国际化(微信小程序+TS)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 微信小程序-切换语言(国际化i18n)的方法封装

    最近做的一个小程序的项目, 涉及到了 多语言的切换 , 就想到了之前vue用的多语言插件i18n, 就尝试着在微信开放社区搜了一下, 没有具体的实现, 但是提供了大致的实现思路, 如下: 又结合了很多大佬的分享经验, 试着去封装了一个微信的i18n方法 首先, 我们需要明确一下需要实

    2024年02月05日
    浏览(47)
  • next.js app目录 i18n国际化简单实现

    最近在用next写一个多语言的项目,找了好久没找到简单实现的教程,实践起来感觉都比较复杂,最后终于是在官方文档找到了,结合网上找到的代码demo,终于实现了,在这里简单总结一下。 此教程适用于比较简单的项目实现,如果你是刚入门next,并且不想用太复杂的方式去

    2024年04月22日
    浏览(42)
  • uniapp配置了pages.json 的 tabbar 国际化,小程序切换语言没有实时切换

    如上图,按照uniapp官方文档配置了tabbar的国际化 但是微信小程序实时切换语言没有实时刷新 解决方案: 在App.vue中加入以下代码:   在onLaunch中执行方法即可

    2024年04月28日
    浏览(35)
  • 【国际化Intl】Flutter 国际化多语言实践

    提示:这里参考一下几个链接 例如: https://github.com/ThinkerWing/language https://juejin.cn/post/6844903823119482888 这篇也很详细,还有包括兼容中文的繁体简体… 可以看看 该分支对应的提交是使用Android Studio 和 Flutter Intl插件 并根据掘金这篇文章的实践,兼容汉字简体和繁体字 https://g

    2023年04月23日
    浏览(63)
  • 48、springboot 的国际化之让用户在程序界面上弄个下拉框,进行动态选择语言

    上一篇是直接改浏览器的支持语言。 在浏览器上面直接改国际化语言 这次要实现的功能是直接在程序界面动态选择语言。 Locale 代表语言、国家。 应用之所以能动态呈现不同的语言界面,其实关键在于如何确定客户端的Locale(代表语言、国家信息) ——Spring Boot应用使用L

    2024年02月09日
    浏览(33)
  • hyperf 十四 国际化

    官方网址:Hyperf 文件结构:         /storage/languages/en/messages.php         /storage/languages/zh_CH/messages.php 创建文件 /config/autoload/translation.php。 多语言的调用从注入开始,即HyperfTranslationTranslator::__construct(TranslatorLoaderInterface $loader, string $locale)方法。根据配置文件Translato

    2024年02月11日
    浏览(58)
  • SpringBoot——国际化

    优质博文:IT-BLOG-CN 【1】编写国际化配置文件; 【2】使用 ResourceBundleMessageSource 管理国际化资源文件; 【3】在页面使用 ftp:message 取出国际化内容; 【1】创建 i18n 目录,并创建 login.properties 国际化默认配置文件,同时创建 login_zh_CN.properties 系统就会自动识别到是配置国际化

    2024年02月05日
    浏览(61)
  • C++国际化编程

    字节(octet)是一个八位的存储单元,取值范围一定是0~255。而字符(character,或者word)为语言意义上的符号,范围就不一定了。例如在UCS-2中定义的字符范围为0~65535,它的一个字符占用两个字节。 字符0xabcd如果存储为 AB CD,则称为Big Endian;如果存储为 CD AB,则称为Litt

    2024年02月10日
    浏览(76)
  • springcloud微服务国际化

    单体应用完成国际化还是比较简单的,可以看下面的示例代码。 引入必要的依赖 创建一个拦截器 创建一个配置类 然后在 resource 下创建 i18n 目录,选中右键 New = Resource Bundle 填入 base name ,选择 Project locales ,再 Add All ,确定即可。 打开配置文件,填写对应的中英文数据 配置

    2023年04月09日
    浏览(149)
  • SpringBoot复习:(36)国际化

    一、Resources目录下建立一个目录(比如international)来存储资源文件 message.properties 空的,但不能没有 message_zh_CN.properties message_en_us.properties 二、自动配置类MessageSourceAutoConfiguration 常量MESSAGE_SOURCE_BEAN_NAME为messageSource,也就是有这个名字的bean,则自动配置失效。 因为有@Conditional(R

    2024年02月13日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包