本地化字符串

时间:2015-11-30 08:35:05

标签: ios regex swift localization

我目前正在研究Swift脚本,该脚本允许编译器对本地化字符串进行类型检查,这是长期以来非常需要的。如果您有兴趣,可以查看project on GitHub以更好地理解。

问题

部分是从字符串创建方法,当解析器遇到特殊字符时,要在运行时更改(%d%f%@等)。像这样的字符串:

"PROFILE_INFO" = "I am %@, I am %d years old and %.2fm in height!"

将转换为具有以下签名的方法:

func profileInfo(value1 : String, value2 : Int, value3 : Float { ...

我真正好奇的是什么,我在任何地方找不到的东西,甚至在文档中都没有,是本地化字符串中允许的类型。我怀疑它是通过默认格式,有很多类型要涵盖,在这种情况下,我很好奇人们使用什么类型和可以省略什么类型。我正在使用以下正则表达式匹配来查找当前的特殊字符,然后将它们转换为适当的数据类型:

let regexp = "%([0-9]*.[0-9]*(d|f|ld)|@|d)"
let matches = self.matchesForRegexInText("%([0-9]*.[0-9]*(d|f|ld)|@|d)", text: string)

我知道这涵盖了大多数常见案例,但很明显,如果可能的话,我希望能够全面报道。

TLDR:

Q1:本地化字符串中允许使用哪些格式说明符 - 是否有经典字符串格式的更改或一切都相同?

Q2:有没有更好的方法将这些字符转换为适当的数据类型而不是使用正则表达式来解析它们?

谢谢!

0 个答案:

没有答案