美文网首页
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语言的国际化之跟随系统语言(一)

    本将要国际化的内容是: App国际化的配置 App名称国际化 代码中字符串国际化 国际化语言的配置 在项目中打开如...

  • Day18 - Flutter - 国际化

    概述 国际化的认识 国际化的适配 国际化的工具 一、国际化的认识 开发一个App,如果我们的App需要面向不同的语...

  • flutter 国际化

    国际化Flutter App

  • APP国际化(Localization) (iOS开发)

    目录 App名称国际化 图片、文字国际化 强制默认显示某种语言 一、App名称国际化 按照图示的步骤操作就行1.添...

  • App国际化

    App国际化 跟着我,一起创建一个国际化的App 过程 创建工程:ZXQBKAppLocalizationTest...

  • Android国际化多语言切换

    关于App国际化,之前有讲到国际化资源、字符换、布局相关,想要了解的猛戳用力抱一下APP国际化[https://j...

  • iOS开发之APP内部切换语言

    前言 iOS开发中,随着APP越来越完善,很多APP都做了国际化,也实现了APP内部切换语言。 原理 国际化都会走...

  • iOS14开发- 国际化

    介绍 如果 App 需要给不同语言的用户使用,需要进行国际化处理。如果 App 需要进行国际化,在开发之初就需要考...

  • iOS App 名称国际化

    2020-07-15 整理 App 名称国际化 图片、文字国际化 强制默认显示某种语言 启动图国际化 iOS10 ...

  • 国际化

    demo storyboard中的文字 代码中的文字 app名称的展示 资源文件的国际化 国际化脚本 国际化原理 ...

网友评论

      本文标题:App国际化

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