SwiftUI 本地化原始字符串
SwiftUI Localize Raw Strings
在 SwiftUI 中,如何本地化我的原始字符串?
Text(#"Hello \\"#)
将此添加到本地化文件将不起作用。
"Hello \\" = "is not translated \\";
// ...除非您明确将其转换为本地化字符串键。
文本(本地化字符串键(您的字符串))
.strings 文件的语法中不存在“原始字符串”。见 here:
some characters must be prefixed with a backslash before you can include them in the string. These characters include double quotation marks, the backslash character itself, and special control characters such as linefeed (\n
) and carriage returns (\r
).
所以当你写的时候:
"Hello \\" = "is not translated \\";
您正在添加一个带有关键字 Hello \
的本地化字符串。另一方面,您的 Swift 字符串是原始字符串,这意味着它代表字符串 Hello \\
。这些不一样,就不翻译了。
要修复它,您应该更改 .strings 文件以转义每个反斜杠,因为它是一个 non-raw 字符串:
"Hello \\\\" = "is not translated \\\\";
在那之后,出于某种原因,您仍然需要将 Swift 原始字符串转换为 LocalizedStringKey
:
Text(.init(#"Hello \\"#))
注意.strings文件中的8条斜杠在屏幕上显示时会变成2条斜杠。这是因为 .strings 文件的转义语法使 8 个斜杠首先减少为 4 个斜杠,然后,由于 Text.init(_:tableName:bundle:comment:)
初始化程序将字符串解释为 markdown, 4 个斜杠变成 2 个。反斜杠在 markdown 中也被转义了。
这是可能的变体
Text(verbatim: NSLocalizedString("Hello \\", comment: ""))
测试 Xcode 13.3 / iOS 15.4
这是可能的,并且对我有用,无需添加任何东西。
"Hello \\" = "Hello World"
我将 "Hello \\"
定义为本地化文件中的键,将 "Hello World"
定义为 .
的值
在 SwiftUI 中,如何本地化我的原始字符串?
Text(#"Hello \\"#)
将此添加到本地化文件将不起作用。
"Hello \\" = "is not translated \\";
// ...除非您明确将其转换为本地化字符串键。 文本(本地化字符串键(您的字符串))
.strings 文件的语法中不存在“原始字符串”。见 here:
some characters must be prefixed with a backslash before you can include them in the string. These characters include double quotation marks, the backslash character itself, and special control characters such as linefeed (
\n
) and carriage returns (\r
).
所以当你写的时候:
"Hello \\" = "is not translated \\";
您正在添加一个带有关键字 Hello \
的本地化字符串。另一方面,您的 Swift 字符串是原始字符串,这意味着它代表字符串 Hello \\
。这些不一样,就不翻译了。
要修复它,您应该更改 .strings 文件以转义每个反斜杠,因为它是一个 non-raw 字符串:
"Hello \\\\" = "is not translated \\\\";
在那之后,出于某种原因,您仍然需要将 Swift 原始字符串转换为 LocalizedStringKey
:
Text(.init(#"Hello \\"#))
注意.strings文件中的8条斜杠在屏幕上显示时会变成2条斜杠。这是因为 .strings 文件的转义语法使 8 个斜杠首先减少为 4 个斜杠,然后,由于 Text.init(_:tableName:bundle:comment:)
初始化程序将字符串解释为 markdown, 4 个斜杠变成 2 个。反斜杠在 markdown 中也被转义了。
这是可能的变体
Text(verbatim: NSLocalizedString("Hello \\", comment: ""))
测试 Xcode 13.3 / iOS 15.4
这是可能的,并且对我有用,无需添加任何东西。
"Hello \\" = "Hello World"
我将 "Hello \\"
定义为本地化文件中的键,将 "Hello World"
定义为 .