我的Localizable.strings文件已被破坏,我不知道如何恢复它.
如果我将它作为纯文本文件打开,它会以我无法复制的奇怪字符开头.
如果我将文件保留为应用程序版本.如果我进行任何更改,则表示值未正确解释或在编译时出现错误.
Localizable.strings: Conversion of string failed. The string is empty.
Command /Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/Contents/Resources/copystrings failed with exit code 1
Run Code Online (Sandbox Code Playgroud)
我怀疑这是一个编码问题,但我不知道它是如何发生的(可能是SVN应该责备?)也不知道如何解决它.任何提示将更加赞赏.
所以我有这个应用已经在应用商店.为了获得对多语言本地化的支持,我们最近更改了本地化配置.
旧配置:
./Localizable.strings
Run Code Online (Sandbox Code Playgroud)
新配置:
./Swedish.lproj/General.strings
./Swedish.lproj/Localizable.strings
./Swedish.lproj/Settings.strings
Run Code Online (Sandbox Code Playgroud)
如果我删除旧版本并安装新版本,一切都按预期工作,但如果我在安装新版本时将旧版本保留在手机上,则翻译./Swedish.lproj/Localizable.strings将不可见.所以在我看来,旧./Localizable.strings的仍然留在手机上,隐藏新的./Swedish.lproj/Localizable.strings.翻译中./Swedish.lproj/General.strings和./Swedish.lproj/Settings.strings两者都有效.
我担心的是,如果我们发布更新,用户将在安装更新之前被迫卸载应用程序以使翻译生效,这意味着他们将丢失所有已保存的数据.所以你可以看出为什么这个问题具有高优先级.
如果我已正确理解问题的原因,我的问题是如何摆脱./Localizable.strings手机上已有的问题?更一般的问题是如何解决这个问题?
我正在使用Xcode 4.4.您可能都知道,有一个简单的选项可以在Xcode中本地化资源文件.您也可以将plist文件国际化,这是我的方法.
但是从4.4开始它似乎不再适用了.
您所要做的就是以下内容:
<project>-Info.plist文件中添加关键字"本地化",其中添加了一个子数组,您可以将国家/地区代码添加为项目Localizable.strings),如下所示:
然后是模态屏幕,您可以在其中选择plist文件中定义的语言 
<country identifier>.lproj文件夹中.在Xcode 4.4中,您无法选择在plist文件中定义的语言.只能说英语.
我尝试了一切.不想手动本地化.
同样在4.4以下的Xcode版本中,可以使用"+"按钮添加新语言.这是不可能的:看看这个:

