问题描述
我正在学习将我的应用本地化为简体中文.我正在关注如何做到这一点的本教程.p>
由于教程是基于Obj-C的,格式化字符串可以这样写:
"昨天你卖了 %@ 应用程序" = "Ayer le vendió %@ aplicaciones";
你喜欢吗?"= "~Es bueno?~";
但我使用的是 Swift.而在 Swift 中,我认为你不能使用 %@
来表示有什么东西可以放在那里.我们有字符串插值对吗?
我的应用有点与数学有关.我想在表格视图单元格的详细标签中显示用于计算结果的输入.例如
--------------1234.5678from x, y <---- 这里是详细标签--------------
这里,From x, y
的意思是结果是从 x 和 y 计算出来的".我想把它翻译成中文:
从 x, y 得出
以前,我只能用这个:
"来自 (someVariable)"
使用字符串文件:
"From" = "从得出";
这就是我在代码中使用它的方式
"(NSLocalizedString("From", comment: "")) (someVariable)"
但是如果用中文版的话,最终的字符串会是这样的:
"从得出 x, y"
我的意思是我可以把 从
和 放在字符串文件的两个不同的条目中.但是有没有更好的方法呢?
你可以在 Swift 的 String(format:...)
,可以替换通过 Swift String
或 NSObject
子类的任何实例.例如,如果 Localizable.strings 文件包含定义
"From %@, %@" = "从%@, %@ 得出";
然后
让 x = 1.2让 y = 2.4let text = String(format: NSLocalizedString("From %@, %@", comment: ""), "(x)", "(y)")//或者:let text = String(format: NSLocalizedString("From %@, %@", comment: ""), NSNumber(double: x), NSNumber(double: y))
产生从 1.2, 2.4 的结果".另一种选择是使用%f
双浮点数格式:
"From %f, %f" = "从%f, %f 得出";
与
let text = String(format: NSLocalizedString("From %f, %f", comment: ""), x, y)
请参阅 Niklas 的回答获得更好的解决方案,将数字表示本地化也是.
I am learning to localise my app to Simplified Chinese. I am following this tutorial on how to do this.
Because the tutorial is based on Obj-C, formatted strings can be written like this:
"Yesterday you sold %@ apps" = "Ayer le vendió %@ aplicaciones";
"You like?" = "~Es bueno?~";
But I am using Swift. And in Swift I don't think you can use %@
to indicate that there is something to be placed there. We have string interpolation right?
My app is kind of related to maths. And I want to display which input(s) is used to compute the result in a detailed label of a table view cell. For example
--------------
1234.5678
From x, y <---- Here is the detailed label
--------------
Here, From x, y
means "The result is computed from x and y". I want to translate this to Chinese:
从 x, y 得出
Before, I can just use this:
"From (someVariable)"
with the strings file:
"From" = "从 得出";
And this is how I would use it in code
"(NSLocalizedString("From", comment: "")) (someVariable)"
But if this were used in the Chinese version, the final string will be like this:
"从 得出 x, y"
I mean I can put the 从
and 得出
in two different entries in the strings file. But is there a better way to do it?
You can use %@
in Swift's String(format:...)
, it can be substituted
by a Swift String
or any instance of a NSObject
subclass.
For example, if the Localizable.strings file contains the definition
"From %@, %@" = "从 %@, %@ 得出";
then
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))
produces "从 1.2, 2.4 得出". Another option would be to use the
%f
format for double floating point numbers:
"From %f, %f" = "从 %f, %f 得出";
with
let text = String(format: NSLocalizedString("From %f, %f", comment: ""), x, y)
See Niklas' answer for an even better solution which localizes the number representation as well.
这篇关于如何在 Swift 中格式化本地化字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!