阿里飞冰(ice)框架下国际化实践

简介: 阿里飞冰国际化方案

基本思路

阿里飞冰采用的是React基本框架,因而国际化方案采用yahoo的React-Intl包,其提供了IntlProvider的类,用于包裹组件。因而基本思路就是通过localStorage存储一个lang值,用于提供给IntlProvider的属性locale进行语言的识别,在locales模块目录下维护各个不同的语言配置即可,通过按钮的选择改变lang值,即可对全局环境进行语言切换。

目录结构

  • 语言配置文件: src/locales
  • 设置lang工具函数: src/utils/locale.js
  • 配置转换函数: src/utils/localeConfig.js
  • 全局语言包裹组件: src/components/LocaleProvider
  • 语言选择框组件: src/components/LocaleSelect

踩坑案例

飞冰ice的Dialog组件导致的上下文丢失

[bug描述] 在PageHead中按钮点击,是通过jsx传输的包裹格式,在飞冰Dialog点击后会出现导致包裹在全局最外层的<LocaleProvider></LocaleProvider>丢失,错误为Uncaught Error:[React Intl] Could not find required 'intl' object <IntlProvider> heads to exit in the component ancestry.

[bug分析] jsx和js中的ast转换中造成场景性质的bug,原因在于项目书写过程中的js和jsx混合使用,对于前期未考虑到国际化场景

[解决方案] 在工具函数库localeConfig中实现confirmLocale函数,用于在js中的字符串转换

总结

相较于Vue的国际化Vue-i18n来说,React的国际化较为复杂,其依赖包也有很多,如'React i18n'、'Intl'等,本次国际化过程较为繁复,其本身难度倒不大,关键在于前期未考虑到要做国际化的需求,导致js和jsx混合使用,有的需要在config.js转换,而有的则需要在jsx中做转换,在某些场景中还会出现bug,因而后续过程中的项目如果考虑到国际化场景,需要提前留出预备量,任何的框架设计与实现需要做好度的把控,过渡设计和缺少设计都不能很好的达到业务效果,后期的反复工作就会增加,做好系统设计是每一个工程师都应该提升的能力。

相关文章
|
6月前
|
JavaScript 中间件 测试技术
Nest 框架:解锁企业级 Web 应用开发的秘密武器(上)
Nest 框架:解锁企业级 Web 应用开发的秘密武器(上)
Nest 框架:解锁企业级 Web 应用开发的秘密武器(上)
|
6月前
|
前端开发 JavaScript 中间件
Nest 框架:解锁企业级 Web 应用开发的秘密武器(下)
Nest 框架:解锁企业级 Web 应用开发的秘密武器(下)
Nest 框架:解锁企业级 Web 应用开发的秘密武器(下)
|
13天前
|
SQL 监控 数据可视化
完全开源!国内首个完全开源JAVA企业级低代码平台
JeeLowCode 是一款专为企业打造的 Java 企业级低代码开发平台,通过五大核心引擎(SQL、功能、模板、图表、切面)和四大服务体系(开发、设计、图表、模版),简化开发流程,降低技术门槛,提高研发效率。平台支持多端适配、国际化、事件绑定与动态交互等功能,广泛适用于 OA、ERP、IoT 等多种管理信息系统,帮助企业加速数字化转型。
|
1天前
|
自然语言处理 API C++
阿里通义推出SmartVscode插件,自然语言控制VS Code,轻松开发应用,核心技术开源!
SmartVscode插件深度解析:自然语言控制VS Code的革命性工具及其开源框架App-Controller
|
3月前
|
前端开发 IDE 开发工具
OpenSumi问题之OpenSumi 对于 VS Code 插件生态要如何支持
OpenSumi问题之OpenSumi 对于 VS Code 插件生态要如何支持
|
3月前
|
Java UED 自然语言处理
Struts 2 国际化竟有如此神奇魔力?快来揭开多语言支持的 Web 应用神秘面纱
【8月更文挑战第31天】在全球化背景下,Web应用需适应多种语言环境。Struts 2凭借其强大的国际化(i18n)支持,简化了多语言应用开发。通过不同语言的资源文件,它能自动匹配用户语言偏好,优化用户体验并扩展用户群。下面是一个示例:创建`messages.properties`(英语)与`messages_zh_CN.properties`(中文),并在Struts 2的Action类及JSP页面中调用`getText()`方法及Struts标签展示相应语言内容。此外,在struts.xml中指定资源文件,以确保框架正确加载对应语言包。通过这些步骤,开发者可以轻松实现应用的多语言支持。
65 0
|
6月前
|
监控 Java 中间件
蚂蚁金服:开源增强版 SpringBoot 的研发框架
蚂蚁金服:开源增强版 SpringBoot 的研发框架
83 1
|
6月前
|
小程序 数据安全/隐私保护
极客SaaS框架开源包
听说后边要出saas去水印小程序 saas短视频去重小程序
59 2
|
自然语言处理 Java 物联网
TDengine 资深研发整理:基于 SpringBoot 多语言实现 API 返回消息国际化
为了帮助开发者更好地进行 SpringBoot 的开发,避免开发盲点,我们将 TDengine 资深研发所做的内部分享——《SpringBoot 多语言支持方案》进行了相关整理,给到有需要的开发者参考。
288 1
|
消息中间件 NoSQL Java
顶级!13位专家力荐Spring5为企业级开发提供一站式方案
Spring作为一个互联网公司的必备框架,毫无疑问,在Java开发中占据了十分重要的位置!它可以解决企业应用开发的复杂性,为此提供解决方案。Spring的发展日新月异,满足了企业发展的需要。 Spring已经成为Java应用研发框架的事实标准,多年来在各个行业信息化建设中表现优异。从基础再到深入浅出,用极其简单的例子详解了Spring 的每个知识点,更重要的是每一个知识点都有极其详细生动的例子搭配讲解,特别是Spring AOP业务和系统功能分离的思想。 此文档从Spring基础篇、Spring5新特性篇、Spring系统集成篇,介绍了Spring5企业级开发实战的详细内容,由于篇幅限制,
53 0