当前位置: 首页 > 科技观察

iOS项目国际化中如何处理【复数名词】

时间:2023-03-14 08:47:19 科技观察

iOS项目国际化中【复数名词】的处理与其他文有些不同。本文将从以下几个方面阐述项目中如何处理复数名词。.stringsdict到公众号[iOSDevelopmentStack]以了解有关SwiftUI和iOS开发的更多信息。复数名词的错误处理iOS项目的国际化主要是对项目中使用的文字进行本地化。这方面的知识在之前的文章中都有涉及,比如苹果官方的iOSApp国际化工作流程,使用Xib让App完成国际化功能。普通文本大致可以看作是一对一的翻译,比如“iOS开发栈”->“iOS开发者栈”,这种一对一的翻译可以通过.strings文件来处理。复数名词的多语言处理是一种更复杂的翻译,因为不同的语言表达不同的数量。英文和中文表达【iOS开发栈】公众号有几个粉丝举例:不同数字在不同语言中的表达,可以参考语言复数规则。如果你想使用.strings文件来处理复数名词,你可能会写这样的代码:/*伪代码*/letfans=...iffans==0{NSLocalizedString("zerofansnumberofmyofficalaccount",comment:"TheFansNumberof【ios开发堆栈】iszero")}elseiffans==1{NSLocalizedString("onefansnumberofmyofficalaccount",comment:"TheFansNumberof【ios开发堆栈】isone")}else{NSLocalizedString("otherfansnumberofmyofficalaccount",comment:"TheFansNumberof【ios开发堆栈】isother")}如果每一个用到复数名词的地方都写这个,项目里就会全是这种胶水代码,非常不利于维护。为了避免这种方法,我们可以利用Xcode自带的.stringsdict文件。stringsdict.stringsdict文件是专门用来处理复数名词的plist文件。创建一个.stringsdict文件Localizable.stringsdictstringsdict文件解析左边是一个空的stringsdict文件,右边是一个stringsdict文件,以公众号粉丝数为例。LocalizedStringKey是NSLocalizedString宏中用来匹配多语言翻译的字面量常量,如NSLocalizedString("我公众号的粉丝数",comment:"【ios开发栈】的粉丝数")。项目中需要翻译的复数名词的数量与本地化字符串键的数量一样多。LocalizedFormatKey对应于包含复数名词的句子,其中数字和名词位于%#@和@之间。VARIABLE被替换为%#@和@。这是一个键值对,内容是VARIABLE在不同数量下的表达规则。NSStringFormatSpecTypeKey指定复数规则类型,固定为NSStringPluralRuleType表示复数规则类型。NSStringFormatValueTypeKey用于表示不同类型的数字。例如整数类型为%d,无符号整数类型为%u。详情请参考字符串格式说明符零/一/二/少,多/其他。有些语言只有其中的几个。例如,中文中基本上所有的量都可以用一种方式表示(1、2、100)。英语有两种类型(一扇/多扇)。更多语言,请查看语言复数规则。现场经验LocalizedFormatKey是一个语句,可以包含1个或多个复数,每个数字由%#@和@包围。为每个需要翻译的复数名词添加一个LocalizedStringKey。设置.stringsdict文件的多语言Localizable.stringsdicttheFileinspector。以上是iOS开发栈有n个关注者和iOS开发栈有n篇文章和m个分享的中英文翻译。这两个翻译的用法如下:letfansNumLocalizableString=NSLocalizedString("fansnuminmyofficalaccount",comment:"TheFansNumberof【ios开发栈】")letfanNumStr=String.localizedStringWithFormat(fansNumLocalizableString,3)letoffcialAccountInfo=NSLocalizedString("officialaccountinfo",comment:"")letaccountInfoStr=String.localizedStringWithFormat(offcialAccountInfo,10,5)前往公众号[iOSDevelopmentStack]了解更多SwiftUI和iOS开发。小结通过这篇文章,我们明白了为什么要单独处理复数名词的国际化,以及stringsdict文件的用法。相信大家对复数名词的国际化已经有所了解。快来试试吧~