iOS国际化学习笔记

配置需要国际化的语言

project->Info->Localizations 添加本地化语言包

App名称本地化

(1)创建InfoPlist.string文件,Xcode的File inspectionLocalize选择需要本地化的语言
(2)在不同语言InfoPlist.strings对应文件中添加应用名称

  • InfoPlist.strings(English)

    1
    2
    //App在英语环境下显示的名称
    CFBundleDisplayName = "AppName";
  • InfoPlist.strings(Chinese)
    CFBundleDisplayName = “应用名称”;

(3)info.plist添加Application has localized display name,值为YES

代码中字符串本地化

(1)创建Localizable.strings文件,Xcode的File inspectionLocalize选择需要本地化的语言
(2)以KeyValue的形式,为代码中每一个需要本地化的字符串赋值

  • Localizable.strings(English)

    1
    "hello" = "Hello!";
  • Localizable.strings(Chinese)

    1
    "hello" = "你好";

(3)使用Foundation框架自带的NSLocalizedString(key, comment)这个宏根据Key获取对应字符串
NSlocalizeString 第一个参数key是内容,根据key去对应语言的文件中获取对应的字符串,如果没有找到,那么就会以key作为value返回,第二个参数将会转化为字符串文件里的注释。

#define NSLocalizedString(key, comment) [[NSBundle mainBundle] localizedStringForKey:(key) value:@”” table:nil]

多人开发情况下的字符串本地化

不在系统默认的本地化文件Localizable.strings中定义字符串,自定义strings文件储存本地化字符串,然后通过NSLocalizedStringFromTable(\<#key#\>, <#tbl#>, <#comment#>)获取。

  • tbl:自定义strings文件的名称

    图片本地化(两种方式两种方式)

    第一张方式:同获取本地化字符串方式获取图片名称进行加载
    第二种方式:将图片本地化,选中图片,在Xcode的File inspectionLocalize选择需要本地化的语言,项目目录中显示service(English)service(Chinese)两张图片,分别替换为不同语言的两张图片,实际是存储在en.lprojzh-Hans.lproj中同为service.png名称的两张图片。
    两种方式同获取本地化字符串相同获取图片名称:
    1
    NSString *imgName = NSLocalizedString(@"service", nil);

查看/切换本地语言

查看本地语言环境:从NSUserDefaults中获取key为AppleLanguages的value即为当前语言环境。

1
2
NSArray *languages = [[NSUserDefaults standardUserDefaults] valueForKey:@"AppleLanguages"];
NSString *currentLanguage = languages.firstObject;

切换当前语言环境:

1
2
NSArray *lans = @[@"zh-Hans"];
[[NSUserDefaults standardUserDefaults] setObject:lans forKey:@"AppleLanguages"];

也可通过Edit Scheme->Run->Arguments Passed On Launch ->-AppleLanguages (语言)改变语言环境

原文链接:3分钟实现iOS语言本地化/国际化(图文详解)

-------------本文结束感谢您的阅读-------------