首页 > 代码库 > IOS 应用程序国际化

IOS 应用程序国际化

一、什么是应用程序的国际化?

       根据当前用户当前移动设备的语言自动将我们的app切换对应语言。

       对于个人开发者而言国外市场比国内市场更加有价值些,毕竟国外的版权意识,付费理念较好些。

二、怎么做?

       1.本地化应用程序名称

       (1)应用程序名称的设置在 InfoPlist.strings文件中,而本地化的InofPlist.strings(simple Chinese)等在Xcode 5

               之后只能在Project ->Info-> Localizations 中点击加号添加即可。操作如下图




(2)点击下图“+”号 选择所要使用的语言选择Chinese 后

         在InfoPlish.strings(english)文件中加入:

         CFBundleDisplayName ="Program" 

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

         CFBundleDisplayName ="应用程序"
         其中“应用程序”为中文名称,“Program”为英文名称。

         注意:CFBundleDisplayName加不加双引号都行,这和本地化字符串有些不同

(3)编辑Info.plist,添加一个新的属性Application has localized display name,

         设置其类型为boolean,并将其value设置为YES即可


       2.本地化字符串

        (1)点击“new file”然后在弹出窗口左侧选择IOS的resource项,在右侧就可以看到“String File”的图标。

                 创建这个文件,命名为“Localizable”(一定是这个文件名否则后面调用会有一些区别)就生成一个

                 Localizable.strings文件;

       (2)设置Localizable.strings文件的本地化属性,在完成后选中该文件,在属性选择器中选择Show the File Inspector

                 可以看到多了个按钮,如下图


                注意:当你在本地化应用名称中如果添加上中文,在本地化字符串也是没有的中文的。

               在添加中文后Localizable.strings 里自动会增加一个Localizable.strings(chinese)文件

      (3)在Localizable.strings(english)文件中加入:

                     "welcome"="Click on the screen to continue..."
               同理在Localizable.strings(chinese)文件中加入:
                     "welcome"="点击屏幕继续..."

       3.本地化StoryBoard、Xib

         本地化StoryBoard、Xib 和 本地化字符串类似,选中文件添加Localization文件

         分别在不同的文件做不同的处理。


最后解释NSbundle下几个方法:

#define NSLocalizedString(key, comment) \
        [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:nil]
#define NSLocalizedStringFromTable(key, tbl, comment) \
        [[NSBundle mainBundle] localizedStringForKey:(key) value:@"" table:(tbl)]
#define NSLocalizedStringFromTableInBundle(key, tbl, bundle, comment) \
        [bundle localizedStringForKey:(key) value:@"" table:(tbl)]
#define NSLocalizedStringWithDefaultValue(key, tbl, bundle, val, comment) \
        [bundle localizedStringForKey:(key) value:(val) table:(tbl)]

(key, tbl, bundle, val, comment)

1.key 所使用的字符串对应的key

2.tbl 所使用的字符串所在的string文件名。 ex:abc.strings的话 就输入abc

3.bundle 资源strings文件所在的文件目录。

4.val 默认字符。

5.comment 注释


参考来源:

http://blog.csdn.net/a_ss_a/article/details/37996265

http://www.iliunian.com/2362.html

http://poolo.iteye.com/blog/1983753