Angular i18n 中的补充字符串资源文件

Supplemental string resource files in Angular i18n

我正在开发一个应用程序,该应用程序需要能够根据管理标志切换特定实体的名称。这不会因语言环境而异,而只是那个标志。例如,假设网站有小部件。品牌重塑后,我们决定称它们为 doodads。客户可以选择加入新品牌 (doodad) 或保留旧品牌 (widget)。每种语言都需要本地化包含该术语的短语,使用基于该标志的“widgets”与“doodads”的正确选择。我们在很多地方都使用特定的名称。

我们的第一步是将字符串提取到资源文件中。我曾考虑过我们会做一些子语言环境,比如“en-us-doodad”与“en-us”,以便在选择时覆盖这个词。看起来假语言环境实际上不受支持(更新:这可能是一个选项,但它需要用不理想的词完全覆盖资源)。

有什么方法可以使用 ICU 吗?有没有办法拦截字符串查找以执行自定义处理(就像我们自己在查找的字符串上替换值一样)?我需要创建自定义指令吗?我真的希望本地化系统能够让这个工作不费吹灰之力。

使用 ICU 格式,您只需使用一个本地化文件即可完成此操作,并使用 select 语句有条件地执行格式(就像 Java 中的开关一样工作)。

<span i18n>
    You call widgets: {customizedName, select, doodad 
{Doodads} widget {Widgets}}
</span>

customizedName 是您的组件变量。如果它的值为 doodad,则该字符串将包含 Doodads,... {}花括号中的Text是ui中要显示的值,前面的单词是需要匹配变量值的值。