IOS 多语言本地化 完美解决方案【自动+手动】

来源:互联网 发布:数据库中的模式 编辑:程序博客网 时间:2024/04/30 22:33

多语言本地化,是我们在做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文件夹中,最后引用就行了。



转自:http://zasoft.blog.163.com/blog/static/205215176201301703129935/

0 0