关于iOS 的多语言适配问题

关于iOS 的国际化适配,主要有以下几点:

一、语言适配  Localizable.strings文件

该文件主要用于字符串的多语言版本,包括Localizable.strings(English), Localizable.strings(Chinese(Simplified)), Localizable.strings(Chinese(Traditional))等多个版本,使用不同的文件名称,内容取相同的key名称,对应不同的值。文件中具体内容格式如下:

//Localizable.string(English)

"TEXT_CANCEL"="Cancel";//取消

"TEXT_BACK"="Back";//返回

"TEXT_SEND"="Send";//发送

// Localizable.strings(Chinese(Simplified))

"TEXT_CANCEL"="取消";//取消

"TEXT_BACK"="返回";//返回

"TEXT_SEND"="发送";//发送

// Localizable.strings(Chinese(Traditional))

"TEXT_CANCEL"="取消";//取消

"TEXT_BACK"="返回";//返回

"TEXT_SEND"="發送";//发送

二、图片适配

有两种方式:

(1)在不同语言的Localizable.strings中指定不同的图片名称,通过NSLocalizedString()获取不同的图片名称后进行显示不同的图片

(2)参照国际化应用名和文字的方式给图片标记两种不同的语言显示 ,要注意命名带上各国家的对应的编码表示


一般涉及到多语言适配问题,我们会先判断当前使用的语言类型。

获取iOS系统的语言类型可使用:

NSArray*languages = [NSLocale preferredLanguages];// 获取语言字段NSString*curLanguage = [languages firstObject];// 获取当前使用语言

对于curLanguage的值,iOS9在其中增加了地区代码。如简体中文,在iOS9之前为@”zh-Hans”,而在iOS9中为@”zh-Hans-CN”。所以iOS9之前的一些判断如

[curLanguage isEqualToString:@"zh-Hans"]

在iOS9之后就会有问题,可使用

[curLanguage hasPrefix:@"zh-Hans"]

来代替。如下:

//  当前语言是否中文简体

-#defineisZhHans [[[NSLocale preferredLanguages] firstObject] isEqualToString:@"zh-Hans"]

+#defineisZhHans [[[NSLocale preferredLanguages] firstObject] hasPrefix:@"zh-Hans"]

// 当前语言是否为中文繁体

-#defineisZhHant [[[NSLocale preferredLanguages] firstObject] isEqualToString:@"zh-Hant"]

+#defineisZhHant [[[NSLocale preferredLanguages] firstObject] hasPrefix:@"zh-Hant"]

// 当前语言是否为中文繁体香港

-#defineisZhHK [[[NSLocale preferredLanguages] firstObject] isEqualToString:@"zh-HK"]

+#defineisZhHK [[[NSLocale preferredLanguages] firstObject] hasPrefix:@"zh-HK"]

获取地区代码

NSLocale *locale=[NSLocale currentLocale];

[locale localeIdentifier];

你可能感兴趣的:(关于iOS 的多语言适配问题)