iOS 程序内国际化的一些心得(1)

最近接到需求,原有的app需要做一个程序内的国际化,可以让用户选择要展示的语言。

but哥可是没有一点思路。。。。

肿么办。

百度。。。

百度下来,取到了一些思路。

自己写到可能有些不尽如人意的地方,烦请各位大牛批评指正。

现总结如下:

1,判断用户手机设置的语言是否包含在当前app支持的语言里面。

如果包含着app支持语言里面。直接根据这个语言设置配置项。

如果不包含在app支持语言里面,弹出语言设置页面,让用户设置。

    VShowSetLanguage *setlanguage = [[VShowSetLanguage alloc] init];
    [setlanguage settinglanguage:^(BOOL isShowUserSelectView)
    {
        if (isShowUserSelectView)
        {
            //加载语言选择界面
            [self loadLanguageChooseView];
            
        }else{
            //用户已经设置过语言 或者用户当前系统语言 在app支持语言内
            [self reloadRootView];
            
        }
    }];

VShowSetLanguage:判断是否加载语言选择界面处理类

实现如下:

.h文件

#import <Foundation/Foundation.h>
typedef void(^showLanguageView)(BOOL isShowUserSelectView);
@interface VShowSetLanguage : NSObject
- (void)settinglanguage:(showLanguageView)isshow;
@end

 .m文件

#import "VShowSetLanguage.h"

@implementation VShowSetLanguage

/*!
 *  @Author Yunis_song, 14-12-15 19:12:49
 *
 *  @brief  判断是否加载语言选择界面
 *
 *  @param isshow 返回值 yes加载选择界面  no不加载选择页面
 */
- (void)settinglanguage:(showLanguageView)isshow
{
    NSString *language = [[NSUserDefaults standardUserDefaults] objectForKey:VShowUserLanguage];
    if (![VShowUtil isEmptyString:language]) {//判断用户是否已经设置过默认语言 如果不为空则用户已经选择过页面或者app支持当前用户手机设置语言 不展示选择页面
        
        isshow(NO);
        
    }else
    {
        //获取用户当前手机系统设置的语言
        NSString *userLanguage = [VShowUtil getPreferredLanguage];
        
        //如果用户当前设置语言 包含在app预设国际化语言李选择当前国际化语言 相应设置服务器地址
        if ([userLanguage isEqualToString:@"en"] || [userLanguage isEqualToString:@"th"] || [userLanguage isEqualToString:@"zh-Hans"])
        {
            //设置一些对应语言的配置信息 service地址 国际化资源
            [VShowUtil setUserLanguageAddServiceAddress:userLanguage];
            
            isshow(NO);
            
        }else
            //如果用户当前设置语言没有包含在app预设国际化语言 让用户从当前app支持的语言李选择显示的语言。
        {
            isshow(YES);
        }

    }
    
}
@end

未完待续。。。。。

原文地址:https://www.cnblogs.com/yunis/p/4165701.html