有什么建议.或者我是以错误的方式做到的?
有没有办法为项目中的多个目标提供一个basebaseizable.strings文件,并且每个目标还有一个第二个localizable.string文件,它将覆盖并将单个值附加到基本文件中?
编辑
我希望我的应用程序有两个.strings文件 - Localizable.string和Override.strings.如果在OverrideLocalizable.strings中找不到字符串Title.Welcome,那么我希望应用程序在Localizable.strings中搜索Title.Welcome.实质上,将Localizable指定为回退,但默认情况下使用OverrideLocalizable.strings.
在这里输入图像描述在iOS中,我们可以在印地文中更改应用程序本地化吗?我尝试了以下示例,但它只支持info.plist值 https://code.tutsplus.com/tutorials/ios-sdk-localization-with-nslocalizedstring--mobile-11603
我知道有简体中文(zh-Hans)和繁体中文(zh-Hant)。
但是 Xcode 允许本地化中文 ( zh)。
从本地化回退的概念我理解它是简体中文和繁体中文的回退。因此,它在技术上可用于托管简体中文和繁体中文相同的常见中文本地化字符串。
什么是 Xcode 语言环境zh?应该zh是简体中文还是繁体中文?
localization localizable.strings nslocalizedstring ios chinese-locale
我已经在我的应用程序中实现了多语言并Localizable.strings创建了多个文件。
我在文件中拥有所有字符串键和值Localizable.strings (Base),因为如果特定语言字符串文件中缺少特定字符串(例如Localizable.strings (Japanese),文件中缺少某些字符串),则其默认文件会从所有其他语言读取Japanese,因此我希望从Base.
但它没有发生,那是我的问题。
我正在尝试本地化我的iPhone应用程序,我已经尝试向谷歌寻求帮助并在这里查看,但我找不到任何我做错的事情.
我创建了一个Localizable.strings文件,目前只包含:
/*
Localizable.strings
AppName
Created by Joe on 25/10/2011.
Copyright (c) 2011 xxx. All rights reserved.
*/
"DestinationHeader" = "I am going to";
Run Code Online (Sandbox Code Playgroud)
然后我转到XCode右侧的Localization选项卡,并在文件中添加了"English".现在该文件出现在捆绑包中的en.lproj文件夹中.
然后,在视图控制器中,我添加了以下行:
sectionTitle = NSLocalizedString(@"destinationHeader", nil);
Run Code Online (Sandbox Code Playgroud)
但所有似乎正在发生的事情是文本"destinationHeader"出现而不是"我要去".我显然做错了什么,有没有人有任何想法?
谢谢!
:-Joe
我使用Localizable.strings文件并用NSLocalizedString(@"KEY",@"COMMENT")替换我的应用程序中的字符串.
我现在更换了很多字符串,效果很好.我添加了一些字符串,现在我收到以下错误消息:
CopyStringsFile build/Debug-iphoneos/Australia.app/en.lproj/Localizable.strings en.lproj/Localizable.strings cd/Users/regisandre/Desktop/XCode/AUSTRALIAENINT setenv ICONV/usr/bin/iconv setenv PATH"/ Developer /平台/ iPhoneOS.platform/Developer/usr/bin:/ Developer/usr/bin:/ usr/bin:/ bin:/ usr/sbin:/ sbin"/Developer/Library/Xcode/Plug-ins/CoreBuildTasks.xcplugin/目录/资源/ copystrings --validate --inputencoding utf-8 --outputencoding binary en.lproj/Localizable.strings --outdir /Users/regisandre/Desktop/XCode/AUSTRALIAENINT/build/Debug-iphoneos/Australia.app/en .lproj en.lproj/Localizable.strings:字符串转换失败.该字符串为空.en.lproj/Localizable.strings:字符串转换失败.该字符串为空.Command/Developer/Library/Xcode/Plug-ins/CoreBuildTasks.
更新:
你是对的 !这是UTF-8/UTF-16编码的问题.一旦使用genstrings生成文件,就必须避免从其他文件(甚至是Xcode)中复制/粘贴字符串文件,因为它会引起一些编码问题.
一旦使用Xcode生成文件,所有修改都必须通过"直接键入keayboard"直接在文件中完成; 没有复制/粘贴!(除非你确定你复制/粘贴的格式是正确的,但似乎不太容易知道)
localization internationalization localizable.strings nslocalizedstring
我在使用Directory.Exists()包含重音字符的字符串时遇到问题.
这是目录路径: D:\ést_test\scenery.它作为我正在解析的文件中的一个简单字符串进入:
[Area.121]
Title=ést_test
local=D:\AITests\ést_test
Layer=121
Active=FALSE
Required=FALSE
Run Code Online (Sandbox Code Playgroud)
我的代码采用本地值并添加\scenery到它.我需要测试它是否存在(它确实存在)并且只是使用:
if (!Directory.Exists(area.Path))
{
// some handling code
area.AreaIsValid = false;
}
Run Code Online (Sandbox Code Playgroud)
这返回false.我正在做的字符串处理似乎正在替换重音字符.VS2012中的文本可视化器显示了这一点(directoryManager只是一个环绕System.IO.Directory):

显示的警告消息显示如下:

因此似乎没有被识别出重音字符.搜索此问题确实出现了,但主要是关于删除或替换重音字符.我目前正在使用'普通'字符串处理.我尝试过使用,FileInfo但无论如何,路径似乎都被破坏了.
所以我的第一个问题是如何将路径存储到字符串中以便它通过Directory.Exists测试?
这引发了路径名中非拉丁字符的更广泛问题.我有世界各地的用户,所以我可以看到阿拉伯语.俄罗斯人,中国人等在路上.我该如何处理所有这些?