IOS 多语言本地化 完美解决方案

多语言本地化,是我们在做IOS项目的时候经常用的,下面根据自己的经验和使用场景,来全面的说说多语言本地化的解决方案。

首先我们要明白本地化的原理和过程,才能更好的理解本地化的方案,本地化主要包括下面几个部分:

  • 本地化应用程序名称
  • 本地化字符串
  • 本地化图片
  • 本地化其他文件

一、本地化应用程序名称,这个只有一种方案:

    • 点击“new file”然后在弹出窗口左侧选择IOS的resource项,在右侧就可以看到“String File”的图标。创建这个文件,命名为“InfoPlist”(一定是这个文件名) 就生成一个InfoPlist.strings文件;
    • 选中InfoPlist.strings 点击 XCode-> View-> Utilities -> File Inspector,在Localization中点“+”,添加chinese (zh-Hans)类型的为简体中文,english 应该会自动添加上。然后在InfoPlish.strings 左边会多出一个三角形,点击展开后可以看到InfoPlish.strings(english)和InfoPlish.strings(chinese)两个版本的文件;
    • 在InfoPlish.strings(english)文件中加入:
    • CFBundleDisplayName ="Program";   其中“Program”为英文应用程序名称,同理在InfoPlish.strings(chinese)文件中加入:
    • CFBundleDisplayName ="应用程序";   其中“应用程序”为中文名称,注意:CFBundleDisplayName加不加双引号都行
    • 编辑Info.plist,添加一个新的属性Application has localized display name, 设置其类型为boolean,并将其value设置为YES即可

二、本地化字符串和本地化图片的解决方案有下面两种:

    • 程序中提供给用户自己选择的机会,用户可以使用按钮等方式自有切换语言,和当前系统的语言没有关系;
    • 根据当前用户当前移动设备的语言自动将我们的app切换对应语言。

第一种做法看似比较简,当时其实想灵活实现也需要费点心思,具体的实现方法如下:

  • 创建多个strings文件,名字不能用Localizable.strings。
  • 多个strings文件如:English.strings/Chinese.strings/German.strings等等。
  • 每个文件中的内容和写法与Localizable.strings类似。
  • 使用方式:NSLocalizedStringFromTable(@"start",@"Chinese", nil)  。
  • 根据用户的操作,来更新页面的多语言显示。
  • 图片的本地化,不同语言获取不同的图片名称即可。

