我正在学习将我的应用本地化为简体中文。我正在按照本教程进行操作。
因为本教程基于Obj-C,所以格式化后的字符串可以这样写:
"Yesterday you sold %@ apps" = "Ayer le vendió %@ aplicaciones";
“你喜欢?” =“〜Es bueno?〜”;
但是我正在使用Swift。而且在Swift中,我认为您不能%@用来表示在那里放置了一些东西。我们有字符串插值对吗?
%@
我的应用与数学有关。我想在表格视图单元格的详细标签中显示哪些输入用于计算结果。例如
-------------- 1234.5678 From x, y <---- Here is the detailed label --------------
此处的From x, y意思是“根据x和y计算结果”。我想将其翻译成中文:
From x, y
从 x, y 得出
在此之前,我可以使用以下代码:
"From \(someVariable)"
与字符串文件:
"From" = "从 得出";
这就是我在代码中使用它的方式
"\(NSLocalizedString("From", comment: "")) \(someVariable)"
但是,如果将其用于中文版本,则最终字符串将如下所示:
"从 得出 x, y"
我的意思是我可以将从and和得出放在字符串文件中的两个不同条目中。但是有更好的方法吗?
从
得出
您 可以%@在Swift的中使用String(format:...),它可以由Swift String或NSObject子类的任何实例替代。例如,如果Localizable.strings文件包含定义
String(format:...)
String
NSObject
"From %@, %@" = "从 %@, %@ 得出";
然后
let x = 1.2 let y = 2.4 let text = String(format: NSLocalizedString("From %@, %@", comment: ""), "\(x)", "\(y)") // Or alternatively: let text = String(format: NSLocalizedString("From %@, %@", comment: ""), NSNumber(double: x), NSNumber(double: y))
产生“从1.2,2.4得出”。另一种选择是将 %f格式用于双浮点数:
%f
"From %f, %f" = "从 %f, %f 得出";
与
let text = String(format: NSLocalizedString("From %f, %f", comment: ""), x, y)
请参见Niklas的答案以获得更好的解决方案,该解决方案还可以对数字表示形式进行本地化。