美文网首页
iOS 本地化总结

iOS 本地化总结

作者: Rui哥 | 来源:发表于2018-12-28 16:07 被阅读15次

本文设计到的本地化,均来自自己实践, 在此做个笔记,方便自己复习也方便他人学习.

在iOS中涉及到本地化的场景主要有以下几种:

1> app 中内容(图片/文字)的本地化
2> 系统配置文字本地化(后面补写)
3> 启动图片本地化(后面补写)
4> xib / storyboard 本地化(后面补写)
5> 强制默认 某种语言 (后面补写)
6> 批量生成 本地化键值对文件,供翻译人员翻译




一、 app 中内容(图片/文字)的本地化

1、 让app 支持多国语言
PROJECT->Info->Localizations中点击下方的小->“+” 添加需要添加的语言,本文中以简体中文和英文为例。(国际化的所有操作,都需要这一步作为前提。)

Snip20181228_1.png

2、 创建本地化文件

Snip20181228_4.png


Snip20181228_5.png



Snip20181228_6.png

3、本地化使用

NSString *key = @"Cancle";
    NSString *tableName = @"Localization";
    NSString *describe = @"按钮的标题";
    
    
    
    // 方式1:
    // 在名称为 tableName 的本地化文件中, 去查找 key 对应的文字
    // 当在对应文件中没找到 key 对应的文字时, 默认值就是 key
    // describe 是对 key 对应的文字的描述, 便于翻译人员理解含义,给出正确的翻译
    // 当 tableName 为nil 时, 会自动的去 名为Localization 的本地化文件中查找对应的文字
    NSString *localStr =  NSLocalizedStringFromTable(key, tableName, describe);
    NSLog(@"localStr : %@",localStr);
    
    
    // 方式2:
    NSBundle *bundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"zh-Hans" ofType:@"lproj"]];
    // 在bundle 中的, 名为tableName的本地化文件, 中去查找key对应的本地化文字
    NSString *localStr2 = NSLocalizedStringFromTableInBundle(key, tableName, bundle, describe);
    NSLog(@"localStr2 : %@",localStr2);

4、本地化匹配原理,经过测试得出以下结论(实际上网上有说没有的语言默认使用base 文件是错误的):

    1. 当app 支持本地化后, app 会去手机的 语言与地区 查找当前的首选语言: 简体中文, 英文, 日文...
    1. 根据查找的首选列表中的语言 匹配app 中的本地化文件, 如果首选语言中第一个就匹配上对应的文件,
      则根据之前的 key 来查找对应的本地化字符串,找到了就用找到的值,找不到就用默认的值(一般就是key值).
    1. 如果第一个语言没有匹配上本地化文件就挨着挨着匹配,第二个, 第三个,以此类推的匹配本地文件直到匹配上.
  • 4.如果所有的 '首选语言' 都没匹配上就查看 app 中infoplist的 CFBundleDevelopmentRegion 对应的值(en / zh-Hans ...) 来匹配本地文件

Snip20181228_7.png



Snip20181228_9.png

6、批量生成 本地化键值对文件,供翻译人员翻译

方式1:

根据 xxx.m  yyy.m 中的key 和 解释, 自动生成本地化键值对
genstrings  xxx.m  yyy.m

方式2: 文件批量化生成指令

find . \( -name '*.m' -o -name '*.h' \) -print0 | xargs -0 genstrings -o en.lproj

// 注意:en.lproj 是导出的目标文件夹, 在执行命令前必须要有, 也可以是其他的名字
find . \( -name '*.m' -o -name '*.h' \) -print0 | xargs -0 genstrings -o locOutput

参看文件:
https://www.cnblogs.com/yanzheng216/p/8674722.html
https://www.jianshu.com/p/f8edd7b7a217

相关文章

  • iOS 本地化存储

    简介 iOS中常常会用到本地化存储,下面就总结一下常用的几种本地化存储方式 1. iOS数据存储的几种方式 Pre...

  • iOS - 本地化

    iOS - 本地化 准备 项目添加本地化:Project - Info - Localizations - 添加需...

  • iOS 多国语言本地化与App内语言切换(Swift)

    iOS 多国语言本地化与App内语言切换(Swift) iOS 多国语言本地化与App内语言切换(Swift)

  • iOS 本地化总结

    本文设计到的本地化,均来自自己实践, 在此做个笔记,方便自己复习也方便他人学习. 在iOS中涉及到本地化的场景主要...

  • iOS语言国际化

    iOS 项目本地化1 项目名称本地化2 项目中字符串的本地化3 项目中的图片的本地化(可以归到字符串的本地化 不同...

  • 2018-02-08

    iOS开发 App本地化(国际化)笔记

  • iOS 本地化入门教程

    iOS 本地化入门教程 iOS应用的本地化原理非常简单,是通过strings类型的文件,为同一种语言的不同翻译设置...

  • iOS 数据本地化(开篇)

    iOS Application的文件目录: 何为数据本地化? 数据本地化:又名持久化,存储在磁盘本地当中。 为何要...

  • ♦️ iOS 名称及内容本地化

    好坑呀找了许久的名称本地化真难找,这里就介绍下应用名称和内容本地化 一.iOS名称本地化(根据系统语言修改App的...

  • NSLocalizedString轻松实现中英文切换

    iOS本地化 NSLocalizedString的使用 首先 NSLocalizedString的定义 NSLoc...

网友评论

      本文标题:iOS 本地化总结

      本文链接:https://www.haomeiwen.com/subject/dmoslqtx.html