Swift本地化显示异常问题:Localizable与插值不兼容
Swift本地化显示异常问题:Localizable与插值不兼容

Swift本地化显示异常问题:Localizable与插值不兼容

在Swift本地化过程中,发现Localizable不显示货币本地化名称不能使用。

在代码中使用Text(String(localized:))显示对应的中文本地化内容:

Text(String(localized:"\(updateER.updateERInfo?.records[index].foreignCName ?? "")"))

但实际显示过程中,发现并不能直接展示本地化内容信息。

经排查发现字符串插值(”\(value)”)不能直接处理插值,原因为本地化通常需要在Localizable.strings文件中有对应的键值对,且键应为静态字符串,因此,动态插值会导致本地化失效。

解决方案为将String转换为静态的本地化键类型,通过LocalizedStringKey来处理,这种方式运行直接用静态的键名匹配。

代码:

let foreignCName = updateER.updateERInfo?.records[index].foreignCName ?? ""
let localizedKey = LocalizedStringKey(foreignCName)
Text(localizedKey)

特别注意的是,用Text()直接展示LocalizedStringKey转换的值。

Text(localizedKey)  // 正确用法

我在这个地方错误的使用错误用法,导致一时半会没解决。

Text(String(localized: localizedKey))   // 错误用法

最后,问题得到解决,正常本地化显示插值­。

如果您认为这篇文章给您带来了帮助,您可以在此通过支付宝或者微信打赏网站开放者。

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注