我有一个Xcode ObjC项目,在project.pbxproj中有以下与语言相关的属性
developmentRegion = English;
knownRegions = ( en, Base, sk, cs, );
此外,Info.plist的<key>CFBundleDevelopmentRegion</key>
设置为<string>en</string>
。
所有设计师文件(故事板,视图等)都是用英语设计的。
每当我在项目根文件夹中运行bartycrouch interfaces -p "."
时,我都会更新所有* .strings文件,但设计器文件中的所有字符串都会写入cs.lproj文件夹中的文件(捷克语中的文件)应该是)而不是en.proj文件夹。
我的项目有问题吗?或者有一种方法(参数?)来指定bartycrouch的基本语言吗?
我在项目GitHub(https://github.com/Flinesoft/BartyCrouch/issues/91)上打开了一个问题但两周没有反应,所以我希望我能在这里找到更多活跃用户。
答案 0 :(得分:1)
我已经在相关的GitHub问题上回答了这个问题,但是为了完整起见,我也要在这里进行解释:
以下是BartyCrouch在您的项目中运行时cs.lproj
中发生的更改的摘要:
乍一看,人们可能会想到,为什么BartyCrouch用英语替换了正确的捷克语翻译?为什么不使用斯洛伐克语呢?
正在发生的事情:如果您看一下注释,您会注意到两种语言都是相同的。实际上,当第一次在Xcode中创建Strings文件时,Xcode会自动从XIB或Storyboard中获取值并将其放入注释中。即使您在XIB或Storyboard文件中进行更改,它也永远不会更改注释值,从而使每个条目具有三个不同的值:实际值,注释值和XIB / Storyboard值。最初,后两者是相同的,但是由于Xcode不会更新它们,因此它们会随着时间的流逝而有所不同。
由于我们看到注释中的值是捷克语,因此我可以假设在您第一次让Xcode生成Strings文件时,您的XIB或Storyboard都具有捷克语值。看来您后来改变了这一点,并使XIB或Storyboard中的每个值都为英语。 BartyCrouch具有内置功能,将自动为您更新评论值。这就是为什么我们在上面两种示例语言的注释行中看到的更改。 BartyCrouch的另一个功能是-如果注释值与实际值完全匹配,则还可以更新实际值。由于捷克语翻译的实际价值与评论价值相同,所以这是在这里发生的事情,并使BartyCrouch也更新了该价值并将其替换为XIB或Storyboard文件中找到的新英文价值。
现在我们知道了问题所在,让我们研究一下可以解决此问题和/或在将来防止它发生的事情:
/* Class = "UILabel"; text = "Proveďte synchronizaci."; ObjectID = "RvR-Nz-aYE"; */
需要手动更改为
/* Class = "UILabel"; text = "Sync to get data."; ObjectID = "RvR-Nz-aYE"; */
希望我能帮上忙。