超详细的 Angular 国际化方案

Angular 2 原生国际化支持(一) 在Angular 1.x 的版本里面,没有原生的国际化支持。我们在前面的文章里面详细的分析了如何利用第三方库或者利用过滤器和指令实现国际化,而在Angular 2里面已经提供了原生的国际化支持。接下来我们一起看看如何实现Angular 2的国际化。 开发环境 node 6.9.2npm 3.10.9angular 2.4.8compiler-cli 2.4.8webpack 2.2.1... 阅读详情

第一次在 Angular 框架上落地国际化方案,将 Eoapi 的经验分享给大家~

1. 项目背景

  1. 需要支持 Web 和 Electron 桌面端
  2. 技术栈
  • Angular 14
  • Electron 19
  • NG-ZORR 13.0.6

2. 可能遇到的困难

  • 各语言下样式不统一,例如阿拉伯文字展示从右到左,英文比中文长等等
  • 变量本地化,例如初始化 API 数据、日志、时间戳、金额等单位
  • 翻译成本高
  • 协作流程复杂
  • 技术标准的制定、落地

3. 调研

3.1 结论

先上表格看结论,满分三颗星,最终选定 I18n 方案。

在这里插入图片描述

一直在运行时语言包和编译手段两种方案徘徊,最后还是选定了使用 I18n 方案,有以下几点考虑:

  • 对代码侵入性低,不影响现有开发模式
  • 方案成熟,经过 angular 团队/社区验证,提前考虑到了各种条件
  • 生成的文件 xlf 遵循国际规范 XLIFF,较通用,即使技术变迁,语言包仍通用

虽然无法支持同一个 URL 动态切换语言包,多套代码方案在桌面端实现不常规(可能需要把各种语言的安装包打进去),但考虑需求上切换语言包是一个超低频的操作以及使用编译手段可以提高良好的开发体验,还是为 i18n 方案所折服。

其实无论是运行时方案和编译手段,只要官方支持,完全可以实现相互转换,期待后续 Angular 支持将语言包反向编译成代码后支持动态切换语言包,那就是我理想中的完美方案了。

3.2 分析

3.2.1 在线翻译

API切换语言包的时候再调用 OpenAPI 翻译当前页面,类似于 google 翻译。

实现难度一般,只要实现了此工具,可以兼容各种语言。

翻译 API 不一定稳定,同时免费的有次数限制,适合表达精确度要求不高,需要支持多语言的静态页。

3.2.2 自研语言编译器

使用编译手段提取,例如识别到代码中的中文,提取出来成为语言包,打包的时候

感兴趣可以看这篇,原理类似:https://juejin.cn/post/6844904042489970695#heading-3

不改变原有开发的模式,没有学习成本。

对代码有一定的侵入性,同时针对不同母语的代码有不同的语言匹配规则。

自研的实现成本较高,可能无法配合市面上热门翻译平台打通流程,工具生态成熟需要时间沉淀。

3.2.3 Angular I18n

方案https://angular.cn/guide/i18n-overview

和自研编译提取语言文本类似,使用一些标识符标记哪些字段需要翻译,同时提供一些额外的附加规则,例如同词不同含义的标记。

较为成熟,代码侵入性低,有一定的开发学习成本。

官方文档推荐的实践都是不同的语言包打包成不同的代码,然后通过 nginx 映射到不同的代码,这适合 web,但在桌面端实现比较麻烦,无法动态加载文件。

理想情况是 angular 方案下支持一套代码加载语言包的国际化方案(one bundle for all languages),官方关于动态切换语言包的讨论:

https://github.com/angular/angular/issues/24549#issuecomment-398371120
https://github.com/angular/angular/issues/38953#issuecomment-862492065

截至本方案完成,Angular 只支持打包成多种语言包文件,动态切换语言包目前处于提案通过阶段,未来可期。

在这里插入图片描述

3.2.4 运行时语言包

支持 Angular 的方案有:

  • http://www.ngx-translate.com/
  • https://ngneat.github.io/transloco/docs/translation-in-the-template
  • https://github.com/lo
angular中使用ngx-translate国际化配置 一、ngx-translate认识 ngx-translate:The internationalization (i18n) library for Angular. 二、安装 npm install @ngx-translate/core --save npm install @ngx-translate/http-loader --save 三、项目中配置使用ngx-translate... 阅读详情

相关推荐

angular项目如何配置国际化(i18n)?

1、下载ngx-translate的依赖库 //利用npm来安装ngx-translate依赖 npm install @ngx-translate/core --save npm install @ngx-translate/http-loader --save 2、在项目根模块app.module.ts中引入引入TranslateModule模块 import { Browse...

珍妮的小罐君 6014

Angular2中使用ngx-translate进行国际化

相较于angularjs中的ng-translate, angular2也有适合自己的国际化模块,就是ngx-translate。 项目地址:https://github.com/ngx-translate/core使用angular-cli初始化项目: ng new my-project 使用npm安装ngx-translate模块 npm install --save @ngx-tran

justforuse的博客 1万+

