前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >出海应用本地化时遇见单复数字串怎么办?

出海应用本地化时遇见单复数字串怎么办?

作者头像
软件绿色联盟
发布2022-03-31 15:17:12
3.7K0
发布2022-03-31 15:17:12
举报

应用只支持中文的话,关于单复数的问题很少碰到。但应用要出海,就需要支持多种语言,做国际化的适配,此时名词单复数的问题就凸显了出来。比如,我们在学习英文时,学到的:

There is a pen.(这儿有支笔)

There are many pens.(这儿有好些笔)

英文——在表示单复数概念时,名词pen本身是有变化的。

中文——因为有量词系统,量词会变化(如:“一支”,“一大把”),但名词本身还是“笔”。

这是两种语言的不同之处。

那在处理字串的时候就会出现,一条中文字串,在资源里和它对应的英文字串需准备两条。

(1) 中文:

%d首歌

(2) 英文:

%d song

%d songs

不过,世界上的语言千差万别,单复数变化可不是只有单数、复数这两种格式。

以阿拉伯语举例,它的名词单复数格式变化有6种之多,俄罗斯语、乌克兰语、波兰语等有4种,拉脱维亚语、立陶宛语等有3种。更别说,各语言下的细则还有差异。

比如,俄罗斯语和波兰语支持的名词单复数格式都是4种,但是各格式所对应的规则还不一样。在俄语里,1,21,31,41,51,61…这样数字后面跟的名词才能使用单数格式。但是在波兰语里,只有1后面跟的名词才用单数格式。

为了高效处理,可以调用相关的接口来处理。调用接口后,开发者不用再考虑各语言背后复杂的单复数规则。把字串做下拆分,再用one, zero, two, few, many, other六类index分别做标注(六个类别下各语言对应的数字规则可参考https://unicode-org.github.io/cldr-staging/charts/37/supplemental/language_plural_rules.html)。系统会根据数字和各语言规则,自动去调用对应的字串。

那如何去做单复数字串的拆分(以下讨论以整数变量举例):

1.常规单复数拆分

(1)如果字串里只有一个数字变量:

1条中文字串在英文里需拆成2条,在多语言中最多需拆成6条(拆成6条可以满足所有语言的需求)。在多语言中,具体需要拆成多少条,可参考上面链接中的unicode规格。

举例:

中文下:

<plurals name="dt_mmi_approach_notice">

<item quantity="other">%d 分钟</item>

</plurals>

英文下:

<plurals name="dt_mmi_approach_notice">

<item quantity="one">%d minute</item>

<item quantity="other">%d minutes</item>

</plurals>

(2)字串里有两(多)个数字变量

字串a: 本设备当前最多支持开通 %1d 张交通卡,您已开通 %2d 张,是否继续开通?形如这样的字串该怎么办呢?

解决方案如下:

原来的字串a改为:本设备当前最多支持开通 %1s, 您已开通 %2s ,是否继续开通?同时新建两条字串b、c,这两个变量%1s、%2s分别调用字串b、字串c。

字串b:%1$d 张交通卡,需要进行单复数拆分;

字串c:%1$d 张,需要进行单复数拆分。

2.特殊情况处理(单复数里面的中文one和other翻译不一样)

比如:

确认要删除这首歌曲?(此时对应数的概念为1,index为one)

确认要删除选中的%d首歌曲吗?(此时对应数的概念>1,index为other)

单复数机制下,中文只能调用index为other的字串,所以即使赋予了one中文值,也是无效的。此时,就需要新增一个字串,当为单数的时候,调用此新增字串,不为单数时,调用单复数字串。

拆分方法举例:

有很多朋友想必注意到了Music_Delete_songs_multiple被拆成了6条。在zero, two,few, many, other的index分类下英文值都是一样的,在中文下有5个index规格下给的字串值是NA。这个是因为当支持的语种众多,且包含阿语,为了字串管理方便,可以统一把单复数字串在源语(此处为英文)中拆分为6条。而后各目标语言下根据其所支持的index进行翻译,不支持的index系统也不会去调用,所以可以不用翻译(打上NA标记),以降低翻译成本。

摸到这个规律后,也不是很复杂呀,对吧?华为多语言服务也为三方应用提供了多语言下的单复数检查功能(此为检查项“全球化架构评估”中的子检查项)。

· END ·

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 软件绿色联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档