iOS 程序內國際化的一些心得(1)

最近接到需求,原有的app須要作一個程序內的國際化,能夠讓用戶選擇要展現的語言。服務器

but哥但是沒有一點思路。。。。app

腫麼辦。ssh

百度。。。blog

百度下來,取到了一些思路。資源

本身寫到可能有些不盡如人意的地方,煩請各位大牛批評指正。get

現總結以下:it

1,判斷用戶手機設置的語言是否包含在當前app支持的語言裏面。io

若是包含着app支持語言裏面。直接根據這個語言設置配置項。class

若是不包含在app支持語言裏面,彈出語言設置頁面,讓用戶設置。import

    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

未完待續。。。。。

相關文章
相關標籤/搜索