首页 > 其他分享 >优维低代码:I18n 国际化

优维低代码:I18n 国际化

时间:2023-01-05 18:01:44浏览次数:54  
标签:例如 国际化 bricks en 应用 I18n 优维低 brick

优维低代码:I18n 国际化_插值

优维低代码:I18n 国际化_运维_02

优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维人提供一个技术交流与学习的平台。


连载第三十四期

《高级指引:I18n 国际化

Brick Next 的国际化基于 i18next 实现。

# 微应用的国际化配置

要为微应用配置国际化信息,首先,在 Next Builder 的 I18n 菜单中配置翻译表,例如:

优维低代码:I18n 国际化_应用名称_03

然后在编排中通过求值表达式调用相关的 API 根据用户当前选择的语言地区来显示对应的信息,例如:

brick: basic-bricks.general-button
properties:
buttonName: '<% I18N("BTN_SUBMIT") %>'

# 自动导入

有时候我们会先进行微应用的编排,后进行国际化配置,因此我们可以使用 i18next 提供的默认值能力。

例如,我们可以不用事先声明翻译表,在编排中直接使用:

- brick: basic-bricks.general-button
properties:
buttonName: '<% I18N("BTN_RESET", "重置") %>'
- brick: basic-bricks.general-button
properties:
buttonName: '<% I18N("BTN_SUBMIT", "提交") %>'

利用默认值功能,我们可以先行编排微应用,以应对编排前期的频繁调整,并快速交付 MVP 版本。

当微应用趋于稳定,准备发布公开版本时,再通过 Next Builder 提供的自动导入功能,快速生成翻译表。

点击界面右上角的“自动导入”按钮,系统将自动扫描微应用中对 I18N(...) 的调用,生成一张翻译表:

优维低代码:I18n 国际化_运维_04

最后按需补充其他语言的翻译即可。

⊙ NOTE

每个微应用使用自己独立的 namespace,因此 Key 只需在每个微应用内唯一即可。

# 微应用名称

微应用名称的国际化需要在应用编辑页面配置 Locales 属性,例如:

en:
name: Demo
zh:
name: 示例

# 运行时数据

有时候我们需要对运行时数据进行国际化转化。例如给定数据:

data:
title:
en: "Settings"
zh: "设置"

通过表达式 <% I18N_TEXT(data.title) %> 即可根据当前语言设置得到对应的 "Settings" 或 "设置"。该能力在 brick_next: 2.24.18 开始支持。

# 构件的国际化配置

在自动生成的构件代码中,我们已经预置了国际化配置示例。

构件的国际化配置主要分为三步:

首先,在bricks/YOUR-PKG/src/i18n/constant.ts 中添加 key,例如:

export enum K {
LOGIN = "LOGIN",
LOGOUT = "LOGOUT",
}

然后,在 ./src/i18n/locales/*.ts 中添加对应的翻译文本,例如:

const locale: Locale = {
[K.LOGIN]: "登录",
[K.LOGOUT]: "登出",
};

最后,调用相关的 API 根据用户当前选择的语言地区来显示对应的信息,例如:

import { useTranslation } from "react-i18next";
import { NS_BASIC_BRICKS, K } from "../../i18n/constants";


function LoginForm() {
const { t } = useTranslation(NS_BASIC_BRICKS);
return <Button>{t(K.LOGIN)}</Button>;
}

⊙ NOTE

每个构件包使用自己独立的 namespace,因此 Key 只需在每个构件包内唯一即可。

更多信息请参考底层使用的第三方库 react-i18next。

高级

# 插值

有时候一段文本会包含变量,并且不同语言可能有不同的组织方式,这时可以使用插值实现:

# Translations:
MODEL_MANAGEMENT:
zh: "{{ modelName }}管理"
en: "{{ modelName }} management"


# Usage:
brick: basic-bricks.micro-view
properties:
pageTitle: '<% I18N("MODEL_MANAGEMENT", { modelName: CTX.myModelName }) %>'

# 复数

有些语言(例如英语)复数会有词形变化:

# Translations:
TOTAL_ITEMS:
zh: "共 {{ modelName }} 项"
en: "{{ count }} item"
TOTAL_ITEMS_plural:
en: "{{ count }} items"


# Usage:
brick: div
properties:
textContent: '<% I18N("TOTAL_ITEMS", { count: CTX.itemsCount }) %>'

标签:例如,国际化,bricks,en,应用,I18n,优维低,brick
From: https://blog.51cto.com/u_15605878/5991709

相关文章

  • MasaFramework -- i18n (国际化)
    概念作为一个普通开发者,我们负责的项目的使用群体大多数是本国的人民,但不可避免的也有一些做外贸的业务或者给外企做的项目,这个时候就要求我们的项目有服务全球客户......
  • C# WinForm国际化实现的简单方法
    本文是完善:https://www.jb51.net/article/45675.htm文章描述很详细,重要的代码都贴出来了我帮大家懒到家,将窗口代码和资源文件也传上来到手可运行,直观的了解多......
  • 转贴:浅析 Linux 的国际化与本地化机制
       Linux是一个国际化的操作系统,它的工具集和设备驱动程序均支持多语言操作。本文通过分析glibc中实现国际化和本地化机制的函数和命令工具集以及从程序开发者、翻译......
  • 优维低代码:关联微应用和Feature Flags 特性开关
    优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维......
  • 雍熙签约厦门大学附属心血管病医院 | 构建面向全球的国际化官网
    近日,雍熙签约公立三级心血管病专科医院厦门大学附属心血管病医院,这是继百汇医院、美华妇儿医院后雍熙又一大型医院客户。此次签约,雍熙将根据厦门大学附属心血管病医院的发展......
  • Vite + Vue3导入 vue-i18n 插件
    使用Vite+Vue3导入vue-i18n插件Step1下载vue-i18n插件npminstallvue-i18nStep2新建local文件夹,创建index.jsindex.jsimport{createI18n}from"v......
  • 优维低代码:Theme & Mode 页面主题和模式
    优维低代码技术专栏,是一个全新的、技术为主的专栏,由优维技术委员会成员执笔,基于优维7年低代码技术研发及运维成果,主要介绍低代码相关的技术原理及架构逻辑,目的是给广大运维......
  • Android中的横竖屏、资源、国际化的使用
    Android中的资源与国际化的问题,通常我们新建一个Android工程,目录结构如下图所示: 我们主要看一下layout与values目录,layout里的xml文件的我们应用使用布局的文件,values里......
  • 在项目中定义 i18n 结构化对象的简单思路
    简介本文介绍一种在项目定义i18n文本结构的简单思路,以及定义一些简单的全局函数,用于获取i18n文本。文件结构src├──i18n└──index.js├──zhCN├──i......
  • vue i18n _ctx.$t is not a function
     一、问题Uncaught(inpromise)TypeError:_ctx.$tisnotafunctionatSelect.vue:51:95atrenderFnWithContext(runtime-core.esm-bundler.js:852:21)......