当前位置: 首页 > 知识库问答 >
问题:

javascript - 请问大家,关于做多语言环境的小程序是如何自动切换语言的问题?

贺宜修
2024-02-29

image.png
请问大家是根据用户定位获取用户所在国家,然后切换语言,还是直接通过微信自带的
wx.getSystemInfo
获取用户语言,然后加载不同的语言环境?

共有1个答案

龚安民
2024-02-29
  1. 用户第一次使用小程序,调用wx.getSystemInfo返回的语言做为默认值,同步到数据库。
  2. 用户通过页面上的按钮切换语言,同步到数据库。
  3. 在程序入口调用getLanguage获取语言来使用。
const api = {  /**   * 获取用户语言   * @return {Promise<string | undefined>}   */  getLanguage: () => new Promise((resolve) => {    setTimeout(() => {      /** @type {string | undefined} */      const lang = 'zh_CN';      resolve(lang);    }, 1000);  }),};/*** 获取系统语言* @return {Promise<string>}*/const getSystemInfo = () => new Promise((resolve) => {  window.wx.getSystemInfo({    success: (res) => {      resolve(res.language);    },  });});/*** 获取用户语言* @return {Promise<string>}*/const getLanguage = async() => {  /** @type {string} */  const defaultLanguage = 'zh_CN';  /** @type {string | undefined} */  const remoteLanguage = await api.getLanguage();  if (remoteLanguage) {    return remoteLanguage;  }  /** @type {string} */  const systemLanguage = await getSystemInfo();  if (systemLanguage) {    return systemLanguage;  }  // 兜底,不太可能发生  return defaultLanguage;};const main = async() => {  const language = getLanguage();  // 将language注入到全局使用或者vue-i18n这类的国际化工具};main();

vue组合Vue I18n的示例

import { createApp } from 'vue'import { createI18n } from 'vue-i18n'const main = async() => {  const language = await getLanguage();  const messages = {    zh: {      apple: '苹果',    },    en: {      apple: 'apple',    },  }  const i18n = createI18n({    locale: language,    messages,    // something vue-i18n options here ...  })  const app = createApp({    // something vue options here ...  })  app.use(i18n)  app.mount('#app')}

https://vue-i18n.intlify.dev/

 类似资料:
  • 大家新年好,请问微信小程序 如果想做成多语言的,一般用什么语言包? 一些简单的语言json配置,然后切换不同语言的,这种手动配置的方法,我大概知道了,只是我们公司商品产品很多,请问有什么那种现成的多语言json包可以用的?

  • 本教程旨在指导您在uni-app(小程序,H5,APP(不含NVUE)等)中从0开始,到熟练使用多语言切换功能,在这里,我们使用的是vue-i18n插件,请您务必按照我们提供的步骤,完整的做好每一步的配置。 前言: i18n是一个专门用于处理多语言的插件,其义来自于internationalization(国际化),取其首尾两个字母i和n,中间部分nternationalizatio刚好18个字母

  • 网站如何根据国家自动切换语言? 例如在国内打开就是正常的/zh, 在美国打开是/en

  • 问题内容: 所以我想使用这样的switch语句: 现在我知道这些语句()或()都不起作用(显然是由于不同的原因)。我要问的是最有效的方法。我讨厌使用30条语句,所以我宁愿使用switch语法。有什么我可以做的吗? 问题答案: 当我查看其他答案中的解决方案时,我看到了一些我知道对性能不利的东西。我本来要对它们发表评论,但我认为最好对其进行基准测试并分享结果。您可以自己进行测试。下面是我在每个浏览器中

  • 问题内容: 我用来将货币从BigDecimal格式化为字符串。按预期工作,问题在于我们的主要目标是荷兰市场,而默认的荷兰格式很奇怪。 让我解释一下,当格式化-125时,荷兰语将得到“€125-”(预期为“-€125”)。英国按预期方式提供“-£125.50”。 我可以检查语言环境是否为荷兰语,然后在每次我要设置小数格式时都提供一个模式。但是我更喜欢一个解决方案,它可以覆盖荷兰的格式设置。我在考虑以

  • Serverless 与微服务在一点上很吸引人,你可以采用不同的语言来运行你的代码,不同的服务之间可以使用不同的语言。除了,在不同的 Serverless 服务里,采用不同的语言来开发。我们也可以在一个 Serverless 服务里,使用不同的语言来开发服务。 Serverless 多个语言运行环境 这次我们要创建的 Serverless 服务,其实现步骤相当的简单: 使用 serverless