1

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

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

有没有办法为此使用ICU?有没有办法拦截字符串查找以执行自定义处理(比如我们自己在查找的字符串上替换值)?我需要创建自定义指令吗?我真的希望本地化系统能够在不费力气的情况下使其工作。

4

1 回答 1

1

使用 ICU 格式,您可以只使用一个本地化文件来执行此操作,并使用 select 语句有条件地执行格式(其工作方式类似于 Java 中的开关)。

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

customName 是您的 components 变量。如果它的值为doodad,则字符串中会包含Doodads,... {}大括号中的Text是要在ui中显示的值,infront这个词是需要匹配变量值的值。

于 2022-01-27T18:45:59.627 回答