当前位置: 首页 > 面试题库 >

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

宇文鸣
2023-03-14
问题内容

我正在学习将我的应用本地化为简体中文。我正在按照本教程进行操作。

因为本教程基于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计算结果”。我想将其翻译成中文:

从 x, y 得出

在此之前,我可以使用以下代码:

"From \(someVariable)"

与字符串文件:

"From" = "从 得出";

这就是我在代码中使用它的方式

"\(NSLocalizedString("From", comment: "")) \(someVariable)"

但是,如果将其用于中文版本,则最终字符串将如下所示:

"从 得出 x, y"

我的意思是我可以将and和得出放在字符串文件中的两个不同条目中。但是有更好的方法吗?


问题答案:

可以%@在Swift的中使用String(format:...),它可以由Swift
StringNSObject子类的任何实例替代。例如,如果Localizable.strings文件包含定义

"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格式用于双浮点数:

"From %f, %f" = "从 %f, %f 得出";

let text = String(format: NSLocalizedString("From %f, %f", comment: ""), x, y)

请参见Niklas的答案以获得更好的解决方案,该解决方案还可以对数字表示形式进行本地化。



 类似资料:
  • 问题内容: 如何在本地时区中将a 格式化为字符串?以下内容将本地语言转换为UTC,而不是我期望的那样。删除对的调用也是如此。我该如何获取当地时间? 注:我们正在使用的旧版本 0.6.3 中的JSR-310参考实现。 问题答案: 在您否决我的答案之前,请注意,问题明确(以粗体显示)是指 JSR-310参考实现的旧版本 0.6.3 !在Java 8和新的日期库问世之前,我在2012年12月问了这个问题

  • 我想在本地格式化Jenkins文件,并了解它们是否存在任何格式化问题。我使用Supreme编辑器进行编辑。有没有更好的编辑器也可以向我建议任何格式错误?我不想使用任何在线格式化工具。

  • 我有以下来自服务器的日期<code>2019-09-05T10:37:49.494Z 它尝试这样做: 这无法打印错误消息,我做错了什么,如何修复它?

  • 问题内容: 嗨,我有以下字符串:2012-05-20T09:00:00.000Z,我想将其格式化为20/05/2012,9am 如何在Java中这样做? 谢谢 问题答案: 用先 来,然后 到

  • 问题内容: 我想知道是否有一种简单的方法来格式化dict-outputs的字符串,例如: …,简单的str(dict)只会让您难以理解… 就我对Python的了解而言,我将不得不编写许多带有许多特殊情况和string.replace()调用的代码,而这个问题本身看起来并不太像一个1000行的问题。 请建议根据此形状格式化所有字典的最简单方法。 问题答案: 根据您对输出所做的操作,一种选择是将JSO

  • 每个 Mvc 框架都有自己的本地化字符串的解决方案, Nutz.Mvc 的这个是相当简陋的。 我只是个人觉得足够用了。下面我把它简单介绍一下: 假定所有的本地化字符串文件都会存放在某一目录下 这个目录下所有的 .properties 文件,将作为默认的本地字符串文件。 每一种语言都会是一个目录,目录名称对应一个 Locale 的 toString(),请参看 java.util.Locale 的