如何使用格式本地化 NSString。
int value = 20;
NSString *str = @"hello";
textLabel.text = [NSString stringWithFormat:@"%d %@", value, str];
Run Code Online (Sandbox Code Playgroud)
我试过
textLabel.text = [NSString stringWithFormat:NSLocalizedString(@"%d %@", @"%d %@"), value, str];
Run Code Online (Sandbox Code Playgroud)
但没有用。任何帮助表示赞赏。
是否可以找到 iOS 项目中可用的所有本地化表?
背景:
在一个基于 Swift 的 iOS 项目中,我使用多个本地化.strings文件。例如,一个文件包含不同项目中使用的通用字符串,一个文件包含项目特定字符串等。
使用自定义本地化方法可以很好地工作,该方法检查是否在文件/表 A 中找到给定字符串,如果未找到翻译,则继续在文件/表 B 中搜索:
func localizedString(forKey key: String) -> String {
// Search in project specific, default file Localizable.strings
var result = Bundle.main.localizedString(forKey: key, value: nil, table: nil)
// If now translation was found, continue search in shared file "Common.strings"
if result == key {
result = Bundle.main.localizedString(forKey: key, value: nil, table: "Common")
}
if result == key {
result = Bundle.main.localizedString(forKey: key, value: nil, table: "OtherFile")
} …Run Code Online (Sandbox Code Playgroud) 试图与客户解决辩论.我没有在应用程序中本地化字符串和图像,并且在3周定义和发现期间没有出现.他们似乎认为这是一个基本的最佳实践,它应该默认完成.我不同意,特别是如果没有计划的语言.
好像你会留下这个用户的需求
所以,我想请社区关注这个并告诉我你是否默认本地化你的iPhone应用程序?
我要求这不仅可以帮助我理解我可能错过的地方,而且还可以帮助他人将来被视为"默认"和"最佳实践"
我正在尝试本地化我的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
我写这篇文章是因为这个问题让我发疯了.
我有同样的问题尝试使用带参数的NSLocalizedString在UILabel中打印相同的文本(从右到左像波斯语).我的代码看起来像这样:
label.text = [NSString stringWithFormat:NSLocalizedString(@"The trick belongs to %@",nil),user];
Run Code Online (Sandbox Code Playgroud)
在波斯语的我的字符串文件中,我尝试使用它
"The trick belongs to %@" = " %@ ??? ?? ??? ???";
"The trick belongs to %@" = "%@ ????? ???? ?? ??";
"The trick belongs to %@" = "@% ????? ???? ?? ??";
"The trick belongs to %@" = "????? ???? ?? ?? @%";
"The trick belongs to %@" = "????? ???? ?? ?? %@";
Run Code Online (Sandbox Code Playgroud)
所有这种类型的表格总是打印:
"Mariaبرندهکارتهاشد"但必须显示为 "برندهکارتهاشدMaria"
提前谢谢了
在 iOS 中,是否可以覆盖当前在手机上设置的语言环境并使其在我的应用程序中使用不同语言环境的字符串?
我想用 swift 语言实现故事板本地化。(意味着我想本地化以修复标签和按钮文本)
我已经知道 NSLocalizedString 但我不想编码修复文本标签
例如
NSLocalizedString("Welcome", comment: "")
Run Code Online (Sandbox Code Playgroud)
我已经为特定语言添加了 Localizable.strings 文件和 Main.string 文件。但我无法成功实施本地化
我遇到了一个问题,即NSLocalizedString总是返回大写的字符串,而不管其输入如何。本地化正在正常进行,我以为我做了引起这种情况的事情,但我似乎无法弄清楚到底发生了什么。
这是我的代码:
func localize(_ str: String) -> String {
print("str in: \(str)")
return NSLocalizedString(str, comment: "")
}
Run Code Online (Sandbox Code Playgroud)
我这样称呼它:
let txt = self.localize("Question")
print("txt = \(txt)")
Run Code Online (Sandbox Code Playgroud)
输出:
str in: Question
txt = QUESTION
Run Code Online (Sandbox Code Playgroud)
我尝试过的事情:
我已经grep了我所有的.strings文件,并确认其中没有
“ QUESTION”。
从模拟器中删除了应用,然后重新运行
将传入字符串更改为任何文件中都不存在的字符串,例如“ randomxxyxxy”
我尝试在这个问题上搜索了很长时间,但找不到类似该问题的任何东西。
任何帮助表示赞赏,谢谢
我正在尝试解决一个看似简单的问题:在 SwiftUIText视图中向用户显示免费试用条款。我设置了一个单位字符串"Week"和 a value,可以从 1 切换到 2。为了处理复数,我利用了 iOS 15 上的自动语法协议。我的Localizable.strings文件中已经准备好了一个字符串,如下所示:
"Subscription period: %lld %@" = "^[%lld ^[%@](grammar: { partOfSpeech: \"noun\" })](inflect: true)";
Run Code Online (Sandbox Code Playgroud)
为了构建字符串,我需要使用字符串插值来添加单词“free”。我知道在字符串文件中添加单词可以解决问题,但我不想这样做。我想普遍使用该字符串,不一定与免费试用有关。我不明白为什么我不能调用一些 init,向它传递一个密钥,并返回一个我可以根据需要进行插值的纯字符串。我已经尝试了很多方法,在所附的代码片段中展示了这些方法。要么找不到该字符串,要么未应用自动语法协议。似乎有String.LocalizationValue.StringInterpolation结构,但我不知道如何使用它,因为没有任何文档。我究竟做错了什么?我将不胜感激任何帮助!
"Subscription period: %lld %@" = "^[%lld ^[%@](grammar: { partOfSpeech: \"noun\" })](inflect: true)";
Run Code Online (Sandbox Code Playgroud)
您可以在此处下载示例项目。
我使用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