Swift 对字符串进行扩展
我有作业,我不能处理。我需要什么? 我有一个项目,使用两种语言(英语,西班牙语)。该项目有两种语言的2个Locolizable.strings文件。 示例字符串:Swift 对字符串进行扩展,swift,string,Swift,String,我有作业,我不能处理。我需要什么? 我有一个项目,使用两种语言(英语,西班牙语)。该项目有两种语言的2个Locolizable.strings文件。 示例字符串: "OrderDetails_IPText" = "IP: %@"; 我知道%@是一个字符串或某个对象,这无关紧要。问题在于那些帮助我将文本翻译成不同语言的人。 填写翻译文件时,他们会看到: %@ 他们不明白我想补充什么。这可能是一个电子邮件地址或其他东西。翻译文本的人给我的任务是实现一个考虑到这些细微差别的功能。他们甚至提供了一些
"OrderDetails_IPText" = "IP: %@";
我知道%@是一个字符串或某个对象,这无关紧要。问题在于那些帮助我将文本翻译成不同语言的人。
填写翻译文件时,他们会看到:
%@
他们不明白我想补充什么。这可能是一个电子邮件地址或其他东西。翻译文本的人给我的任务是实现一个考虑到这些细微差别的功能。他们甚至提供了一些实现,比如:
func pffffff(format: something, ["key" : value] -> Id : value
可能它应该是字符串的扩展。
如果你不明白,谢谢你看这个问题。我什么都不懂
我们建议您需要更改此函数:
func L (_ key: String, value: String = "") -> String
{
let str = NSLocalizedString(key, value: value, comment: "")
return str
}
你可以创建这样的东西
extension String {
func yourFunction () {}
}
但我建议您不要在本地化字符串中使用%@
或任何其他字符。当字符串包含任何变量时,始终可以使用替换字符串函数
例如:
“我们已通过[VARIABLEA]发送了OTP”
然后,在显示时,只需查找
[VARIABLEA]
并替换为实际值,我就找到了摆脱这种情况的方法
public extension String {
/* Creates the string representation of the poo with requested size.
- parameter format: string format with key
- returns: localizable string
*/
public init(format: String, keyArguments: [String: Any]) {
self = format
keyArguments.forEach {
self = self.replacingOccurrences(of: "{\($0.key)}", with: "\($0.value)", options: .caseInsensitive)
}
}
}
是:
现在:
let asd = String(format: "Hi, %@! %d", "Arnold", 2)
let str = String(format: "Hi, {User_Name}! How are you, {user_name}?", keyArguments: ["user_name" : "Arnold", "number": 5.6])