App的国际化和本地化(十一) —— Stringsdict文件格式(一)

版本记录

版本号 时间
V1.0 2018.05.14

前言

很多APP都有国际化版本,常见于一些大公司的产品,比如Facebook、Wechat等,那么国际化需要我们APP做哪些更改呢,接下来这几篇就一起来看一下APP的国际化和本地化。感兴趣的可以看上面几篇。
1. App的国际化和本地化(一) —— 简单介绍(一)
2. App的国际化和本地化(二) —— 查看语言和区域设置(一)
3. App的国际化和本地化(三) —— 国际化用户界面(一)
4. App的国际化和本地化(四) —— 国际化代码(一)
5. App的国际化和本地化(五) —— 使用区域设置格式化数据(一)
6. App的国际化和本地化(六) —— 支持从右到左的语言(一)
7. App的国际化和本地化(七) —— 本地化你的App(一)
8. App的国际化和本地化(八) —— 测试您的国际化应用程序(一)
9. App的国际化和本地化(九) —— 自己管理字符串文件(一)
10. App的国际化和本地化(十) —— 语言和区域ID(一)

回顾

上一篇主要介绍介绍语言和区域ID,本篇主要讲述Stringsdict文件格式。


Stringsdict File Format - Stringsdict文件格式

.stringsdict文件是用于定义语言复数规则的属性列表。

避免使用带有不包含数字的字符串的.stringsdict文件,因为语言可能会以不适用于其他类别的方式定义通用单数和复数形式。


Localized String Properties - 本地化的字符串属性

.stringsdict文件中的每个键值对都定义了特定字符串的复数规则,如下所示:

<plist version="1.0">
    <dict>
        <key>%d file(s) remaining</key>
        <dict>
            …
        </dict>
        <key>%d service hour(s)</key>
        <dict>
            …
        </dict>
        <key>%d award(s)</key>
        <dict>
            …
        </dict>
    </dict>
</plist>

您将相同的字符串(例如@”%d file(s) remaining”@”%d service hour(s)”@”%d award(s))传递给代码中的NSLocalizedString宏。


Localized Format String Properties - 本地化格式字符串属性

复数规则确定由NSLocalizedString宏返回的格式字符串。 您为语言定义的每个数字类别提供格式字符串。 这个词典的值有以下几个键:

  • NSStringLocalizedFormatKey

包含变量的格式字符串。 变量前面是%#@个字符,后面跟着@个字符,如下所示:

<key>NSStringLocalizedFormatKey</key>
 <string>%#@files@</string>

变量名称是files。 格式字符串可以包含多个变量,如%#@files@ (%#@bytes@, %#@minutes@)

  • [variable]

指定用于[variable]的规则的键值对的字典,如下所示:

<key>files</key>
            <dict>
                <key>NSStringFormatSpecTypeKey</key>
                <string>NSStringPluralRuleType</string>
                <key>NSStringFormatValueTypeKey</key>
                <string>d</string>
                <key>one</key>
                <string>%d file remaining</string>
                <key>other</key>
                <string>%d files remaining</string>
            </dict>

例如,如果数字为2,则返回@”%d files remaining”格式字符串,并且本地化字符串变为@”2 files remaining”

为出现在NSStringLocalizedFormatKey格式字符串中的每个变量添加复数规则。


Plural Rule Properties - Plural规则属性

[variable]字典包含以下键:

  • NSStringFormatSpecTypeKey

    • 指定语言规则的类型。唯一可能的值是NSStringPluralRuleType,它表示语言复数规则。
  • NSStringFormatValueTypeKey

  • zero

    • 用于数字0的格式字符串。
  • one

    • 用于其他语言相关类别的格式字符串。
  • two

    • 用于其他语言相关类别的格式字符串。
  • few, many

    • 格式化字符串以用于其他语言相关类别。
  • other

    • 用于其他类别未涵盖的所有数字的格式字符串。该key是必需的。

还要注意下面几点:

  • 类别的含义取决于语言,并非所有语言都具有相同的类别。

    • 例如,英语只使用oneother类别来表示复数形式。阿拉伯语对于zero, one, two, few, manyother类别有不同的复数形式。虽然俄语也使用了many类别,但数量在many类别中的规则与阿拉伯规则不同。
  • other外,所有类别都是可选的。

    • 但是,如果您没有为所有特定于语言的类别提供规则,则文本在语法上可能不正确。相反,如果您为某种语言未使用的类别提供规则,则会忽略该规则,并使用other格式字符串。
  • zero, one, two, few, manyother格式字符串中使用NSStringFormatValueTypeKey格式说明符是可选的。

    • 例如,在英语中,one格式字符串可以是One file remaining,而other格式字符串可以是%d files remaining
  • 使用格式说明符或拼写格式字符串中的数字。

    • 如果您在格式字符串中使用数字(如英语中1 file remaining),则当用户更改区域时(例如,数字集更改),可能不会进行本地化。相反,请使用格式说明符,如%d file remaining;否则,拼出数字,如One file remaining

有关每种语言的复数类别和规则,请参阅CLDR Language Plural Rules

后记

本篇主要讲述了Stringsdict文件格式,感兴趣的给个赞或者关注~~~~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,053评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,527评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,779评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,685评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,699评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,609评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,989评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,654评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,890评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,634评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,716评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,394评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,976评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,950评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,191评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,849评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,458评论 2 342

推荐阅读更多精彩内容