如何处理iOS应用名称在非国际化的语言下,显示特定的语言

发布网友 发布时间:2022-04-26 09:03

我来回答

1个回答

热心网友 时间:2022-06-26 08:02

作者:fiskz
链接:http://www.hu.com/question/38346765/answer/79205418
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

关于iOS国际化处理,
1.文字国际化
在特定的语言基础上添加对应的语言包。用NSLocalizedString来获取对应的语言。
获取当前语言

NSArray * allLanguages = [defaults objectForKey:@"AppleLanguages"];
NSString * CURR_LANG = [allLanguages objectAtIndex:0];

判断当前语言是否是要适配的语言
if (![CURR_LANG hasPrefix:@"en"] && ![CURR_LANG hasPrefix:@"zh"])
{
NSString * path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
NSBundle * languageBundle = [NSBundle bundleWithPath:path];
s = [languageBundle localizedStringForKey:translation_key value:@"" table:nil];
}

s就是当前非中文或者英文下的语言,当前可以把英文去掉,因为判断不判断英文都是要处理成英文的。显示如下
if ( ![CURR_LANG hasPrefix:@"zh"])
{
NSString * path = [[NSBundle mainBundle] pathForResource:@"en" ofType:@"lproj"];
NSBundle * languageBundle = [NSBundle bundleWithPath:path];
s = [languageBundle localizedStringForKey:translation_key value:@"" table:nil];
}
对于zh,可以判定是中文简体,中文繁体。所以这里就配置了中文。

2.图片国际化
图片国际化在添加对应的图片语言即可。但是,要显示如题的问题的时候就处理不好了。可以按照文字的方式来处理这些图片国际化。

[[UIImageView alloc]initWithImage:[UIImage imageNamed:NSLocalizedString(@"XXX_XXX_XX"),nil]];
在特定的语言下写入对应的key和value就可以了。

3.标题国际化

目前还没有比较好的形式来处理标题国际化

用最简单最粗暴的方式来解决这个问题,那就是把所有常用的语言都写入,然后把标题修改成英文。

总结,上面的这些国际化可以作为一个工具类来使用,可以写成一个宏。每次调用都可以重复使用。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com