包括app名称和各种权限的提示文字。

创建一个 “.strings” 扩展名的文件
来本地化字符串,需要把这些字符串全部放在一个单独的文件中。它将会在包中简单地引用这些字符串,而不是在实现、使用的方法中进行硬编码。
Xcode使用带有 “.strings” 扩展名的文件来存储和检索 程序中使用的所有字符串,以及支持的每种语言。根据iOS设备当前所使用的语言,在代码中一个简单的方法调用将会查找并返回符合设备语言要求的字符串。点击右键,选择“New File…”,选择“iOS”对应的“Resource”中的“Strings File”,如图:
点击“Next”,为文件命名为InfoPlist.strings,然后点击“save”。
创建完“InfoPlist.strings”(命名随意~),工程目录结构文件如下,单击“InfoPlist.strings”,查看右边的属性,在Localizable栏添加语言。如图:


添加之后,效果如下:

这个时候就可以在对应语言的“InfoPlist.strings”文件中,添加所支持的字符串了。
中文对应的文件里添加:
"CFBundleDisplayName" = "App名字";
"NSCameraUsageDescription" = "App 需要访问您的相机来扫描二维码绑定设备";
"NSContactsUsageDescription" = "App 需要访问您的通讯录来实现通讯录备份";
"NSPhotoLibraryAddUsageDescription" = "App 需要访问您的相册来保存图片或视频";
"NSPhotoLibraryUsageDescription" = "App 需要访问您的相册来发送图片或扫描二维码";
"NSLocationWhenInUseUsageDescription" = "App 需要您允许定位以把位置保存到照片中";
英文对应的文件里添加:
"CFBundleDisplayName" = "=App Name";
"NSCameraUsageDescription" = "App needs access to your camera to scan QR code binding devices";
"NSContactsUsageDescription" = "App needs to access your address book to achieve address book backup";
"NSPhotoLibraryAddUsageDescription" = "App needs access to your photo album to save images or videos";
"NSPhotoLibraryUsageDescription" = "App needs to access your photo album to send pictures or scan QR code";
"NSLocationWhenInUseUsageDescription" = "App requires you to allow positioning to save the location to the photo";
创建一个“Localizable.strings” 文件(点击右键,选择“New File…”,选择“iOS”对应的“Resource”中的“Strings File”)。

注意:Localizable.strings 是系统默认名字,不能更改。
添加语言在Localization.strings 中,按照"key" = “value"的格式。在使用时,用NSLocalizedString(@“key”, @”")读取内容。
Localization.strings (English)文件中,添加:
"第一!绝对不意气用事!" = "The first!Absolutely not impulsive!";
"第二!绝对不漏判任何一件坏事!" = "The second!Definitely not missing any bad thing!";
"第三!绝对裁判的公正漂亮!" = "The third!Absolutely the referee just beautiful!";
Localization.strings (Chinese)文件中,添加:
"第一!绝对不意气用事!" = "第一!绝对不意气用事!";
"第二!绝对不漏判任何一件坏事!" = "第二!绝对不漏判任何一件坏事!";
"第三!绝对裁判的公正漂亮!" = "第三!绝对裁判的公正漂亮!";
如图所示:


