• 应用程序国际化和本地化


      1.国际化.首先创建一个工程,在  Localizations里面添加你需要支持的语言

    5EE9F9E7-E72C-49CB-8BA9-A2F8E0B6D5FD.png

    2.然后对要国际化的东西  如,故事板 右侧的属性 /inpector  ,选择本地化语言  Localization里面勾选上

    那么故事板上的控件都能支持国际化了

    2EC836CE-7DB3-47C0-B36F-15ED122038BC.png                  F3BCEA2A-B814-49DC-A45B-4727481FBB64.png

    3.设置不同的语言环境下的应用显示名称,首先给 infoPlist.strings本地化

    D0C18B40-6A1F-405C-AAC8-6F41F30B58EF.png                   6B02EA75-31DC-4D91-9290-29B0DB5E69AB.png

    例如,在 infoPlist.strings  (English)中设置  英语环境下显示的名称  :  
    CFBundleDisplayName = “EnglishAppName”;  
    在 infoPlist.strings  (Simplified)中设置 中文环境下显示的名称  :  
    CFBundleDisplayName = “中文程序名”;  
    4. 获取本地设备的语言  
     NSUserDefaults * def = [NSUserDefaults standardUserDefaults];  
        NSArray * arr = [def objectForKey:@"AppleLanguages"];  
        NSString * l = [arr objectAtIndex:0];  
        NSLog(@"%@",l);  
    获取当前使用语言  
    NSArray *languages = [NSLocale preferredLanguages];  
    NSString *currentLanguage = [languages objectAtIndex:0];  
    NSLog ( @"%@" , currentLanguage);  

    5. 给控件本地化

    首先创建  Localizable.strings文件注意名称不要乱改

    A41E08F4-E89A-4547-B211-8A87031DA81F.png

    然后对其属性选择本地化 Localization

    B2A57787-6EAF-4641-BF07-2E3A0B3976B7.png

    然后给   Localizable.strings  
    中的英文和中文的文件分别写上不同的  键值对  
    如下:  
    English -localizable.string写上如下:  
    /*  
      Localizable.strings 
      aa 
     Created by ibokan on 14-10-11. 
      Copyright (c) 2014年 xx. All rights reserved. 
    */  
    "string"  = “aaa";  
    "image" = "a.png”;  
     中文情况下写一样的键一样的,值不一样的串即可  
    "string" = "啊啊啊";  
    "image" = "b.png”;  
    读取本地化的字符串:  
     label.text = NSLocalizedString(@"string", nil);//nil是一个注释,可以不用写  
    //UIImage * img = [UIImage imageNamed:NSLocalizedString(@"image", nil)];  
    注意:如果你的strings文件名字不是Localizable而是自定义的话,如wang.strings,那么你就得使用NSLocalizedStringFromTable()来读取本地化字符串:  
    NSLocalizedStringFromTable(@"welcome",@"wang", nil)    
    6.直接给 资源文件本地化: 如图片,音频,视频等等    
    直接选择一个图片  
    这里又分两种方法,第一种和本地化字符串方法类似,把中英文图片的名字分别存到中英文对应的strings文件,然后通过NSLocalizedString)来获取图片名称,如:  
    Localizable.strings(english)文件中加入:  
    "BtnCancel"="BtnCancelEn.png";    
    Localizable.strings(chinese)文件中加入:  
    "BtnCancel"="BtnCancelCn.png";    
    然后在代码中使用NSLocalizedString)来获取图片名称:  
    UIImage *image=[UIImage imageNamed:NSLocalizedString(@"BtnCancel", nil)]];即可  
    CCSprite *btnCancel = [CCSprite spriteWithSpriteFrameName:NSLocalizedString(@"BtnCancel", nil)];    
    btnCancel.position=ccp(s.width/2,s.height/2-40);    
    [self addChild:btnCancel z:2 tag:104];    

    第二种就比较正规化了:点中你要本地化的图片,如“icon.png”,然后XCode-> View-> Utilities -> File Inspector(也就是最右边的属性栏),在Localization中点“+”添加chinese (zh-Hans);在图片左边就会出现一个倒三角,点开就会出现(english)和(chinese)的2张图,并且在项目文件夹中会出现en.lproj文件和zh-Hans.lproj文件;en.lproj文件存放的是英文版图片,zh-Hans.lproj存放的是中文版图片,中英文图片名字一样,我们在文件夹中直接替换图片就可以了,最后使用时直接使用正常名字就行了,如:“icon.png”。

    F7699BCB-4380-43B9-A100-7E2E52575406.png

    点开工程,可以看到了 3个语言的 工程目录:

    1453F2FD-23CD-4810-835C-0B4787A1F3D0.png

    然后在  en 和 zh-Hans目录中替换同名的  图片即可,重启应用

    56D94743-FA30-449C-92E9-D83CFCB4AFF4.png

    7.本地化其他文件

    本地化其他文件和本地化图片第二种方法类似,先在Localization中添加语言,然后把对应版本拷贝到en.lproj和zh-Hans.lproj文件夹中,最后引用就行了。

    8.其他方法:

    使用  Object ID给 他附上字符串,注意,如果在代码中对同一个  Label也设置了 text那么将会覆盖之前设置的文本

    78CE3A01-8780-4719-8FA3-C34710304085.png

    复制  Object ID 

    A17470AF-B7A5-4200-87EF-4A2B45462F0B.png

     在两个 Main.string分别写上: "Qub-Cw-tR8.text" = “中文 文本显示在 label上”; "Qub-Cw-tR8.text" = “English Text”;   

  • 相关阅读:
    SignalRMvc的简单例子
    CTE递归查询
    数据库表设计(邻接表、路径枚举、嵌套集、闭包表)
    EF事务
    context日志
    Context连接和断开的情况下的CRUD操作
    Sql语句拼接(EXEC和sp_executesql的区别)
    实体框架中的变更跟踪
    sql server 添加字段并且赋默认值和说明
    C# .ToString() 格式化
  • 原文地址:https://www.cnblogs.com/fengmin/p/5378097.html
Copyright © 2020-2023  润新知