微信小程序国际化

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

参考文件:
国际化(微信小程序+TS
微信小程序国际化
https://github.com/wechat-miniprogram/miniprogram-i18n

一、环境目录

注意:一定要注意项目目录结构,新建文件夹miniprogram,并把前面新建的文件移到这个目录中
微信小程序国际化

二、安装根目录依赖

在NEW-FAN-CLOCK1 中安装根目录依赖

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

三、新建文件夹minprogram,安装minprogram依赖

在NEW-FAN-CLOCK1 / minprogram 中安装依赖
1、初始化仓库: 一直回车,minprogram中生成package.json文件,即初始化成功,此时即可安装依赖

npm init

2、安装依赖

npm i -S @miniprogram-i18n/core

四、 构建npm

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

构建中会提示报错信息:

没有找到可以构建的 NPM 包,请确认需要参与构建的 npm 都在 miniprogramRoot 目录内,或配置
project.config.json 的 packNpmManually 和 packNpmRelationList 进行构建

解决方案:添加如下配置

微信小程序国际化

五、新建gulpfile.js 文件

在NEW-FAN-CLOCK1目录下,新建gulpfile.js 文件,文件内容如下

/* 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 文本定义

在miniprogram中新建i18n文件夹,新建json文件,内容为空,必须有一个{}
微信小程序国际化

微信小程序国际化

七、使用

注意Page要修改为I18nPage

<view>{{ t('index') }}</view>

微信小程序国际化
json 文件里会涉及到的中文,一个是TabBar,一个是NavigationBarTitle。没有办法在JSON文件中国际化,故使用js去动态设置

  wx.setTabBarItem({
      index: 0,
      text: i18n.t('my')
    })
 wx.setNavigationBarTitle({
   title: i18n.t('my')
 })

八、中英文切换

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'
    )
  },
})

获取手机系统语言

const systemLang = wx.getAppBaseInfo().language;
 console.log("手机配置语言",systemLang)
  /** 根据本地语言设置小程序语言 */
  i18n.setLocale(systemLang.toLowerCase().includes('zh') ? 'zh-CN' : 'en-US')

九、打包编译

1、配置project.config.js
微信小程序国际化

2、配置package.json
微信小程序国际化
3、打开NEW-FAN-CLOCK1 目录终端,执行npm run build
微信小程序国际化
到此,微信小程序国际化完成,但是有个很不好的操作,不会自动更新页面了,每次都需要 npm run build文章来源地址https://www.toymoban.com/news/detail-425367.html

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

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

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

相关文章

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

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

    2024年02月05日
    浏览(47)
  • Flutter 笔记 | Flutter 文件IO、网络请求、JSON、日期与国际化

    Dart的 IO 库包含了文件读写的相关类,它属于 Dart 语法标准的一部分,所以通过 Dart IO 库,无论是 Dart VM 下的脚本还是 Flutter,都是通过 Dart IO 库来操作文件的,不过和 Dart VM 相比,Flutter 有一个重要差异是文件系统路径不同,这是因为 Dart VM 是运行在 PC 或服务器操作系统下,

    2024年02月07日
    浏览(104)
  • uni-app的nvue文件国际化不翻译问题解决办法

    官网上的nvue国际化方式介绍的实在是太简单了,记得要引入下message文件,还要用uni.setLocale()设置下,但是不管我怎么引入都会报错。 所以我直接把文件拿过来了,通过对象的方式去取。 完美解决!

    2024年02月11日
    浏览(35)
  • 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)
  • 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日
    浏览(53)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包