Localizable.strings 无法在列表中工作
Localizable.strings not working inside a List
为了演示我的 SwiftUI 本地化问题,我准备了 a simple test project at Github:
显示 ContentView.swift 中的游戏列表:
List($vm.currentGames, id: \.self) { $gameNumber in
NavigationLink(
destination: GameView(gameNumber: gameNumber)
) {
Text("game-number #\(gameNumber)")
}
}
class GamesViewModel: ObservableObject /*, WebSocketDelegate */ {
@Published var currentGames: [Int] = [20, 30]
@Published var displayedGame: Int = 0
对于德语、英语、俄语的本地化,我添加了 Localizable.strings:
"app-title" = "Wähle ein Spiel!";
"update-games" = "Spiele erneuern";
"join-random-game" = "Zufallsspiel beitreten";
"game-number #%d" = "Spiel #%d";
虽然前 3 个条目运行良好(您可以在上面的屏幕截图中看到它们作为应用程序标题和 2 个按钮标签),但最后一个条目不起作用(在屏幕截图中以红色箭头显示),
我试过很多东西都不成功:
- 已将
%d
替换为 %lld
- 删除了两边的
#
字符
- 仅将
game-number
替换为 game
- 尝试使用
Text(LocalizedStringKey("game-number #\(gameNumber)"))
- 尝试使用
Text(String(format: NSLocalizedString("game-number #%d", comment: ""), gameNumber))
- 始终显示 EN 字符串“Game #...”
没有任何帮助,请问这里有什么问题吗?
更新:
我在 Hacking with Swift 论坛上收到了很好的建议。
数字格式可能存在错误,至少以下内容适用于字符串。
List($vm.currentGames, id: \.self) { $gameNumber in
NavigationLink(
destination: GameView(gameNumber: gameNumber)
) {
Text("game-number #\(String(gameNumber))") // << here !!
}
}
与 .strings
中的组合
"game-number #%@" = "Game #%@";
"game-number #%@" = "Spiel #%@";
"game-number #%@" = "Игра #%@";
测试 Xcode 13 / iOS 15
为了演示我的 SwiftUI 本地化问题,我准备了 a simple test project at Github:
显示 ContentView.swift 中的游戏列表:
List($vm.currentGames, id: \.self) { $gameNumber in
NavigationLink(
destination: GameView(gameNumber: gameNumber)
) {
Text("game-number #\(gameNumber)")
}
}
class GamesViewModel: ObservableObject /*, WebSocketDelegate */ {
@Published var currentGames: [Int] = [20, 30]
@Published var displayedGame: Int = 0
对于德语、英语、俄语的本地化,我添加了 Localizable.strings:
"app-title" = "Wähle ein Spiel!";
"update-games" = "Spiele erneuern";
"join-random-game" = "Zufallsspiel beitreten";
"game-number #%d" = "Spiel #%d";
虽然前 3 个条目运行良好(您可以在上面的屏幕截图中看到它们作为应用程序标题和 2 个按钮标签),但最后一个条目不起作用(在屏幕截图中以红色箭头显示),
我试过很多东西都不成功:
- 已将
%d
替换为%lld
- 删除了两边的
#
字符 - 仅将
game-number
替换为game
- 尝试使用
Text(LocalizedStringKey("game-number #\(gameNumber)"))
- 尝试使用
Text(String(format: NSLocalizedString("game-number #%d", comment: ""), gameNumber))
- 始终显示 EN 字符串“Game #...”
没有任何帮助,请问这里有什么问题吗?
更新:
我在 Hacking with Swift 论坛上收到了很好的建议。
数字格式可能存在错误,至少以下内容适用于字符串。
List($vm.currentGames, id: \.self) { $gameNumber in
NavigationLink(
destination: GameView(gameNumber: gameNumber)
) {
Text("game-number #\(String(gameNumber))") // << here !!
}
}
与 .strings
"game-number #%@" = "Game #%@";
"game-number #%@" = "Spiel #%@";
"game-number #%@" = "Игра #%@";
测试 Xcode 13 / iOS 15