• IOS 多语言本地化 完美解决方案


    多语言本地化,是我们在做IOS项目的时候经常用的,下面根据自己的经验和使用场景,来全面的说说多语言本地化的解决方案。

     

    首先我们要明白本地化的原理和过程,才能更好的理解本地化的方案,本地化主要包括下面几个部分:

    • 本地化应用程序名称
    • 本地化字符串
    • 本地化图片
    • 本地化其他文件

     

    一、本地化应用程序名称,这个只有一种方案:

      • 点击“new file”然后在弹出窗口左侧选择IOS的resource项,在右侧就可以看到“String File”的图标。创建这个文件,命名为“InfoPlist”(一定是这个文件名) 就生成一个InfoPlist.strings文件;
      • 选中InfoPlist.strings 点击 XCode-> View-> Utilities -> File Inspector,在Localization中点“+”,添加chinese (zh-Hans)类型的为简体中文,english 应该会自动添加上。然后在InfoPlish.strings 左边会多出一个三角形,点击展开后可以看到InfoPlish.strings(english)和InfoPlish.strings(chinese)两个版本的文件;
      • 在InfoPlish.strings(english)文件中加入:
      • CFBundleDisplayName ="Program";   其中“Program”为英文应用程序名称,同理在InfoPlish.strings(chinese)文件中加入:
      • CFBundleDisplayName ="应用程序";   其中“应用程序”为中文名称,注意:CFBundleDisplayName加不加双引号都行
      • 编辑Info.plist,添加一个新的属性Application has localized display name, 设置其类型为boolean,并将其value设置为YES即可

    二、本地化字符串和本地化图片的解决方案有下面两种:

      • 程序中提供给用户自己选择的机会,用户可以使用按钮等方式自有切换语言,和当前系统的语言没有关系;
      • 根据当前用户当前移动设备的语言自动将我们的app切换对应语言。

    第一种做法看似比较简,当时其实想灵活实现也需要费点心思,具体的实现方法如下:

    • 创建多个strings文件,名字不能用Localizable.strings。
    • 多个strings文件如:English.strings/Chinese.strings/German.strings等等。
    • 每个文件中的内容和写法与Localizable.strings类似。
    • 使用方式:NSLocalizedStringFromTable(@"start",@"Chinese", nil)  。
    • 根据用户的操作,来更新页面的多语言显示。
    • 图片的本地化,不同语言获取不同的图片名称即可。  

    第二种做法,主要分一下几点:

    • 类似“本地化应用程序名称”第一步,点击“new file”然后在弹出窗口左侧选择IOS的resource项,在右侧就可以看到“String File”的图标。创建这个文件,命名为“Localizable”(一定是这个文件名否则后面调用会有一些区别)就生成一个Localizable.strings文件;
    • 类似“本地化应用程序名称”第二第三步,在Localizable.strings(english)文件中加入:
    • "welcome"="Click on the screen to continue...";  

       同理在Localizable.strings(chinese)文件中加入:

      "welcome"="点击屏幕继续...";  
      在代码中使用NSLocalizedString(<#key#>, <#comment#>)来读取本地化字符串。
    注:图片的本地化,  这里不同语言的图片的名称要一样,但是要放到不同的语言文件夹中。

    三、本地化其他文件

    本地化其他文件和本地化图片第二种方法类似,先在Localization中添加语言,然后把对应版本拷贝到en.lproj和zh-Hans.lproj文件夹中,最后引用就行了。

    Blog都是随笔,只当做笔记,不会有详细介绍,测试请慎重。。。
  • 相关阅读:
    fzuoj Problem 2177 ytaaa
    zoj The 12th Zhejiang Provincial Collegiate Programming Contest Capture the Flag
    zoj The 12th Zhejiang Provincial Collegiate Programming Contest Team Formation
    zoj The 12th Zhejiang Provincial Collegiate Programming Contest Beauty of Array
    zoj The 12th Zhejiang Provincial Collegiate Programming Contest Lunch Time
    zoj The 12th Zhejiang Provincial Collegiate Programming Contest Convert QWERTY to Dvorak
    zoj The 12th Zhejiang Provincial Collegiate Programming Contest May Day Holiday
    zoj The 12th Zhejiang Provincial Collegiate Programming Contest Demacia of the Ancients
    zjuoj The 12th Zhejiang Provincial Collegiate Programming Contest Ace of Aces
    csuoj 1335: 高桥和低桥
  • 原文地址:https://www.cnblogs.com/JerryBaxia/p/4797352.html
Copyright © 2020-2023  润新知