iOS国际化 (多语言)

作者: goyohol | 来源:发表于2016-12-12 23:44 被阅读331次

在iOS中,是通过“xxx.lproj”目录来定义每个语言的资源。这里的资源可以是图片、文本、Storyboard、Xib等等。

iOS国际化,亦即:(支持)多语言。
核心思想:为所需要的各种语言单独定义一份资源。

应用程序国际化

应用程序国际化,即APP国际化。

  • 1.创建工程,再在“PROJECT”的“Info”里面,添加所需语言。

    创建工程,添加🐦语

    添加🐦语成功后,Main.storyboard和LaunchScreen.storyboard相应的改变。应用展示的所有文本都是以硬编码字符串存在于Main.storyboard及ViewController里面。

Main.storyboard和LaunchScreen.storyboard的改变


  • 2.从代码中分离出文本:创建一个 “.strings” 扩展名的文件
    来本地化字符串,需要把这些字符串全部放在一个单独的文件中。它将会在包中简单地引用这些字符串,而不是在实现、使用的方法中进行硬编码。
    Xcode使用带有 “.strings” 扩展名的文件来存储和检索 程序中使用的所有字符串,以及支持的每种语言。根据iOS设备当前所使用的语言,在代码中一个简单的方法调用将会查找并返回符合设备语言要求的字符串。

    点击右键,选择“New File…”,选择“iOS”对应的“Resource”中的“Strings File”,如图:

    创建 .Strings文件

    点击“Next”,为文件命名为InfoPlist.strings,然后点击“save”。

  • 3.创建完“InfoPlist.strings”(命名随意~),工程目录结构文件如下,单击“InfoPlist.strings”,查看右边的属性,在Localizable栏添加语言。如图:

    1.点击“Localization”,支持多语言
    2.Localization里添加所支持的相应语言
    3.“InfoPlist.strings”文件的变化

    这个时候就可以在对应语言的“InfoPlist.strings”文件中,添加所支持的字符串了。(当然针对你的APP客户的国籍,翻译出所对应语言正确的字符串!!考验你和“外贸”关系的时候到了。。。😂😂😂😂😂)


    4-1.添加对应语言所支持的字符串
    4-2.添加对应语言所支持的字符串
  • 4.运行,看效果:

    APP名字





内容国际化

程序字符串国际化。

  • 1.创建一个“Localizable.strings” 文件(点击右键,选择“New File…”,选择“iOS”对应的“Resource”中的“Strings File”)。

    创建好“Localizable.strings” 文件

    注意:Localizable.strings 是系统默认名字。不能更改,如果看不顺眼!!有个解决的办法:在⭐️“.pch”文件⭐️里面,使用⭐️宏定义⭐️重新定义为一个别的名字!


  • 2.添加语言在Localization.strings 中,按照"key" = "value"的格式。在使用时,用NSLocalizedString(@"key", @"")读取内容。
    Localization.strings (English)文件中,添加:

    "第一!绝对不意气用事!" = "The first!Absolutely not impulsive!";
    "第二!绝对不漏判任何一件坏事!" = "The second!Definitely not missing any bad thing!";
    "第三!绝对裁判的公正漂亮!" = "The third!Absolutely the referee just beautiful!";
    

    Localization.strings (Chinese)文件中,添加:

    "第一!绝对不意气用事!" = "第一!绝对不意气用事!";
    "第二!绝对不漏判任何一件坏事!" = "第二!绝对不漏判任何一件坏事!";
    "第三!绝对裁判的公正漂亮!" = "第三!绝对裁判的公正漂亮!";
    
    英文
    简体中文



视图控制器中,调用的语句:

  NSString * label_Str1 = NSLocalizedString(@"第一!绝对不意气用事!", nil);
  NSString * label_Str2 = NSLocalizedString(@"第二!绝对不漏判任何一件坏事!", nil);
  NSString * label_Str3 = NSLocalizedString(@"第三!绝对裁判的公正漂亮!", nil);
  NSString * label_Str = [NSString stringWithFormat:@"%@\n%@\n%@",label_Str1,label_Str2,label_Str3];

  UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(10, 240, self.view.frame.size.width, 120.f)];
  label.text = label_Str;
  //自动换行
  label.numberOfLines = 0;
  [self.view addSubview:label];


  • 3.运行,看效果:

    英文环境的效果
    简体中文环境的效果




添加🐦语完毕!!!
哎~~晚安!!!











goyohol's essay

相关文章

网友评论

  • coder小鹏:楼主你好,你做国际化的时候有没有国际化infoplist中的内容,比如访问定位权限和相册等信息的国际化??
    coder小鹏:@coder小鹏 嗯嗯,好的,谢谢
    goyohol:@coder小鹏 记不清了!离开上家公司了..

本文标题:iOS国际化 (多语言)

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