成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

iOS項目國際化對【名詞復數】的處理方法

移動開發
iOS項目國際化過程中對【名詞復數】的處理方法和對其他文字的處理方法有些不同之處,這篇文章將從下面幾個方面講解一下項目中怎么處理名詞復數。

iOS項目國際化過程中對【名詞復數】的處理方法和對其他文字的處理方法有些不同之處,這篇文章將從下面幾個方面講解一下項目中怎么處理名詞復數。

  1. .stringsdict 

 

[[399814]]

到公眾號【iOS開發棧】學習更多SwiftUI、iOS開發相關內容。

錯誤的名詞復數處理方式

iOS項目國際化主要是對項目中用到的文字進行本地化語言處理,這個方面的知識在前面幾篇文章都有涉及,比如 蘋果官方的iOS App國際化工作流 、 使用Xib使App完成國際化功能 。

普通文本可以大致看作1對1的翻譯,比如說“iOS開發棧”->“iOS developers stack”,這種一對一的翻譯通過 .strings 文件可以處理。

名詞復數的多語言處理是更加復雜的翻譯,因為不同的語言對不同數量的表達方式都不一樣。分別以英文、中文表達【iOS開發棧】公眾號有幾個粉絲為例:

 

不同語言對不同數量的表達可以參考 Language Plural Rules

如果要用 .strings 文件來處理名詞復數的話,大概會寫出這樣的代碼:

 

  1. /* 偽代碼 */ 
  2. let fans = ... 
  3. if fans == 0 { 
  4.     NSLocalizedString("zero fans number of my offical account", comment: "The Fans Number of 【ios開發棧】is zero"
  5. else if fans == 1 { 
  6.     NSLocalizedString("one fans number of my offical account", comment: "The Fans Number of 【ios開發棧】is one"
  7. else { 
  8.     NSLocalizedString("other fans number of my offical account", comment: "The Fans Number of 【ios開發棧】is other"

如果每個用到名詞復數的地方都這樣寫的話,項目中就會充斥著這種膠水代碼,非常不利于維護。為了避免這種做法,我們可以利用Xcode自帶的 .stringsdict 文件。

stringsdict

.stringsdict 文件就是專門用來處理名詞復數的plist文件。

創建 .stringsdict 文件

 

 

 

  1. Localizable.stringsdict 

stringsdict 文件解析

 

左邊是一個空的stringsdict文件,右邊是用公眾號粉絲數為例的stringsdict文件。

  1. Localized String Key 是一個文字常量,用在 NSLocalizedString 宏里面用來匹配多語言翻譯,如 NSLocalizedString("fans number of my official account", comment: "The Fans Number of 【ios開發棧】") 。項目中有多少個需要翻譯的名詞復數就要有多少個Localized String Key。
  2. Localized Format Key 對應的是包含名詞復數的句子,其中的數字和名詞在 %#@ 和 @ 中間。
  3. VARIABLE 用 %#@ 和 @ 之間的代替。這是一個鍵值對,內容就是VARIABLE在不同數量下的表示規則。
  • NSStringFormatSpecTypeKey 指定復數規則的類型,固定為 NSStringPluralRuleType 表示復數規則類型。
  • NSStringFormatValueTypeKey 用來表示不同的數字類型,比方說整型是%d,無符號整型%u,具體可以查看 String Format Specifiers
  • zero / one / two / few,many / other 不同數量下名詞復數的表現方式,有些語言只有其中幾個比如漢語基本所有數量都可以用一種方式來表達(1個、2個、100個),英語有兩種(one fan/many fans),更多的語言可以查看 Language Plural Rules 。

實戰經驗

  1. Localized Format Key 是一個語句,其中可以包含1個或1個以上的復數,每個都用 %#@ 和 @ 包圍。
  2. 每增加一個需要翻譯的名詞復數就要增加一個 Localized String Key 。
  3. 設置 .stringsdict 文件的多語言

 

  1. Localizable.stringsdict 
  2. the File inspector 

 

上面是在中英文下對 iOS開發棧有n個粉絲 和 iOS開發棧有n篇文章和m次分享 的翻譯。對這兩個翻譯的使用方法如下:

 

  1. let fansNumLocalizableString = NSLocalizedString("fans num in my offical account", comment: "The Fans Number of 【ios開發棧】"
  2. let fanNumStr = String.localizedStringWithFormat(fansNumLocalizableString, 3) 
  3.  
  4. let offcialAccountInfo = NSLocalizedString("official account info", comment: ""
  5. let accountInfoStr = String.localizedStringWithFormat(offcialAccountInfo, 10, 5) 

到公眾號【iOS開發棧】學習更多SwiftUI、iOS開發相關內容。

總結

通過這篇文章我們了解了為什么要對名詞復數的國際化進行單獨處理,和stringsdict文件的用法,相信你已經對名詞復數的國際化有所了解,現在就去動手試試吧~

責任編輯:未麗燕 來源: 施治昂
相關推薦

2017-01-09 16:24:07

滴滴Android 端 App

2011-05-17 09:39:38

JavaSE

2011-08-29 09:48:30

springMVC

2011-07-08 11:13:42

Cocoa Touch XCode

2010-03-02 16:44:59

CentOS Mono

2010-07-28 14:52:29

Flex國際化

2024-05-17 08:25:06

數據驅動React語言包

2024-01-17 10:16:22

前端國際化消息鍵

2023-01-31 10:29:26

JavaScript國際化國際化庫

2018-05-24 15:19:19

AWS創業云服務

2023-04-07 15:12:46

ReactReact-Intl

2009-06-25 16:04:30

2010-01-04 13:09:51

Silverlight

2011-08-19 13:13:14

struts2Java

2009-01-19 09:06:31

gettextPHP國際化編程

2009-06-03 08:30:30

禚佳春法航華為

2024-01-04 08:16:34

Spring國際化標準

2009-02-04 15:04:13

2009-12-29 15:05:29

WPF支持國際化

2024-09-04 10:27:53

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品国产乱码久久久久久丨区2区 | 欧美一区二区 | 日韩视频在线播放 | 亚洲一二三在线 | 国产亚洲精品美女久久久久久久久久 | 欧美黄a| 狠狠入ady亚洲精品经典电影 | 四虎成人免费视频 | 精品videossex高潮汇编 | 国产精品欧美一区二区三区不卡 | 欧美不卡一区二区三区 | 久久国产精品首页 | 99久久精品国产一区二区三区 | 亚洲一区二区三区免费观看 | 黄网免费 | 91社区在线观看高清 | 日韩在线一区二区三区 | 国产欧美一区二区三区另类精品 | 亚洲综合在线视频 | 国色天香成人网 | 女女百合av大片一区二区三区九县 | 香蕉视频一区二区 | 日本免费一区二区三区 | 免费看a | 国产成人精品一区二区三区在线观看 | 国产一区二区 | 精品美女久久久久久免费 | 久久精品无码一区二区三区 | 欧美精品免费观看二区 | 日韩欧美精品 | 中文天堂在线一区 | 国产精品成人在线播放 | 久久69精品久久久久久国产越南 | 亚洲一区二区三区四区五区中文 | 亚洲福利一区 | 日韩精品在线播放 | 一区二区三区在线播放 | 国产成人jvid在线播放 | 欧美一区免费在线观看 | av福利网 | 午夜视频在线免费观看 |