• 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
    

    未完待续。。。。。

  • 相关阅读:
    mysql导入导出数据过大命令
    thinkphp条件查询
    php表单提交安全方法
    ubuntu软件(查看文件差异)
    thinkphp if标签
    thinkphp导出报表
    jquery.easing.js下载地址
    水平手风琴切换效果插件亲自试过很好用
    li ie6/7 3px bug
    placeholder兼容IE6-9代码
  • 原文地址:https://www.cnblogs.com/yunis/p/4165701.html
Copyright © 2020-2023  润新知