feat(i18n): fill the translation backlog and add the new strings

40 keys existed only in app_es.arb and fell back to Spanish everywhere else
(15 of them in English). Most were multi-device screens: hostGame, votar,
clueIs, whoDoYouThinkIsTheImpostor, waitingPlayersSeeWord.

Adds those plus the new keys for impostor awareness, the adjusted impostor
count, the eliminated-player notice and the reconnection screen.

51 keys across the 18 supported languages.
This commit is contained in:
2026-07-25 20:36:39 +02:00
parent 863690168c
commit b1b12cc8af
36 changed files with 3677 additions and 1206 deletions
+352 -83
View File
@@ -18,19 +18,19 @@ class AppLocalizationsZh extends AppLocalizations {
String get loadingWords => '正在加载词汇...';
@override
String get matchRewards => "游戏奖励";
String get matchRewards => '游戏奖励';
@override
String get newMedals => "新奖牌";
String get newMedals => '新奖牌';
@override
String get noNewMedalsKeepFire => "这次没有新奖牌。继续积累火焰。";
String get noNewMedalsKeepFire => '这次没有新奖牌。继续积累火焰。';
@override
String get calculatingRewards => "正在计算奖励...";
String get calculatingRewards => '正在计算奖励...';
@override
String get fireLabel => "火焰";
String get fireLabel => '火焰';
@override
String get playersRange => '3-20名玩家 • 无需联网';
@@ -125,7 +125,7 @@ class AppLocalizationsZh extends AppLocalizations {
String get impostorClueDescription => '冒牌者可以知道分类';
@override
String get debate => '🗣️ Debate';
String get debate => '🗣️ 讨论';
@override
String get debateTime => '⏱️ 讨论时间';
@@ -213,16 +213,6 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get playersInDebate => '参与讨论的玩家';
@override
String voteOf(String name) {
return "$name 的投票";
}
@override
String firstTurnInstruction(String name) {
return "$name 先说出自己的词。";
}
@override
String activePlayersInfo(int active, int impostors) {
return '$active 名在场 • $impostors 名冒牌者潜伏中';
@@ -499,128 +489,125 @@ class AppLocalizationsZh extends AppLocalizations {
String get licenses => '许可证';
@override
String get scanToJoin => 'Escanea el QR para unirte';
String get scanToJoin => '扫描二维码加入';
@override
String get connectedPlayers => 'Jugadores conectados';
String get connectedPlayers => '已连接的玩家';
@override
String get hostGame => 'Gestor de partida';
String get hostGame => '游戏管理';
@override
String get waitingPlayersSeeWord => 'Esperando que todos vean su palabra...';
String get waitingPlayersSeeWord => '等待所有人查看自己的词语…';
@override
String get activePlayers => 'Jugadores activos';
String get activePlayers => '在场玩家';
@override
String get playersVoted => 'Han votado';
String get playersVoted => '已投票';
@override
String get waitingVoting => 'Esperando que voten...';
String get waitingVoting => '等待投票…';
@override
String get waitingForPlayers => 'Esperando jugadores...';
String get waitingForPlayers => '等待玩家…';
@override
String needMorePlayers(int count) {
return 'Faltan $count jugadores más';
return '还需要 $count 名玩家';
}
@override
String get starting => 'Iniciando...';
String get starting => '正在开始…';
@override
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
String get enterNameAndScan => '输入你的名字并扫描房主的二维码';
@override
String get yourName => 'Tu nombre';
String get yourName => '你的名字';
@override
String get nameRequired => 'Escribe tu nombre';
String get nameRequired => '请输入你的名字';
@override
String get connectingTo => 'Conectando a';
String get connectingTo => '正在连接';
@override
String get scanQR => 'Escanear QR';
String get scanQR => '扫描二维码';
@override
String get scanHostQR => 'Apunta al QR del host';
String get scanHostQR => '对准房主的二维码';
@override
String get connectedWaiting => '¡Conectado!';
String get connectedWaiting => '已连接!';
@override
String get waitingForHost => 'Esperando a que el host inicie la partida...';
String get waitingForHost => '等待房主开始游戏…';
@override
String get enterNameToSearch =>
'Escribe tu nombre para buscar partidas cercanas';
String get enterNameToSearch => '输入你的名字以搜索附近的游戏';
@override
String get searchGames => 'Buscar partidas';
String get searchGames => '搜索游戏';
@override
String get searchingGames => 'Buscando partidas cercanas...';
String get searchingGames => '正在搜索附近的游戏…';
@override
String get noGamesFound => 'No se encontraron partidas';
String get noGamesFound => '未找到游戏';
@override
String get noGamesFoundHint =>
'Asegúrate de que el host tiene la sala abierta y estáis cerca';
String get noGamesFoundHint => '请确认房主已开启房间,且你们距离较近';
@override
String get orScanQR => '¿No aparece? Escanea el QR del host';
String get orScanQR => '没有显示?扫描房主的二维码';
@override
String get iveSeenIt => 'Ya la he visto';
String get iveSeenIt => '我看过了';
@override
String clueIs(String category) {
return 'La pista es: $category';
return '提示:$category';
}
@override
String get debatePhaseActive => 'Fase de debate activa';
String get debatePhaseActive => '讨论阶段进行中';
@override
String get debateInstructions =>
'Hablad entre vosotros y decid quién creéis que es el impostor. Cuando estéis listos, solicitad la votación.';
String get debateInstructions => '互相讨论,说出你认为谁是卧底。准备好后请求投票。';
@override
String get solicitarVotacion => 'Solicitar votación';
String get solicitarVotacion => '请求投票';
@override
String get votacionSolicitada => 'Votación solicitada';
String get votacionSolicitada => '已请求投票';
@override
String get whoDoYouThinkIsTheImpostor => '¿Quién es el impostor?';
String get whoDoYouThinkIsTheImpostor => '谁是卧底?';
@override
String get selectOnePlayer => 'Selecciona a un jugador para votar';
String get selectOnePlayer => '选择要投票的玩家';
@override
String get votar => 'Votar';
String get votar => '投票';
@override
String get selectYourProfile => 'Tu perfil';
String get selectYourProfile => '你的资料';
@override
String get selectProfile => 'Selecciona un perfil';
String get selectProfile => '选择一个资料';
@override
String get createNewUser => 'Crear nuevo usuario';
String get createNewUser => '创建新用户';
@override
String get userNameRequired => 'El nombre no puede estar vacio';
String get userNameRequired => '名字不能为空';
@override
String get profileSelected => 'Perfil seleccionado';
String get profileSelected => '已选择资料';
@override
String get availableProfiles => 'Perfiles disponibles';
String get availableProfiles => '可用资料';
@override
String get scanThisCodeFromAnotherPhone => '用另一部手机扫描此代码';
@@ -656,34 +643,41 @@ class AppLocalizationsZh extends AppLocalizations {
String get delete => '删除';
@override
String get selectAtLeastThreeUsersToStart => 'Select at least 3 users to start.';
String get selectAtLeastThreeUsersToStart =>
'Select at least 3 users to start.';
@override
String get hostPhoneMustSelectUser => 'The host phone must select at least one user.';
String get hostPhoneMustSelectUser =>
'The host phone must select at least one user.';
@override
String get roomNoLongerInLobby => 'The room is no longer in the lobby.';
@override
String get completeUserSelectionToStart => 'Complete user selection to start.';
String get completeUserSelectionToStart =>
'Complete user selection to start.';
@override
String get preparingSecureRoom => 'Preparing the secure room';
@override
String get searchingNearbyBluetoothGames => 'Searching nearby games over Bluetooth';
String get searchingNearbyBluetoothGames =>
'Searching nearby games over Bluetooth';
@override
String get tapToJoin => 'Tap to join';
@override
String get bluetoothLocationPermissionsRequired => 'Bluetooth and location permissions are required to search for games.';
String get bluetoothLocationPermissionsRequired =>
'Bluetooth and location permissions are required to search for games.';
@override
String get bluetoothLocationPermissionsShort => 'Bluetooth and location permissions are required';
String get bluetoothLocationPermissionsShort =>
'Bluetooth and location permissions are required';
@override
String get couldNotStartSearch => 'Could not start the search. Check Bluetooth and location.';
String get couldNotStartSearch =>
'Could not start the search. Check Bluetooth and location.';
@override
String couldNotConnectToHost(String host) {
@@ -697,13 +691,15 @@ class AppLocalizationsZh extends AppLocalizations {
String get singleDeviceSubtitle => 'Game on this device';
@override
String get singleDeviceDescription => 'Ideal for playing together by passing the phone around. Fast, direct setup.';
String get singleDeviceDescription =>
'Ideal for playing together by passing the phone around. Fast, direct setup.';
@override
String get multiDeviceSubtitle => 'Each player on their phone';
@override
String get multiDeviceDescription => 'Create a premium room, share the QR code and manage users from the lobby.';
String get multiDeviceDescription =>
'Create a premium room, share the QR code and manage users from the lobby.';
@override
String get singleDeviceGameLabel => 'Game on this device';
@@ -715,7 +711,8 @@ class AppLocalizationsZh extends AppLocalizations {
String get mainDeviceUser => 'Main device user';
@override
String get couldNotCreateRoom => 'Could not create the room. Check Bluetooth.';
String get couldNotCreateRoom =>
'Could not create the room. Check Bluetooth.';
@override
String cannotStartWithReason(String reason) {
@@ -727,6 +724,7 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get defaultPlayerName => '玩家';
@override
String get play => '开始';
@@ -767,10 +765,70 @@ class AppLocalizationsZh extends AppLocalizations {
String get noResult => '无结果';
@override
String historyGameSummary(int players, int impostors, int rounds, String word, String category) {
return '$players 名玩家 • $impostors 名冒牌者 • $rounds 回合\n$word$category';
String historyGameSummary(
int players,
int impostors,
int rounds,
String word,
String category,
) {
return '\$players 名玩家 • \$impostors 名冒牌者 • \$rounds 回合\n\$word • \$category';
}
@override
String voteOf(String name) {
return '$name 的投票';
}
@override
String firstTurnInstruction(String name) {
return '$name 先说出自己的词。';
}
@override
String get impostorsKnowEachOther => '🎭 卧底互相知晓';
@override
String get impostorsKnowEachOtherDescription => '每个卧底都会看到其他卧底的名字';
@override
String get impostorsKnowEachOtherNeedsTwo => '仅在 2 名或以上卧底时生效';
@override
String otherImpostorsTitle(num count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '其他卧底',
one: '另一名卧底',
);
return '$_temp0';
}
@override
String get youAreTheOnlyImpostor => '你是唯一的卧底';
@override
String impostorsAdjusted(int count) {
return '已根据玩家人数将卧底调整为 $count';
}
@override
String get eliminatedCannotVote => '你已出局,不能再投票';
@override
String get reconnecting => '正在重新连接…';
@override
String get reconnectingHint => '与房主的连接已断开。你在游戏中的位置仍为你保留。';
@override
String get leaveGame => '退出游戏';
@override
String playerRejoined(String name) {
return '$name 已重新加入游戏';
}
}
/// The translations for Chinese, as used in Taiwan (`zh_TW`).
@@ -786,6 +844,21 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
@override
String get loadingWords => '正在載入詞彙...';
@override
String get matchRewards => '遊戲獎勵';
@override
String get newMedals => '新獎牌';
@override
String get noNewMedalsKeepFire => '這次沒有新獎牌。繼續累積火焰。';
@override
String get calculatingRewards => '正在計算獎勵...';
@override
String get fireLabel => '火焰';
@override
String get playersRange => '3-20 位玩家 • 無需網路';
@@ -878,6 +951,9 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
@override
String get impostorClueDescription => '冒牌者可以知道類別';
@override
String get debate => '🗣️ 討論';
@override
String get debateTime => '⏱️ 討論時間';
@@ -1238,6 +1314,128 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
@override
String get licenses => '授權條款';
@override
String get scanToJoin => '掃描 QR Code 加入';
@override
String get connectedPlayers => '已連線的玩家';
@override
String get hostGame => '遊戲管理';
@override
String get waitingPlayersSeeWord => '等待所有人查看自己的詞語…';
@override
String get activePlayers => '在場玩家';
@override
String get playersVoted => '已投票';
@override
String get waitingVoting => '等待投票…';
@override
String get waitingForPlayers => '等待玩家…';
@override
String needMorePlayers(int count) {
return '還需要 $count 名玩家';
}
@override
String get starting => '正在開始…';
@override
String get enterNameAndScan => '輸入你的名字並掃描房主的 QR Code';
@override
String get yourName => '你的名字';
@override
String get nameRequired => '請輸入你的名字';
@override
String get connectingTo => '正在連線';
@override
String get scanQR => '掃描 QR Code';
@override
String get scanHostQR => '對準房主的 QR Code';
@override
String get connectedWaiting => '已連線!';
@override
String get waitingForHost => '等待房主開始遊戲…';
@override
String get enterNameToSearch => '輸入你的名字以搜尋附近的遊戲';
@override
String get searchGames => '搜尋遊戲';
@override
String get searchingGames => '正在搜尋附近的遊戲…';
@override
String get noGamesFound => '找不到遊戲';
@override
String get noGamesFoundHint => '請確認房主已開啟房間,且你們距離較近';
@override
String get orScanQR => '沒有顯示?掃描房主的 QR Code';
@override
String get iveSeenIt => '我看過了';
@override
String clueIs(String category) {
return '提示:$category';
}
@override
String get debatePhaseActive => '討論階段進行中';
@override
String get debateInstructions => '互相討論,說出你認為誰是臥底。準備好後請求投票。';
@override
String get solicitarVotacion => '請求投票';
@override
String get votacionSolicitada => '已請求投票';
@override
String get whoDoYouThinkIsTheImpostor => '誰是臥底?';
@override
String get selectOnePlayer => '選擇要投票的玩家';
@override
String get votar => '投票';
@override
String get selectYourProfile => '你的個人檔案';
@override
String get selectProfile => '選擇一個個人檔案';
@override
String get createNewUser => '建立新使用者';
@override
String get userNameRequired => '名字不能為空';
@override
String get profileSelected => '已選擇個人檔案';
@override
String get availableProfiles => '可用的個人檔案';
@override
String get scanThisCodeFromAnotherPhone => '用另一部手机扫描此代码';
@@ -1272,34 +1470,41 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
String get delete => '删除';
@override
String get selectAtLeastThreeUsersToStart => 'Select at least 3 users to start.';
String get selectAtLeastThreeUsersToStart =>
'Select at least 3 users to start.';
@override
String get hostPhoneMustSelectUser => 'The host phone must select at least one user.';
String get hostPhoneMustSelectUser =>
'The host phone must select at least one user.';
@override
String get roomNoLongerInLobby => 'The room is no longer in the lobby.';
@override
String get completeUserSelectionToStart => 'Complete user selection to start.';
String get completeUserSelectionToStart =>
'Complete user selection to start.';
@override
String get preparingSecureRoom => 'Preparing the secure room';
@override
String get searchingNearbyBluetoothGames => 'Searching nearby games over Bluetooth';
String get searchingNearbyBluetoothGames =>
'Searching nearby games over Bluetooth';
@override
String get tapToJoin => 'Tap to join';
@override
String get bluetoothLocationPermissionsRequired => 'Bluetooth and location permissions are required to search for games.';
String get bluetoothLocationPermissionsRequired =>
'Bluetooth and location permissions are required to search for games.';
@override
String get bluetoothLocationPermissionsShort => 'Bluetooth and location permissions are required';
String get bluetoothLocationPermissionsShort =>
'Bluetooth and location permissions are required';
@override
String get couldNotStartSearch => 'Could not start the search. Check Bluetooth and location.';
String get couldNotStartSearch =>
'Could not start the search. Check Bluetooth and location.';
@override
String couldNotConnectToHost(String host) {
@@ -1313,13 +1518,15 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
String get singleDeviceSubtitle => 'Game on this device';
@override
String get singleDeviceDescription => 'Ideal for playing together by passing the phone around. Fast, direct setup.';
String get singleDeviceDescription =>
'Ideal for playing together by passing the phone around. Fast, direct setup.';
@override
String get multiDeviceSubtitle => 'Each player on their phone';
@override
String get multiDeviceDescription => 'Create a premium room, share the QR code and manage users from the lobby.';
String get multiDeviceDescription =>
'Create a premium room, share the QR code and manage users from the lobby.';
@override
String get singleDeviceGameLabel => 'Game on this device';
@@ -1331,7 +1538,8 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
String get mainDeviceUser => 'Main device user';
@override
String get couldNotCreateRoom => 'Could not create the room. Check Bluetooth.';
String get couldNotCreateRoom =>
'Could not create the room. Check Bluetooth.';
@override
String cannotStartWithReason(String reason) {
@@ -1352,6 +1560,7 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
@override
String get mainTagline => '在太晚之前找出冒牌者';
@override
String get deviceProfile => '裝置個人檔案';
@@ -1383,8 +1592,68 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
String get noResult => '無結果';
@override
String historyGameSummary(int players, int impostors, int rounds, String word, String category) {
return '$players 位玩家 • $impostors 位冒牌者 • $rounds 回合\n$word$category';
String historyGameSummary(
int players,
int impostors,
int rounds,
String word,
String category,
) {
return '\$players 位玩家 • \$impostors 位冒牌者 • \$rounds 回合\n\$word • \$category';
}
}
@override
String voteOf(String name) {
return '$name 的投票';
}
@override
String firstTurnInstruction(String name) {
return '$name 先說出自己的詞。';
}
@override
String get impostorsKnowEachOther => '🎭 臥底互相知曉';
@override
String get impostorsKnowEachOtherDescription => '每個臥底都會看到其他臥底的名字';
@override
String get impostorsKnowEachOtherNeedsTwo => '僅在 2 名或以上臥底時生效';
@override
String otherImpostorsTitle(num count) {
String _temp0 = intl.Intl.pluralLogic(
count,
locale: localeName,
other: '其他臥底',
one: '另一名臥底',
);
return '$_temp0';
}
@override
String get youAreTheOnlyImpostor => '你是唯一的臥底';
@override
String impostorsAdjusted(int count) {
return '已根據玩家人數將臥底調整為 $count';
}
@override
String get eliminatedCannotVote => '你已出局,不能再投票';
@override
String get reconnecting => '正在重新連線…';
@override
String get reconnectingHint => '與房主的連線已中斷。你在遊戲中的位置仍為你保留。';
@override
String get leaveGame => '退出遊戲';
@override
String playerRejoined(String name) {
return '$name 已重新加入遊戲';
}
}