zoukankan      html  css  js  c++  java
  • iOS,本地化(国际化)字符

    iOS字符本地化(国际化)

    1.本地化资源库

    1.1.新建Bundle作为本地化资源库

     

    1.2.将本地化资源库改成如下

     

    1.3.配置各个语言的本地字符(Localizable.strings)资源

    //只能在顶部注释,不要在每一列后面注释,会读取失败导致app崩溃

    //英语
    "Group" = "Group";
    "Name" = "Name";
    //简体中文
    "Group" = "群组";
    "Name" = "一线天";
    //繁体中文
    "Group" = "群組";
    "Name" = "壹線天";

    2.处理本地转换扩展

    2.1.新建Bundle扩展类

     

     

    2.2.实现NSBundle分类方法

    //NSBundle+LocalizationString.h文件

     

    //
    //  NSBundle+LocalizationString.h
    //  LocalizationStringTest
    //
    //  Created by Vie on 2017/1/20.
    //  Copyright © 2017年 Vie. All rights reserved.
    //
    
    #import <Foundation/Foundation.h>
    
    @interface NSBundle (LocalizationString)
    
    
    /**
     根据系统语言返回本地化字符
    
     @param key 字符key
     @return 本地化字符
     */
    +(NSString *)localizationStringForKey:(NSString *)key;
    @end

     

    //  NSBundle+LocalizationString.m文件

     

    //
    //  NSBundle+LocalizationString.m
    //  LocalizationStringTest
    //
    //  Created by Vie on 2017/1/20.
    //  Copyright © 2017年 Vie. All rights reserved.
    //
    
    #import "NSBundle+LocalizationString.h"
    
    @implementation NSBundle (LocalizationString)
    /**
     根据系统语言返回本地化字符
     
     @param key 字符key
     @return 本地化字符
     */
    +(NSString *)localizationStringForKey:(NSString *)key{
     static NSBundle const *bundle=nil;
        if (bundle==nil) {
            // (iOS获取的语言字符串比较不稳定)目前框架只处理en、zh-Hans、zh-Hant三种情况,其他按照系统默认处理
            NSString *language = [NSLocale preferredLanguages].firstObject;
            if ([language hasPrefix:@"en"]) {
                language = @"en";
            } else if ([language hasPrefix:@"zh"]) {
                if ([language rangeOfString:@"Hans"].location != NSNotFound) {
                    language = @"zh-Hans"; // 简体中文
                } else { // zh-Hantzh-HKzh-TW
                    language = @"zh-Hant"; // 繁體中文
                }
            } else {
                language = @"zh-Hans";
            }
            //初始化资源
            bundle=[NSBundle bundleWithPath:[[NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"LocalizationString" ofType:@"bundle"]] pathForResource:language ofType:@"lproj"]];
        }
        return [bundle localizedStringForKey:key value:nil table:nil];
    }
    @end

     

    3.本地化字符key

    3.1.本地化字符key实现

    //  LocalizationKey.h文件

    //
    //  LocalizationKey.h
    //  LocalizationStringTest
    //  本地化字符key列表
    //  Created by Vie on 2017/1/20.
    //  Copyright © 2017年 Vie. All rights reserved.
    //
    
    #define Group   @"Group"
    #define Name    @"Name"

     

    4.使用

    #import "NSBundle+LocalizationString.h"
    #import "LocalizationKey.h"
    
    
     
    NSLog(@"%@|%@",[NSBundle localizationStringForKey:Group],[NSBundle localizationStringForKey:Name]);

    //运行结果

    2017-02-16 11:18:48.589 LocalizationStringTest[11190:1861472] 群组|一线天
  • 相关阅读:
    富数据控件 DetailsView 和 FormView
    富数据控件 LstView(模版、分组)
    ADO.NET 基础(事务、通用的数据工厂)
    文件和流(使用流读写文件)
    ASP.NET 状态管理(Application)
    根据定制的 XML 文件进行随机抽取节
    缓存(缓存依赖)
    文件浏览器
    ASP.NET 状态管理(cookie、Session)
    使用HtmlControl动态创建一个表格
  • 原文地址:https://www.cnblogs.com/douniwanxia/p/6322870.html
Copyright © 2011-2022 走看看