调用:
NSString * label_Str1 = NSLocalizedString(@"第一!绝对不意气用事!", nil);
NSString * label_Str2 = NSLocalizedString(@"第二!绝对不漏判任何一件坏事!", nil);
NSString * label_Str3 = NSLocalizedString(@"第三!绝对裁判的公正漂亮!", nil);
NSString * label_Str = [NSString stringWithFormat:@"%@\n%@\n%@",label_Str1,label_Str2,label_Str3];
UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(10, 240, self.view.frame.size.width, 120.f)];
label.text = label_Str;
//自动换行
label.numberOfLines = 0;
[self.view addSubview:label];
优化: 在pch头文件中,定义一个国际化对应的宏!
//宏定义国际化字符
#define NSLocalString(a) (NSLocalizedString(a, nil))
使用:
NSString * label_Str1 = NSLocalString(@"第一!绝对不意气用事!");
判断支持的语言、当前语言:
NSArray *languages = [NSLocale preferredLanguages];
NSLog(@"支持的languages:%@",languages);
NSString *currentLanguage = [languages objectAtIndex:0];
NSLog(@"当前语言currentLanguage:%@",currentLanguage); //日语:ja-CN、法语:fr-CN、fr-CA
项目实现国际化功能,编译时遇到错误,read failed: Couldn’t parse property list because the input data was in an invalid format。
数据格式错误一般会有下面几种情况:
末尾少了分号
字符使用了全角字符(中文字符)
中间少了 =
少了双引号或者引号没有成对出现
文本中出现了不必要的特殊字符
这是个小问题,主要看怎么快速查找出问题,下面给出三种方法
最简单最直接的方式,肉眼检索,找到问题改正。
这种方式一般适用于文件小,内容少的情况。
如果内容多,有十几个国家的翻译文件,这种方法显然不合适。
把翻译文件中的内容每次注释掉一半,再编译,如果没有报错,问题就出现另外一半。将另外一半再注释掉一半,再编译,如此重复也能快速的排查出问题所在。
Localizable 是 Mac 上的一款桌面工具,在商店搜索 Localizable 就可以找到,使用方式也很简单,只需要将 Localizable.strings 文件拖到对应区域就可以,然后会反馈哪一行格式有问题,对应解决就好,非常方便。
我正在寻找执行以下操作的正确语法(在Perl、Shell或Ruby中):#variabletoaccessthedatalinesappendedasafileEND_OF_SCRIPT_MARKERrawdatastartshereanditcontinues. 最佳答案 Perl用__DATA__做这个:#!/usr/bin/perlusestrict;usewarnings;while(){print;}__DATA__Texttoprintgoeshere 关于ruby-如何将脚
这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下
几个月前,我读了一篇关于rubygem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:
我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的
?博客主页:https://xiaoy.blog.csdn.net?本文由呆呆敲代码的小Y原创,首发于CSDN??学习专栏推荐:Unity系统学习专栏?游戏制作专栏推荐:游戏制作?Unity实战100例专栏推荐:Unity实战100例教程?欢迎点赞?收藏⭐留言?如有错误敬请指正!?未来很长,值得我们全力奔赴更美好的生活✨------------------❤️分割线❤️-------------------------
嗨~大家好,这里是可莉!今天给大家带来的是7个C语言的经典基础代码~那一起往下看下去把【程序一】打印100到200之间的素数#includeintmain(){ inti; for(i=100;i 【程序二】输出乘法口诀表#includeintmain(){inti;for(i=1;i 【程序三】判断1000年---2000年之间的闰年#includeintmain(){intyear;for(year=1000;year 【程序四】给定两个整形变量的值,将两个值的内容进行交换。这里提供两种方法来进行交换,第一种为创建临时变量来进行交换,第二种是不创建临时变量而直接进行交换。1.创建临时变量来
1.错误信息:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:requestcanceledwhilewaitingforconnection(Client.Timeoutexceededwhileawaitingheaders)或者:Errorresponsefromdaemon:Gethttps://registry-1.docker.io/v2/:net/http:TLShandshaketimeout2.报错原因:docker使用的镜像网址默认为国外,下载容易超时,需要修改成国内镜像地址(首先阿里
作为新的阿里云用户,您可以50免费试用多种优惠,价值高达1,700美元(或8,500美元)。这将让您了解和体验阿里云平台上提供的一系列产品和服务。如果您以个人身份注册免费试用,您将获得价值1,700美元的优惠。但是,如果您是注册公司,您可以选择企业免费试用,提交基本信息通过企业实名注册验证,即可开始价值$8,500的免费试用!本教程介绍了如何设置您的帐户并使用您的免费试用版。关于免费试用在我们开始此试用之前,您还必须遵守以下条款和条件才能访问您的免费试用:只有在一年内创建的账户才有资格获得阿里云免费试用。通过此免费试用优惠,用户可以免费试用免费试用活动页面上列出的每种产品一次。如果您有多个帐
print"Enteryourpassword:"pass=STDIN.noecho(&:gets)puts"Yourpasswordis#{pass}!"输出:Enteryourpassword:input.rb:2:in`':undefinedmethod`noecho'for#>(NoMethodError) 最佳答案 一开始require'io/console'后来的Ruby1.9.3 关于ruby-为什么不能使用类IO的实例方法noecho?,我们在StackOverflow上
关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭11年前。Improvethisquestion我不经常使用ruby-通常它加起来相当于每两个月或更长时间编写一次脚本。我的大部分编程都是使用C++进行的,这与ruby有很大不同。由于我与ruby之间的差距如此之大,我总是忘记语言的基本方面(比如解析文本文件和其他简单的东西)。我想每天练习一些基本的东西,我想知道是否有一些我可以订阅的网站,并且会向我发送当天的Ruby问题或类似的东西。有人知道这样的站点/Internet服务吗?