如何在 Swift 中格式化本地化字符串?

How to format localised strings in Swift?(如何在 Swift 中格式化本地化字符串?)
本文介绍了如何在 Swift 中格式化本地化字符串?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在学习将我的应用本地化为简体中文.我正在关注如何做到这一点的本教程.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 StringNSObject 子类的任何实例.例如,如果 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&oacute; %@ 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 中格式化本地化字符串?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Why local notification is not firing for UNCalendarNotificationTrigger(为什么没有为UNCalendarNotificationTrigger触发本地通知)
iOS VoiceOver functionality changes with Bundle Identifier(IOS画外音功能随捆绑包标识符而变化)
tabbar middle tab out of tabbar corner(选项卡栏中间的选项卡角外)
Pushing UIViewController above UITabBar(将UIView控制器推送到UITabBar上方)
Dropbox Files.download does not start when number of files in folder is gt; 1000(当文件夹中的文件数为1000时,Dropbox Files.Download不会启动)
How can I sync two flatList scroll position in react native(如何在本机Reaction中同步两个平面列表滚动位置)