Ios 在国际化我的应用程序之前,如何更改Xcode中的开发语言?
我正在接管一个完全用法语编写的应用程序。代码中的字符串用法语硬编码,故事板中的所有消息都用法语。但是Ios 在国际化我的应用程序之前,如何更改Xcode中的开发语言?,ios,xcode,internationalization,Ios,Xcode,Internationalization,我正在接管一个完全用法语编写的应用程序。代码中的字符串用法语硬编码,故事板中的所有消息都用法语。但是Info.plist中最初的开发区域留给了英语。因此,我将CFBundleDevelopmentRegion更改为fr,以便它与所使用的实际语言相匹配。但是XCode一直告诉我我的开发语言是英语: developmentRegion = fr; hasScannedForEncodings = 0; knownRegions = (
Info.plist
中最初的开发区域留给了英语。因此,我将CFBundleDevelopmentRegion
更改为fr
,以便它与所使用的实际语言相匹配。但是XCode一直告诉我我的开发语言是英语:
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);
我该怎么纠正呢?目标是能够激活基础国际化,并使其使用法语作为基础语言,而不是英语。在项目导航器(右侧)的
支持文件
组下选择Info.plist
文件。然后,在本地化本地开发区域的编辑器视图中
单击“英语”右侧的上下箭头并选择法国
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);
应该是这样。尽管如此,Xcode有时不会更新项目设置的“信息”视图。我可能已经找到了答案
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);
我已经用瑞典语构建了一个应用程序,但是开发语言设置为英语
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);
我手工编辑了MyProject.xcodeproj/project.pbxproj
。有两行是这样的:
91C8245918BDFA6100A9972F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
91C8245918BDFA6100A9972F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/InfoPlist.strings; sourceTree = "<group>"; };
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);
将所有“en”更改为“sv”,如下所示:
91C8245918BDFA6100A9972F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = "<group>"; };
91C8245918BDFA6100A9972F /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = sv; path = sv.lproj/InfoPlist.strings; sourceTree = "<group>"; };
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);
将文件MyProject/en.lproj/InfoPlist.strings
移动到MyProject/sv.lproj/InfoPlist.strings
似乎已经解决了这个问题。现在“开发语言”显示为瑞典语,我可以添加一个英语翻译
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);
添加翻译后,故事板有一个扩展三角形,其中基础语言是现有的瑞典语版本,翻译是英语字符串文件
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);
以下步骤对我有效,但它包括手动编辑
project.pbxproj
文件:
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);
project.pbxproj
文件developmentRegion
): developmentRegion = English;
hasScannedForEncodings = 0;
knownRegions = (
en,
Base,
);
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);
新建:
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);
我创建了一个示例项目,该项目最初使用英语作为默认开发语言创建,然后通过上面的过程进行更新,使用法语作为开发语言
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);
我希望我理解了这个问题。顺便说一句,使用Xcode的GUI实现您想要的功能非常简单,如下所述:下面是一个Ruby脚本,用于使用cocoapods库更改Xcode项目中的开发区域:
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);
require 'fileutils'
require 'Xcodeproj'
filename = ARGV.first
raise "Argument '#{filename}' is not a valid .xcodeproject" unless filename && File.directory?(filename) && File.extname(filename).downcase == ".xcodeproj"
puts "Region to set: "
region = $stdin.gets.chomp
project = Xcodeproj::Project.open(filename)
project.root_object.development_region = region
project.save
puts "#{project.path}", "development_region = #{project.root_object.development_region}"
我想用我自己的“开发者”语言开发这个项目,使用占位符,而不是NSLocalizedString内部的“WLAN不可用”示例中的真实文本,该示例稍后将被翻译成不同的语言,当然包括英语。我不喜欢我必须在代码中写出完整的句子
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);
我刚刚打开了*.xcodeproj文件夹中的*.pbxproj文件,并将以下行更改为:
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);
developmentRegion = Base;
在那之后,英语不再被设定为开发语言,我可以像对待其他语言一样对待它。作为开发人员,您可以编写简短的文本占位符,并将正确的拼写委托给团队中的其他人。这与“基本”语言完全无关。这只定义了当用户的首选语言不存在时将使用的语言。@geon:你在哪里读到的?如果没有可用的用户语言翻译,则不提及默认翻译的选择。@dergab:@geon:嗯,很好地传播信息片段。因此,必须同时处理默认翻译选择(在运行时)和UI文件的基础语言定义(在设计时/预编译时)。@dergab:CfBundledDevelopmentRegion(或“本地化本地开发区域”)在链接到的文档中没有提到。您认为它为什么会影响“基础国际化”?我终于能够更改开发语言了,谢谢!
developmentRegion = fr;
hasScannedForEncodings = 0;
knownRegions = (
fr,
Base,
);