我将我的iPhone应用程序移植到android,现在我遇到了字符串文件的问题.
该应用程序是一个翻译工具,用户可以切换语言,因此所有本地化的字符串都使用两种语言,并且它们独立于操作系统的运行区域.
对于iOS版本,我有不同的文件,如de.strings,en.strings和fr.strings等.对于具有指定语言对的每个目标,我从字符串表中读取字符串,例如对于de-fr,我将在项目中包含de.strings和fr.strings,并在info-list文件中设置字符串表的名称并读取字符串从他们.最后,我有一个项目包含不同的目标(具有不同的信息列表文件),并且所有项目都配置得很好.
我打算在Android平台上做同样的事情,但是
每个项目只允许一个strings.xml吗?
如何设置不同的构建目标?例如,我的de-fr和de-en翻译应用程序实际上是两个应用程序,唯一的区别是语言对.如何设置某些内容以便我可以使用一个项目生成两个应用程序?在XCode中它很简单,但我找不到eclipse的解决方案.
如何为每个目标指定应该读取哪个strings.xml?
感谢您的回答,但请注意,我需要与操作系统区域设置无关的语言设置,即如果用户将操作系统区域设置从en更改为de,我的应用程序仍会显示英文本地化字符串.我问的实际上是如何设置像prebuild这样的东西并为不同的目标加载不同的字符串文件.
我对.stringsdict 文档感到有点困惑(滚动到"本地化属性列表文件").
给定了大量文件,我想显示保存文件或相应保存保存文件.我认为以下内容可行,但事实并非如此.
在代码中:
NSString *string = [NSString localizedStringWithFormat:NSLocalizedString(@"%Save Files", @""), (long)files.count];
Run Code Online (Sandbox Code Playgroud)
在Localizable.stringsdict:
<key>Save Files</key>
<dict>
<key>NSStringLocalizedFormatKey</key>
<string>Save %#@files@</string>
<key>files</key>
<dict>
<key>NSStringFormatSpecTypeKey</key>
<string>NSStringPluralRuleType</string>
<key>NSStringFormatValueTypeKey</key>
<string>ld</string>
<key>one</key>
<string>File</string>
<key>other</key>
<string>Files</string>
</dict>
</dict>
Run Code Online (Sandbox Code Playgroud)
始终显示保存文件,无论计数.
我究竟做错了什么?
假设我们可以在运行时更改Localizable.strings,它放在NSBundle中.在当前时刻,即使我们更改它的内容,NSLocalizedString也会返回旧的(缓存)值.
我已经尝试过的:
我不能做什么(根据定义): - 我不能调和[NSBundle localizableStringForKey:value:table] - 我不能改变宏 - 一般来说,我不能影响任何原始项目代码,只在第4步添加一些东西
这仅用于开发目的.所以,我不需要在AppStore中发布它,所以任何私有方法或解决方案都可以.
所以,问题是.可能有人知道这样做的方法,还是有人给我另一个想法怎么做呢?谢谢.
我们的 iOS 项目具有本地化的字符串,用于在 Xcode 中创建的“西班牙语”(es.lproj)和“西班牙语(拉丁美洲)”(es-419.lproj)。
但是,在 iPhone(美国,最新的 iOS 7)上,西班牙语的唯一语言选项是“Español”和“Español (México)”,没有“Latin America”。当您选择“Español (México)”时,它使用我们应用程序中的“Spanish”字符串,而不是人们所期望的“Spanish (Latin America)”字符串。
经进一步调查,[[NSBundle mainBundle] preferredLocalizations]返回@[@"es"]。即使[[NSBundle mainBundle] localizations]返回包含“es”和“es-419”的数组也是如此。
但是,[[NSUserDefaults standardUserDefaults] objectForKey:@"AppleLanguages"]返回一个包含“es-MX”的数组。
然后是以下表达式:
[NSBundle preferredLocalizationsFromArray:@[@"es-419", @"es"]
forPreferences:@[@"es-MX"]]
Run Code Online (Sandbox Code Playgroud)
返回@[@"es"]。
为什么 Xcode 会给我们“西班牙语(拉丁美洲)”本地化,当您在手机上实际选择唯一的拉丁美洲西班牙语选项时不使用它?
我的应用程序支持4种语言和推送通知.当我向APNS发送推送通知时,我正在发送loc_key&loc-args.现在我需要在loc-args数组中发送本地化字符串,以便在应用程序收到推送通知时我可以在iOS应用程序端翻译它们.
但是当我发送本地化字符串时loc-args,它不是在通知中心显示已翻译的字符串,而是显示本地化的密钥.
我的字符串文件包含以下2条消息:
"WINNER_ALERT"= "Congratulations! %@ won the match & became %@ player";
"ROLE_PROFESSIONAL_LOCALIZED_KEY" = "professional"
Run Code Online (Sandbox Code Playgroud)
服务器发送有效负载
{
aps = {
alert = {
"loc-args" = (
"John",
"ROLE_PROFESSIONAL_LOCALIZED_KEY"
);
"loc-key" = "WINNER_ALERT";
};
badge = 1;
sound = default;
};
}
Run Code Online (Sandbox Code Playgroud)
当我发送上述有效负载然后在iOS通知中心,消息看起来像
Congratulations! John won the match & became ROLE_PROFESSIONAL_LOCALIZED_KEY player
Run Code Online (Sandbox Code Playgroud)
代替
Congratulations! JOHN won the match & became professional player
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我是否可以发送本地化的字符串loc-args?如果是的话,我的有效载荷有什么问题?
提前致谢
apple-push-notifications localizable.strings nslocalizedstring ios7
Xcode无法生成xliff本地化文件,错误本地化无法读取字符串文件.请查看系统日志以获取更多详细信息.有谁知道我在哪里可以找到这些日志?这是Xcode 6.3.2 GM,但我也尝试过6.3.1版本.用6.3.1.错误是在特定文件上,但在该文件内并不是什么不寻常的.此外,我试图删除该文件,但我收到相同的错误,虽然该文件不再存在.有谁想到为什么?
Localizeable.strings如果字符串被转换为 ,如何将 Unicode 转义序列添加到文件中的字符串中NSString?
这是一个(丑陋的)例子:
// Localized string: "\u{200F}Number %@" = "\u{200E}Number %@";
let string = NSMutableAttributedString(string: NSString(format: NSLocalizedString("Number %@", comment: "") as NSString, aNumber as NSNumber)) as String
Run Code Online (Sandbox Code Playgroud)
从这个问题我了解到问题是Localizeable.strings和的不兼容转义序列NSString。
直接在文件中添加 unicode 字符Localizeable.strings不是一个选项,因为我需要插入不是可打印字符的双向语义标记。在大多数翻译程序中它们也会丢失。
我该如何解决这个问题?
我遇到了其他线程,无法找到特定于我的情况的解决方案.
我有三个配置文件(DEV,QA,Prod)
在每个xcconfig文件中,我覆盖了$(product_name)ex:PRODUCT_NAME = MyNameDev
这很好用,但现在我需要用两种语言和三种不同的环境本地化应用程序.
用英语讲:
Prod -> MyName
DEV -> MyNameDev
QA -> MyNameQA
Run Code Online (Sandbox Code Playgroud)
用法语:
Prod -> MyFrenchName
DEV -> MyFrenchNamepDev
QA -> MyFrenchNameQA
Run Code Online (Sandbox Code Playgroud) 有没有办法像这样在 Localizable 文件中加粗一些单词?
"Pending network connection" = "<b>Pending</b> network connection";
Run Code Online (Sandbox Code Playgroud)
我在里面有这个字符串,我只想强调某些单词:
"camSave" = "To complete onboarding:\n1. Tap Save and disconnect to disconnect from the camera.\n2. Connect to the internet.\n3. Log in to Cloud.";
Run Code Online (Sandbox Code Playgroud)
顺便说一句,我想在警报中使用它
localization nsattributedstring localizable.strings ios swift
通过尝试 Swift Packages,我创建了一个新包。现有 Xcode 项目框架目标中的源文件和资源已移至新结构中。
尝试构建时,脚本显示错误:
manifest property 'defaultLocalization' not set; it is required in the presence of localized resources
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题以便我可以创建 Swift 包?
xcode localization localizable.strings swift swift-package-manager