美文网首页
App国际化

App国际化

作者: CoderZxq | 来源:发表于2017-01-05 22:57 被阅读0次

    App国际化

    跟着我,一起创建一个国际化的App

    过程

    1. 创建工程:ZXQBKAppLocalizationTest

    2. 在ViewController.m写几行需要国际的Macro(NSLocalizedString等)

    NSString *name = NSLocalizedString(@"name", @"名字");
    NSString *country = NSLocalizedString(@"country", @"国家");
    
    1. 修改ZXQBKAppLocalizationTest的development language,
    • info.plist -> Localization native development region : zh-Hans;
    • open ZXQBKAppLocalizationTest.xcodeproj,修改developmentRegion = zh-Hans;
    • 重新启动xcode会发现zh-Hans成为了development language


      图片4-1图片4-1
    1. 在工程目录下genstrings导出development language的strings file。
    find . -name \*.m | xargs genstrings -o .
    

    ls 多了一个文件Localizable.strings,文件内容:
    comment
    key = value的形式。
    这里会发现我们的main.storybord和launchScreen.storybord多出一个.strings文件。

    1. 将4步中的Localizable.strings导入工程。


      5-15-1

      你会发现value就是key,原因:development language默认会把key作为user-face text。可我们希望value是中文。

    2. 我们需要将strings文件导出为zh-Hans.xliff,如果我们用editor -> export Localizations会发现export的.xliff的target为空,那么这个.xliff就无法import到工程里。解决的方法是:用命令行。

    xcodebuild -exportLocalizations -localizationPath <dirpath> -project <projectname> [[-exportLanguage <targetlanguage>]]
    

    例如:xcodebuild -exportLocalizations -localizationPath ~/desktop -project ZXQBKAppLocalizationTest.xcodeproj -exportLanguage zh-Hans
    我们会发现./desktop里多了一个zh-Hans.xliff文件。(我用的支持xliff格式的第三方免费工具:XLIFFTool,appstore有)

    6-16-1
    我们可以看到source=zh-Hans,target=zh-Hans,倘若你的target=?,那么.xliff是无法import工程里的。
    1. 我们需要把Localizable.strings的target用中文替换。

    2. import zh-Hans.xliff到工程里
      我们会发现strings文件已经改变了

      8-18-1
      我的运行结果
      8-28-2
    3. 添加另一种语言:英语

      图9-3图9-3
      Resource选择zh-Hans:
      9-19-1
      工程文件:
      9-29-2
      查看:Localzable.strings(English)
      9-49-4
      发现:文件里面的内容和zh-Hans一模一样。
      思考:因为我们Resource选择的是zh-Hans,所以这个文件和zh-Hans一样。不妨我们修改Localzable.strings(English)的内容,再导入一个日文,以en为Resource。
      修改en的value为英文
      9-69-6
      Resource选为en
      9-59-5
      Localzable.strings(japanese)的value为英文。果然添加一个新语言时,value由Resource决定。
      9-79-7
    4. 使用 editor export en.xliff

      10-210-2
      打开文件:
      10-310-3
      发现:Source为中文,而不是key。
      思考:我们思维定式会认为key,value,comment这样,但是这里发现是这个source感觉是zh-Hans的value。那么到底是不是呢,不妨修改Localzable.strings(chinese(simplified))的国家->国家哈哈。
      10-410-4

    export en.xliff看看

    10-510-5
    发现:source变成“国家哈哈”了。
    思考:如果这个source就是我们zh-Hans的value的话,那么我们就好理解了。项目组的translator不应该是根据key(程序员定的),而是应该根据value(user-text的实际内容)来翻译的。
    1. 测试一下我们的英文。
      12-112-1
      12-212-2

    结束语:第一次写博客,慢慢积累经验。加油。

    相关文章

      网友评论

          本文标题:App国际化

          本文链接:https://www.haomeiwen.com/subject/vbctbttx.html