第二种做法,主要分一下几点:

  • 类似“本地化应用程序名称”第一步,点击“new file”然后在弹出窗口左侧选择IOS的resource项,在右侧就可以看到“String File”的图标。创建这个文件,命名为“Localizable”(一定是这个文件名否则后面调用会有一些区别)就生成一个Localizable.strings文件;
  • 类似“本地化应用程序名称”第二第三步,在Localizable.strings(english)文件中加入:
  • "welcome"="Click on the screen to continue...";  

    同理在Localizable.strings(chinese)文件中加入:

    "welcome"="点击屏幕继续...";

    在代码中使用NSLocalizedString(<#key#>, <#comment#>)来读取本地化字符串。

注:图片的本地化,  这里不同语言的图片的名称要一样,但是要放到不同的语言文件夹中。

三、本地化其他文件

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

时间: 2024-10-05 04:41:04

IOS 多语言本地化 完美解决方案的相关文章

【转】iOS多语言本地化(国际化)设置

原文网址:http://www.jianshu.com/p/2b7743ae9c90 讨论的iOS应用中的多语言设置,Ok 一般是两种情况: 1.根据当前设备语言自动切换显示 2.在应用中可进行语言设定 至今,我个人做过的项目中有6个是涉及到多语言的,其中全部都是需要在应用中可进行设置. 其实也没多大关系,我们这里会首先说说根据当前设备语言进行切换界面的显示(这些都是网上能搜到的,我整理下给自己清晰点的步骤以便后续查看罢了).而关于在应用在进行语言设定,其实就是获取当前的语言环境并通过代码进行更

iOS 限制输入字数完美解决方案

关于限制输入字数以前也做过,网上也很多方法. 但都不够完美,以前的测试人员也没千方百计的挑毛病,所以就糊弄过去了. 现在这个项目的测试人员为了找bug真是无所不用其极.... 1.一般方法就是通过UITextField的代理方法 #pragma mark - UITextFieldDelegate - (BOOL)textField:(UITextField *)textField shouldChangeCharactersInRange:(NSRange)range replacementS

iOS开发-多语言本地化和手动切换

App要国际推广,需要支持多语言.可以通过本地化语言和切换来实现.本工程可以不切换系统语言,不重启应用直接切换自定义语言.现在只写中英文,其他语言也是同样处理方法.如果支持语言多,切换时间也不会花长时间,瞬间成功切换. 1.创建工程项目 2.配置项目本地化支持简体中文和英文       工程-PROJECT-info->Localizations,点"+",选择(Chinese(Simplified))添加简体中文,英文Xcode自带有(English),所以不需要再次添加. 3

iOS 优化内存(三)iOS应用程序多语言本地化解决方案

iOS应用程序多语言本地化解决方案 最近要对一款游戏进行多语言本地化,在网上找了一些方案,加上自己的一点点想法整理出一套方案和大家分享! 多语言在应用程序中一般有两种做法: 一.程序中提供给用户自己选择的机会: 二.根据当前用户当前移动设备的语言自动将我们的app切换对应语言. 第一种做法比较简单完全靠自己的发挥了,这里主要讲第二种做法,主要分一下几点: 1.本地化应用程序名称 2.本地化字符串 3.本地化图片 4.本地化其他文件 1.本地化应用程序名称 (1)点击"new file"

[转]iOS应用程序多语言本地化解决方案

最近要对一款游戏进行多语言本地化,在网上找了一些方案,加上自己的一点点想法整理出一套方案和大家分享! 多语言在应用程序中一般有两种做法:一.程序中提供给用户自己选择的机会:二.根据当前用户当前移动设备的语言自动将我们的app切换对应语言. 第一种做法比较简单完全靠自己的发挥了,这里主要讲第二种做法,主要分一下几点: 1.本地化应用程序名称2.本地化字符串3.本地化图片4.本地化其他文件 1.本地化应用程序名称 (1)点击“new file”然后在弹出窗口左侧选择IOS的resource项,在右侧

实现iOS语言本地化/国际化

实现iOS语言本地化/国际化(图文详解) 前言 语言本地化,又叫做语言国际化.是指根据用户操作系统的语言设置,自动将应用程序的语言设置为和用户操作系统语言一致的语言.往往一些应用程序需要提供给多个国家的人群使用,或者一个国家有多种语言,这就要求应用程序所展示的文字.图片等信息,能够让讲不同语言的用户读懂.看懂.进而提出为同一个应用程序适配多种语言,也即是国际化.语言国际化之所以又叫做语言本地化,这是站在每个用户的角度而言的,是指能够让用户本地.本土人群能够看懂的语言信息,顾名思义,语言本地化.其

iOS语言本地化,中文显示

虽然一直相信xcode肯定提供有语言本地化的设置地方,但是一直也没凑着去改!很多的汉化,还是使用代码去控制:比如navagition的return使用代码修改为"返回"! 最近在调用系统相机时,又出现英文的提示与按钮,这次没办法通过代码修改了!所以开始关注本地化,一看简单的两句话就搞定了,省事不少! 打开"info.plist",添加一项"Localized resources can be mixed",值设置为"yes"即

iOS alipay sdk(支付宝) web(wap/网页)回调黑屏,不完美解决方案

不完美解决方案...(黑屏1秒恢复...)  原创保留:http://www.cnblogs.com/Leetvin/p/3932865.html 原因:wap回调 如果加入UINavigationController就会黑屏#if ! __has_feature(objc_arc)    self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController" bundle:nil] autore

iOS 支持中文和英文的语言本地化

今日学习了语言本地化完整的流程,撰此文以记之. 一.创建.strings文件,并本地化. 1.新建项目,创建.strings文件. 2.本地化 3.添加支持的语言 选中PROJECT下的项目->Localization -> 点击+添加.这里添加简体中文的.strings文件. 勾选三个文件,项目中就会创建名为Language.strings(Chinese(Simplified))文件. finder中项目目录下就会创建名为zh-Hans.lproj文件夹. 同样的方式可以创建English