iOS开发基础78-iOS 国际化
iOS 国际化 (Internationalization) 是指让你的应用程序能够支持多种语言和地区。通过国际化,你可以让应用程序根据用户的语言选择显示相应的文本、图像等资源。以下是实现 iOS 国际化(中文简体、中文繁体、英文)的详细步骤,以及一个用于简化该过程的工具类的封装。
实现步骤
1. 创建国际化资源文件
-
创建 Localizable.strings 文件
- 在 Xcode 中,选择
File > New > File,然后选择Strings File。 - 将文件命名为
Localizable.strings。 - 勾选“Target Membership”以确保文件被添加到你的项目中。
- 在 Xcode 中,选择
-
添加多语言支持
- 选择
Localizable.strings文件,然后在 Xcode 的右侧边栏中点击Localize按钮。 - 在弹出的对话框中,选择
Base以及需要支持的语言(如Chinese (Simplified),Chinese (Traditional), 和English)。 - Xcode 将会为每个语言创建一个对应的
Localizable.strings文件。
- 选择
-
添加本地化内容
-
在每个语言的
Localizable.strings文件中添加对应的键值对。例如:Localizable.strings (Base):
"hello" = "hello";Localizable.strings (Chinese (Simplified))
"hello" = "你好";Localizable.strings (Chinese (Traditional))
"hello" = "您好";Localizable.strings (English)
"hello" = "hello";
-
2. 在代码中使用本地化字符串
在你的 Objective-C 代码中,你可以使用 NSLocalizedString 宏来获取本地化字符串。例如:
NSString *greeting = NSLocalizedString(@"hello", @"Greeting message");
NSLog(@"%@", greeting);
3. 封装工具类
为了简化国际化的过程,你可以封装一个工具类来处理本地化字符串的获取。以下是一个简单的工具类示例:
LocalizationHelper.h
#import <Foundation/Foundation.h>
@interface LocalizationHelper : NSObject
+ (NSString *)localizedStringForKey:(NSString *)key;
+ (NSString *)localizedStringForKey:(NSString *)key withDefaultValue:(NSString *)defaultValue;
+ (void)setLanguage:(NSString *)languageCode;
@end
LocalizationHelper.m
#import "LocalizationHelper.h"
@implementation LocalizationHelper
+ (NSString *)localizedStringForKey:(NSString *)key {
return NSLocalizedString(key, nil);
}
+ (NSString *)localizedStringForKey:(NSString *)key withDefaultValue:(NSString *)defaultValue {
return NSLocalizedStringWithDefaultValue(key, nil, [NSBundle mainBundle], defaultValue, nil);
}
+ (void)setLanguage:(NSString *)languageCode {
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:languageCode, nil] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
@end
4. 使用工具类
在你的应用程序中,你可以使用 LocalizationHelper 类来获取本地化字符串。例如:
NSString *greeting = [LocalizationHelper localizedStringForKey:@"hello"];
NSLog(@"%@", greeting);
如果需要动态更改语言,可以调用 setLanguage: 方法。例如:
// 设置为简体中文
[LocalizationHelper setLanguage:@"zh-Hans"];
// 设置为繁体中文
[LocalizationHelper setLanguage:@"zh-Hant"];
// 设置为英文
[LocalizationHelper setLanguage:@"en"];
注意事项
-
资源文件的命名:确保你的图片、XIB 文件等资源的命名也支持国际化。例如,可以使用
Image.png,Image-zh-Hans.png,Image-zh-Hant.png, 和Image-en.png。 -
重新启动应用:动态更改语言后,可能需要重新启动应用程序才能完全生效。这是因为某些 UI 元素(如 UITabBarItem 的标题)在初始化后不会自动更新。
-
测试:确保在真实设备和模拟器上测试所有支持的语言,以验证国际化是否正确。
。

浙公网安备 33010602011771号