`
auauau
  • 浏览: 172159 次
社区版块
存档分类
最新评论

[转]如何让你的iPhone程序支持多语言环境

    博客分类:
  • iOS
阅读更多
原文: http://www.cocoachina.com/index.php/archives/cocoachina_161.html

我们知道,Cocoa程序是完全支持多语言的,包括iPhone中的程序。这里简单介绍一下制作多语言iPhone程序的方法,同时也是iPhone中显示中文的最好办法。这种方法在Toolchain和官方SDK都适用。


一、XCode中支持多语言

如果你使用XCode,那么方法非常简单:

在项目中点右键,选择Add->New File

在列表中选择Strings File

可以叫做Localizable.strings,也可以取别的名字,比如MyApp.strings

选中MyApp.string,按command+i,点击左下方的Make File Localizable,你会看到General中的Localizations里面已经有了English。

点击下面的Add Localization,添加一个zh_CN(简体中文)和一个zh_TW 或者 zh_HK(繁体中文)。注意zh_Hans(简体中文)和zh_Hant(繁体中文)在Mac中可以正确识别,但是在iPhone中不能正确识别。

如果你想支持别的语言,可以添加:

日语:Japanese
德语:German
西班牙语:Spanish
法语:French

.strings文件的内容可以是标准的plist格式,也可以是旧的列表格式:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>mykey</key>
    <string>myvalue</string>
        ….
</dict>
</plist>

字符串如果要换行的话,直接按回车换行,不要写成\n这种形式。

或者直接使用旧式的列表格式:
"mykey" = "myvalue";
…

注意每行后面加分号。

如果你使用的是Localizable.strings,那么你在程序中可以这样获取字符串:
NSLocalizedString(@"mykey", nil)


如果你使用的是自定义名字的.strings,比如MyApp.strings,那么你在程序中可以这样获取字符串:
 
NSLocalizedStringFromTable (@"mykey",@"MyApp", nil)


这样即可获取到"myvalue"这个字符串,可以是任何语言。

如果你使用的是官方的iPhone SDK,那么项目中包含这个.strings就可以直接使用了,如果你使用的是toolchain,那么需要修改一下Makefile:

增加

LANG_FILES=$(wildcard *.lproj)
LANG_FILES_ABS=$(addprefix $(SRCROOT)/,$(LANG_FILES))
RESOURCES=Resources


找到

$(APP_ABS): $(INFOPLIST_ABS)


在最后一行增加:

cp -R $(LANG_FILES_ABS) $(APP_ABS)/$(RESOURCES)


这样即可让你的iPhone程序支持多语言环境了。 当然如果你不怕麻烦,也可以每次都手工把这些.lproj目录复制到编译好的Bundle里,也是一样的。
二、在其他开发环境支持iPhone多语言环境


如果你使用Windows或者Linux编译iPhone toolchain,那么你需要这样做:

在编译好的iPhone程序的Bundle(比如MyApp.app这个目录)里建一个Resources目录,然后分别建立:
English.lproj/
zh_CN.lproj/
zh_TW.lproj/
….
每个语言的目录放一个.strings文件。比如MyApp.strings 保存成UTF-8编码(文件名在不同语言的目录中要一致)

字符串的获取方法和上文相同,你也可以通过修改Makefile在编译的时候自动将.strings资源文件的各个目录复制到程序的Bundle里。

另外,在iPhone程序中,语言资源目录既可以放在Resources目录里,也可以直接放在Bundle里。

这种方法的好处很明显:因为iPhone OS中已经内建了多语言的支持,为什么不把你的程序也做成更多人可以使用的呢?另外,这样做还可以避免使用传统的@"中文"显示为乱码的问题(因为NSString字符串的这种创建方法只支持7Bit ASCII码)。
分享到:
评论

相关推荐

    iPhone支持SDK 10.1

    iOS SDK 10.1 是苹果公司为开发者提供的一个重要的软件开发工具,它允许程序员使用Objective-C、Swift等编程语言创建适用于iPhone、iPad等iOS设备的应用程序。这个SDK(Software Development Kit)包含了Xcode集成...

    iPhone应用程序编程指南 中文

    ### iPhone应用程序编程指南知识点 #### 一、介绍 **谁应该阅读本文?** - 对于希望为iPhone开发应用程序的专业开发者来说,本指南是一份必备参考资料。 - 适用于那些熟悉编程语言如Objective-C或Swift,并对iOS ...

    最新 iPhone 应用程序开发全教程.pdf

    16. **应用本地化**:为了扩大应用的受众范围,本地化成为了一个重要的环节,本节讲解了如何制作多语言版本的应用。 通过以上内容的学习,读者将能够全面掌握 iPhone 应用程序开发所需的技能,并具备开发出实用且...

    iPhone 开发应用程序

    总的来说,《Learning iPhone Programming》涵盖了iPhone应用程序开发的各个方面,从基础的编程语言到复杂的框架和工具,再到发布策略,是想要投身iOS开发者的宝贵资源。通过深入学习和实践,你将能够创造出独具特色...

    ios国际化 多语言支持

    多语言支持可以让应用程序根据用户的语言设置自动切换到对应的语言环境。下面是使用多语言支持来实现国际化的步骤: 1. 新建 Windows-base Application,打开 main.m 文件,在 main 函数中增加代码来获取用户默认...

    iphone 的五子棋程序

    标题中的“iphone 的五子棋程序”指的是一个在苹果iPhone平台上开发的游戏应用,它允许用户在手机上玩经典的五子棋游戏。五子棋是一种双人对弈的策略游戏,目标是在棋盘上先连成五子直线(横、竖或斜线)的一方获胜...

    iPhone三维程序设计(Iphone 3D Programming)

    ### iPhone三维程序设计:基于OpenGL ES的图形应用程序设计 #### 一、概述 《iPhone三维程序设计:基于OpenGL ES的图形应用程序设计》是一本专为iOS开发者编写的指南书籍,旨在帮助开发者掌握如何利用OpenGL ES在...

    iphone rss fun 小程序

    8. **离线阅读**:为了提高用户体验,小程序可能还支持离线阅读功能,允许用户在有网络时下载内容,然后在无网络环境下查看。 9. **数据同步**:如果用户在不同的设备上使用该小程序,数据同步功能就显得尤为重要。...

    iPhone SDK

    它包含了Xcode集成开发环境(IDE)、iOS模拟器、Objective-C和Swift编程语言支持、Cocoa Touch框架以及一系列开发工具,让开发者能够利用Apple的硬件和操作系统特性来构建功能丰富的移动应用。 描述中提到“对刚...

    Beginning iPhone Development: Exploring the iPhone SDK

    10. **应用偏好设置与本地化**:让读者了解如何为应用添加偏好设置选项,并支持多种语言版本,扩大应用的覆盖范围。 11. **综合案例分析**:通过一系列实战项目,巩固所学知识,提高解决实际问题的能力。 #### 三、...

    iOS实现多语言

    在iOS应用开发中,实现多语言支持是一项基本且重要的任务,尤其对于面向全球用户的软件来说。这使得应用程序能够根据用户设备的语言设置,显示相应的文本和图像,提供更加友好的用户体验。下面将详细介绍如何在iOS中...

    iphone goole地图开发程序

    综上所述,“iPhone Google地图开发程序”是一个涉及广泛技术知识的项目,涵盖了从基础的iOS开发到高级的地理位置服务集成等多个方面。通过这个项目,开发者不仅可以提升Swift编程技能,还能深入理解iOS应用的架构和...

    xcode编写iphone电子琴程序

    在本主题中,我们将深入探讨如何使用Xcode编写iPhone电子琴程序。这是一份基于清华大学出版的《30天精通iPhone编程》一书中的源代码,适用于初学者学习iOS编程。通过这个项目,你可以了解iOS应用程序的基本架构,...

    MacOS应用程序模拟你的iOS _ ipad或iphone模拟器设备位置支持WatchOS和TvOS

    标题中的“MacOS应用程序模拟你的iOS _ ipad或iphone模拟器设备位置支持WatchOS和TvOS”揭示了这个软件工具的主要功能,它允许开发者在Mac上模拟iOS设备(包括iPad和iPhone)的位置,甚至扩展到Apple WatchOS和TvOS...

    轻松学iPhone开发

    同时,这一篇也会详细介绍iOS开发环境的搭建,包括如何安装Xcode,这是Apple官方提供的集成开发环境(IDE),用于编写iOS和macOS应用程序。此外,书中会讲解如何使用iPhone Simulator,这是一个强大的工具,开发者...

    iphone创意开发入门与实践总结

    - **Xcode IDE**:这是苹果官方提供的集成开发环境,支持iPhone OS的开发。它不仅提供了代码编辑、编译和调试的功能,还支持在实际设备或模拟器上运行和调试程序。 - **iPhone模拟器**:在没有实际设备的情况下,...

Global site tag (gtag.js) - Google Analytics