zoukankan      html  css  js  c++  java
  • 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都是随笔,只当做笔记,不会有详细介绍,测试请慎重。。。
  • 相关阅读:
    springmvc的注解式开发
    springmvc
    spring整合Mybatis
    spring的事务管理
    注解定义增强的两个方法
    动态代理
    错题解析
    SpringMVC的基本操作
    Spring整合MyBatis
    配置事务以及事务回滚
  • 原文地址:https://www.cnblogs.com/JerryBaxia/p/4797352.html
Copyright © 2011-2022 走看看