我正在开发一个SwiftUI应用程序,有很多字符串需要翻译,所以我从一个单一的字符串目录开始,在这个目录中我有我所有的翻译,它工作得很好。然而,已经有太多的字符串,目录变得有点太大了。
是否有一种方法可以拥有多个字符串目录,并且每个目录中只包含某些特定的文本字符串(即,每个视图一个字符串目录或类似的东西)?
我尝试创建另一个字符串目录,但必须手动添加字符串到这个目录中,并且在编译时代码不会拾取翻译。
hgtggwj01#
我尝试创建另一个字符串目录,但必须手动添加字符串到这个目录中,并且在编译时代码不会拾取翻译。可以让Xcode提取不同字符串表的本地化(即字符串目录),但必须在Swift代码中显式指定“表名”。举例来说:
Text("foo", tableName: "Settings")
字符串然后,这将提取一个名为foo的字符串到Settings.xcstrings中。虽然这很棒,it’s encouraged by Apple in the WWDC 2023 session video on Strings Catalogs,但每次都必须指定tableName是不方便的,并且会使SwiftUI代码变得有点混乱,这就是为什么它不是我们看到的常见模式。你可以通过将你的字符串用法提取到一些常量中来解决这个问题,这些常量是你在LocalizedStringResource的帮助下定义的,如果你想更进一步,可以使用there are even tools that will generate this code for you [1]。使用这样的工具需要你在思考本地化内容的真实来源的方式上有一点转变,一些I wrote about in a blog post。1我是链接工具的作者。
foo
tableName
LocalizedStringResource
1条答案
按热度按时间hgtggwj01#
我尝试创建另一个字符串目录,但必须手动添加字符串到这个目录中,并且在编译时代码不会拾取翻译。
可以让Xcode提取不同字符串表的本地化(即字符串目录),但必须在Swift代码中显式指定“表名”。
举例来说:
字符串
然后,这将提取一个名为
foo
的字符串到Settings.xcstrings中。虽然这很棒,it’s encouraged by Apple in the WWDC 2023 session video on Strings Catalogs,但每次都必须指定
tableName
是不方便的,并且会使SwiftUI代码变得有点混乱,这就是为什么它不是我们看到的常见模式。你可以通过将你的字符串用法提取到一些常量中来解决这个问题,这些常量是你在
LocalizedStringResource
的帮助下定义的,如果你想更进一步,可以使用there are even tools that will generate this code for you [1]。使用这样的工具需要你在思考本地化内容的真实来源的方式上有一点转变,一些I wrote about in a blog post。1我是链接工具的作者。