提问人:Yousif Ismat 提问时间:9/20/2023 最后编辑:Yousif Ismat 更新时间:9/21/2023 访问量:80
SwiftUI 中的文本本地化无法始终如一地工作
Localization of Text in SwiftUI does not work consistently
问:
我一直在尝试本地化我正在为练习而制作的演示 Sneaker 应用程序,我尝试本地化一些字符串,它们工作得很好,其他一些不起作用,但我设法使用 LocalizedStringKey(_) 使它们工作。但是,这一行没有任何本地化,我不明白为什么。
以下是视图中的文本:
Text("Size: \(orderItem.sneakerSize) | Color: \(orderItem.sneakerColor.colorToString())")
以下是 Localizable.strings 文件中英语的本地化版本:
"Size: %@ | Color: %@" = "Size: %@ | Color: %@";
以下是阿拉伯语的本地化:
"Size: %@ | Color: %@" = "حجم: %@ | لون: %@";
然而,当我尝试在预览模式或实际构建模式下进行测试时,它不会本地化该字符串,谁能解释一下?
答:
1赞
Benzy Neez
9/21/2023
#1
我从您的补充评论中了解到我的建议有所帮助。所以我会把它们变成一个答案:
- 检查数据类型是否与占位符正确对应。
- 如果是 like 的数值类型,则占位符需要类似于 而不是 。
sneakerSize
Int
%lld
%@
- 有关说明符的详细信息,请参阅字符串格式说明符。
- 另请参阅在 SwiftUI 中使用字符串插值进行本地化,了解通过打印 .
LocalizedStringKey
对于阿拉伯语版本,请检查是否有向前/向后混淆。您问题中的示例包括 以及 。
%@
@%
您的本地化密钥似乎与本地化的英文版本相同。这可能使人们很难判断英语本地化是否真的有效。使用更简单的键可能会有所帮助,例如,如果英语本地化也不起作用,请立即注意到。
"SUMMARY %lld %@" = "Size: %lld | Color: %@";
对于您在评论中添加的其他情况,您可能需要更具体地使用格式。我能够让它像这样为英语工作:
Text("DISCOUNT \(orderItem.sneakerItem.discount, specifier: "%.1f")")
"DISCOUNT %.1f" = "You get %.1f%% off";
评论
sneakerSize
Int
%lld
%@
@%
%@