angular2+国际化实践(ngx-translate方案)

背景最近基于angular 4.4.3和ionic 3.7.1写了一个lazyload的小程序,做i18n的一些实践整理。

kingbaron的博客 1779

angular6.x 国际化解决方案-ngx-translate

安装 ngx-translate模块包 npm install @ngx-translate/core@9.1.1 --save npm install @ngx-translate/http-loader --save 注意: ng6 需引入ngx-translate 10.0以上版本 创建 i18n 语言文件 在assets文件夹下创建 国际化语言文件夹 i18n,在i18...

qq_36822018的博客 4187

Angular国际化翻译

Angular学习(一):国际化注意:原创,转载请注明出处 Angular是目前比较热门的一个前端框架,2017年上半年已经发布了4.0的版本。本文章主要介绍如何在angular中引入中英文国际化引入国际化包 Angular中有专门国际化模块-TranslateService,不仅支持通过通道进行国际化翻译(html),也暴露多个方法供ts文件中使用。 import { BrowserModule

Yangzhanyan的专栏 653

Angular 知识框架

Angular 知识框架

98年热爱开发的前后端开发工程师! 1431

Web前端框架的国际化与本地化

Web前端框架的国际化与本地化是开发全球化应用的关键。通过选择合适的框架和库,结合实用的解决技巧,我们可以轻松实现多语言支持和地区适应。本文提供了React、Vue和Angular等常用框架的国际化与本地化示例,以及动态切换语言、处理日期和时间格式、处理数字格式等实用技巧。希望这些内容能够帮助开发者更好地实现Web应用的国际化与本地化。表格示例:不同框架的国际化与本地化支持对比框架国际化库动态切换语言日期/时间格式处理数字格式处理Reactreact-intl支持支持支持Vue。

shejizuopin的博客 990

Angular I18n 五部曲

细翻翻看历史文章,其实关于Angular的总结已经有了不少,然而实际开发和测试工作中发现关于Angular的i18n bug依然层出不穷。近日又碰到一个“页面未载入,请返回上一个页面或重新整理页面再试一次”的问题,而App本应该向用户展示一个带有date-picker的页面,如下图所示。 打开console会发现如下的错误信息。 个人看来,凡是在某个问题上不断犯错,正如“大师兄,师傅和......

国际化梦工厂 7801

Angular 是一个功能强大且复杂的前端框架

Angular 是一个功能强大且复杂的框架,掌握其技术难点和解决方案对开发高质量应用至关重要。通过不断学习和实践,开发者可以充分利用 Angular 的特性,构建性能优越、可维护性强的现代前端应用。希望以上内容能对你在 Angular 开发中遇到的问题提供帮助。

luckucu的博客 1258

前端学习思路(从0基础到大神,超详细)

从零开始学习前端开发并成为高手,是一个需要时间、耐心和持续实践的过程。

邮箱:uemgyth@163.com 1885

至柔入坚,SAP Fiori Elements 开发里的无形之力

SAP Fiori elements 通过元数据和注解驱动界面生成,以"至柔"方式处理企业系统中的"至坚"业务规则。它将业务语义转化为UI元素,而非硬编码控件,既减少了代码量,更实现了业务意图与界面的自然映射。框架提供标准模板(Floorplan)应对常见业务场景,同时允许通过受控扩展点进行有限定制,在保持Clean Core原则下满足个性化需求。这种开发模式将控制点从界面层转移到语义层,使应用能随业务演进而自然生长,避免传统前端开发的维护负担。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1223

Angular-第11篇:国际化与本地化

Angular 提供了强大的国际化(i18n)和本地化支持,帮助开发者创建适应不同语言和地区的应用。通过 @angular/localize 模块,开发者可以标记需要翻译的文本,并使用 Angular CLI 生成翻译文件。翻译完成后,应用可以根据用户的语言设置加载相应的翻译文件。此外,Angular 还提供了 DatePipe 和 CurrencyPipe 来处理日期和货币的本地化格式。开发者还可以通过创建语言切换组件和服务,实现多语言切换功能,从而为全球用户提供一致且符合其习惯的体验。通过这些工具和方法

无 183

Angular国际化方案

Angular国际化方案 首先和大家推荐一个xlf文件的操作工具,支持合并和编辑功能,github,到release界面下载。 对于Angular国际化,官方提供了i18n方案,也就是标签的方式,通过angular CLI来识别。国际化方案必须在编译前定义下来,所以不能动态翻译。也就是当有人切换语言时,Angular i18n强制您按照不同的语言构建应用程序。 就目前来说,Angul...

FlyWine的博客 5409

Angular国际化:动态导入语言包的误区与最佳实践

在Angular开发中,国际化是必不可少的功能之一。通过使用提供的语言包,我们可以轻松地为应用添加多语言支持。然而,在尝试动态导入这些语言包时,开发者经常会遇到一些问题。本文将探讨这些问题,并提供解决方案和最佳实践。

m0_74337424的博客 80

Docker+Nginx部署Angular国际化i18n

Docker+Nginx部署Angular国际化i18n 在Angular项目中添加default.conf文件 default.conf 为了支持局域网,增加一个域名,即本地的局域网ip地址。 server { listen 80; server_name localhost; server_name 192.168.2.172; locatio...

FlyWine的博客 1146

Angular国际化实践:处理多语言网站中的资源加载问题

假设我们正在构建一个个人网站,支持德语(de)和英语(en)两种语言。标记HTML元素:使用i18n属性标记需要翻译的HTML元素。提取翻译文件:生成一个文件,包含所有需要翻译的文本。配置angular.json:"i18n": {"en": {当我们使用ng serve并指定语言(如),网站可以正常加载并显示对应的语言。然而,当我们使用构建项目并从dist文件夹服务时,出现了一个问题:图片资源无法正确加载。

m0_74337424的博客 83

直流有刷电机控制 - 认识电机(一)

电机控制学习

u011030644的博客 917

ADS1220 STM32硬件SPI驱动程序

前一段时间温故了下标准库,使用的是F1系列芯片,测试程序。

随风飘零翼的博客 5765

AAAI2024最佳解读|FontDiffuser One-Shot Font Generation via Denoising Diffusion with Multi-Scal

本文提出了一种名为FontDiffuser的基于扩散的单次字体生成方法,旨在通过去噪扩散模型生成模仿参考图像风格的字体,同时保留源图像的内容。尽管现有的字体生成方法在性能上取得了一定的进展,但在处理复杂字符和大风格变化时仍面临挑战。FontDiffuser通过引入多尺度内容聚合(MCA)模块,有效结合不同尺度的全局和局部内容线索,从而增强复杂字符的笔画保留能力。此外,文章还提出了一种风格对比细化(SCR)模块,用于风格表示学习,利用风格提取器从图像中分离风格,并通过精心设计的风格对比损失来监督扩散模型。

haimianxiaobao11的博客 1189

STM32实战:ADXL345传感器驱动与数据采集全解析(IIC/SPI双模式适配)

本文详细解析了STM32驱动ADXL345传感器的全流程,包括IIC和SPI双模式适配、硬件连接、寄存器配置及数据采集处理。通过实战代码示例和常见问题排查指南,帮助开发者快速实现高精度加速度数据采集,适用于运动检测、姿态识别等多种嵌入式应用场景。

weixin_29171087的博客 313

从0到1带大家搭建spring cloud alibaba 微服务大型应用框架(十一)spring-boot-admin 监控篇(2)springcloud 集成spring boot admin

从0到1 手把手搭建spring cloud alibaba 微服务大型应用框架(十一)spring-boot-admin 监控篇(2)springcloud 集成spring boot admin spring-boot-admin 服务端创建与集成入nacos spring-boot-admin 查看日志

峡谷电光马仔的博客 1378

【云原生技术】helm中Chart.yaml、values.yaml、_helpers.tpl 各自的写法与作用

Chart.yaml、values.yaml、_helpers.tpl 各自的写法与作用 在一个标准的 Helm Chart 中,通常会包含以下关键文件: - **Chart.yaml** - **values.yaml** - **templates/`_helpers.tpl`** - 以及若干模板文件(`deployment.yaml`、`service.yaml` 等) 下面分别介绍这几个文件的作用、常见字段及其含义。

weixin_46453070的博客 750

SAR图像降噪:基于小波变换和双边滤波器的Matlab实现

小波变换和双边滤波器是常用的图像降噪技术,它们可以在保持图像细节的同时有效抑制噪声。本文介绍了基于小波变换和双边滤波器的SAR图像降噪方法,并提供了相应的Matlab源代码。通过对比原始图像和降噪后的图像,可以观察到噪声得到一定程度的抑制,同时保留了图像的细节信息。本文将介绍一种基于小波变换和双边滤波器的方法,用于SAR图像的降噪,并提供相应的Matlab源代码。希望这篇文章能够帮助您理解基于小波变换和双边滤波器的SAR图像降噪方法,并为您提供实现该方法的Matlab源代码。对图像的高频部分进行降噪处理。

ScriptCharm的博客 839

从 SAP Gateway 旧 add-ons 卸载到 SAP S/4HANA 转换的清理路线

摘要: SAP Gateway系统的维护难点往往源于历史遗留组件的堆积,而非OData服务本身的复杂性。早期系统为支持多种服务类型而安装的各类add-ons(如IW_SCS、IW_CNT、GW_CORE等),随着系统升级和团队更替逐渐成为技术负债。自SAP NetWeaver 7.40起,核心功能已整合至SAP_GWFND组件,使架构显著简化。在向S/4HANA迁移时,需重点清理已废弃的add-ons(如IW_SCS、IW_GIL等),但必须谨慎验证其关联服务是否仍被调用。组件清理需结合系统日志和调用链分析

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 423

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: Eoapi v1.7.0 发布:支持 Websocket 协议测试、插件管理
下一篇: Eoapi x Tapdata 插件上线:让数据真正的流动起来,API 管理更方便
Postcat 开源 API 工具
博客等级 码龄5年 14粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值