我正在为匈牙利用户本地化我的应用程序,但无法弄清楚如何处理其中包含日期的字符串。
在英语中,我有一个文本字符串应该显示“4reps @ 120 kg on 8/19/23”。我对其中的“on 8/19/23”部分遇到了麻烦,因为在匈牙利语中,“on”出现在日期之后,例如“19.08.23.-én”。这是我的本地化代码“23 年 8 月 19 日”
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale.current
dateFormatter.setLocalizedDateFormatFromTemplate("MMddyy")
let formattedDate = dateFormatter.string(from: viewData.liftDate)
let onDateText = NSLocalizedString("onDateText",
tableName: "Main",
value: formattedDate, <-- a string
comment: "")
liftDate.text = onDateText
在我的 localized.strings 文件中我有这个:
"onDateText" = "%@-én";
我的应用程序中出现的是“4 ismétlésszám @ 120.0 kg %@-én”
我需要帮助了解如何获取返回的本地化字符串中包含的日期。
注意:出现的屏幕是 UIViewController,而不是 SwiftUI 视图。
我在这里阅读了很多关于SO的帖子,并尝试使用通常推荐的字符串编程指南来解决它,但我无法弄清楚。
感谢您的帮助。
您需要使用
NSLocalizedString
的结果作为字符串格式。您传入的值是默认的字符串格式。
您的更新代码将如下所示:
let dateFormatter = DateFormatter()
dateFormatter.locale = Locale.current
dateFormatter.setLocalizedDateFormatFromTemplate("MMddyy")
let formattedDate = dateFormatter.string(from: viewData.liftDate)
let onDateFormat = NSLocalizedString("onDateText",
tableName: "Main",
value: "on %@",
comment: "")
liftDate.text = String(format: onDateFormat, formattedDate)
注意
value
的 NSLocalizedString
参数的变化。另请注意使用 String(format:)
创建最终字符串。
通过
NSLocalizedString
中的基本格式字符串,您可以使用标准本地化工具从您的代码生成基本 Localized.strings 文件。
在运行时,
NSLocalizedString
返回的实际值将是基于用户区域设置的实际本地化值。