iOS语言本地化以及自动化
来源:互联网 发布:淘宝电脑主机便宜 编辑:程序博客网 时间:2024/06/03 15:31
一、配置需要国际化的语言
选中project->Info->Localizations,然后点击”+”,添加需要国际化/本地化的语言,如下图(默认需要勾选Use Base Internationalization)
二、应用名称本地化/国际化
1、选中Info.plist,按下键盘上的command + N,选择Strings File(iOS->Resource->Strings File)
2、文件名字命名为InfoPlist,且必须是这个名字
3、选中InfoPlist.strings,在Xcode的File inspection(Xcode右侧文件检查器)中点击Localize,目的是选择我们需要本地化的语言
在InfoPlist.strings(english)中加入如下代码:
// Localizable App Name是App在英语环境环境下显示的名称CFBundleDisplayName = "Localizable App Name";
在InfoPlist.strings(Chinese(Simplified))中加入如下代码:
// Localizable App Name是App在英语环境环境下显示的名称CFBundleDisplayName = "国际化App名称";
三、代码中字符串的本地化
字符本地化和App名称本地化过程如出一辙,只是创建的文件名成不一样(连同后缀一起,文件名必须是Localizable.strings),其他步骤完全相同。
在Localizable.strings(english)中加入如下代码:
"login" = "Login";
在Localizable.strings(Chinese(Simplified))中加入如下代码:
"login" = "登录";
使用:loginButton.title = NSLocalizedString(“login”, comment: “login”)
这种方式不友好,稍后介绍自动化生成需要的文件
四、定制字符串本地化
创建XBSTR.strings的文件,使用如下:
NSString *title = NSLocalizedStringFromTable(@”click”, @”XBSTR”, nil);
五、使用脚本读取 Localizable.strings ,然后输出成我们需要的常量格式。
1、选中targets->Build Phases,然后点击”+”,然后 New Run Script Phases
2、将 Run Script 拖动放到在Compile Sources的上面
3、脚本如下:
# -*- coding: utf-8 -*# Localizable.strings文件路径localizableFile="${SRCROOT}/${PROJECT_NAME}/Source/en.lproj/Localizable.strings"# 生成的swift文件路径localizedFile="${SRCROOT}/${PROJECT_NAME}/Source/Utils/LocalizedUtils.swift"# 转换格式awk '{print $1,$2,$1";"}' "${localizableFile}" > "${localizableFile}.tmp"# 将localizable.strings中的文本转为swift格式的常量,存入一个临时文件sed "s/^\"/ static var localized_/g" "${localizableFile}.tmp" | sed "s/\" = \"/: String { return \"/g" | sed "s/;$/.localized }/g" > "${localizedFile}.tmp"# 先将localized作为计算属性输出到目标文件echo -e "import Foundation\n\nextension String {\n var localized: String { return NSLocalizedString(self, comment: self) }" > "${localizedFile}"# 再将临时文件中的常量增量输出到目标文件cat "${localizedFile}.tmp" >> "${localizedFile}"# 最后增量输出一个"}"到目标文件,完成输出echo -e "\n}" >> "${localizedFile}"# 删除临时文件rm "${localizableFile}.tmp"rm "${localizedFile}.tmp"
本地化文件:
"create" = "zhenxiaobin";"login" = "Login";"logout" = "Logout";
输出文件:
import Foundationextension String { var localized: String { return NSLocalizedString(self, comment: self) } static var localized_create: String { return "create".localized } static var localized_login: String { return "login".localized } static var localized_logout: String { return "logout".localized }}
使用:
loginButton.title = .localized_login
六、然后再说说我弄自动化脚本时候遇到的坑
1、脚本拷贝到项目也许会不生效,解决办法,用xcode里面的空格替换一下脚本里的空格。不知道Xcode9 抽的什么疯。
2、注意一下路径问题,Localizable.strings这个路径就不多说了,根据自己的路径修改一下就好了,LocalizedUtils.swift这个输出文件,路径注意一下,前面的路径一定要先创建好,不然会报错,找不到文件。第一次Build,你会发现LocalizedUtils.swift这个文件在项目里没有,客官不要着急,在上一级目录下(如:Utils)Show In Finder,是不是有,没有你打我,然后拖到项目里,就OK了。
每次更新Localizable.strings,记得Build一下。
3、脚本的问题,有时间再开一篇,记录一下。
4、应用内语言切换,稍后会补上。
奉上Demo
- iOS语言本地化以及自动化
- ios本地化以及注意事项
- IOS本地化语言
- IOS 之 本地化语言
- 本地化语言 Localizable iOS
- ios多语言本地化
- iOS实现语言本地化
- iOS本地化语言
- iOS 多语言本地化
- iOS语言本地化/国际化
- iOS NSLocale(本地化语言)
- iOS语言本地化---国际化
- iOS语言本地化
- iOS 手动设置本地化语言
- iOS 本地化多语言支持
- iOS 本地化多语言支持
- iOS语言本地化,中文显示
- iOS语言本地化,中文显示
- 设计模式之《工厂方法模式》
- (17)spring boot的Actuator监控使用
- java 彩票走势图算法
- mac 下修改hosts文件并创建快捷方式
- spring @RunWith
- iOS语言本地化以及自动化
- POJ 1655 树的重心(树形 DP)
- 别急,我来为你普及智能服务机器人那些事......
- CentOS 7.3下Elasticsearch 2.4.1+Kibana 4.6.6+Logstash 2.4.1及插件安装配置
- Webpack(三)前端项目打包步骤
- UIDocumentInteractionController 的使用
- androidstudio打包流程
- 基于2440的Qt环境移植,且开发Qt跨平台程序
- NYOJ 658 字符串右移