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
+132 -70
View File
@@ -18,19 +18,20 @@ class AppLocalizationsAr 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 +126,7 @@ class AppLocalizationsAr extends AppLocalizations {
String get impostorClueDescription => 'المنتحل يعرف الفئة';
@override
String get debate => '🗣️ Debate';
String get debate => '🗣️ نقاش';
@override
String get debateTime => '⏱️ وقت النقاش';
@@ -213,16 +214,6 @@ class AppLocalizationsAr 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 منتحل(ون) مختبئون';
@@ -500,128 +491,126 @@ class AppLocalizationsAr extends AppLocalizations {
String get licenses => 'التراخيص';
@override
String get scanToJoin => 'Escanea el QR para unirte';
String get scanToJoin => 'امسح رمز QR للانضمام';
@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 => 'اكتب اسمك وامسح رمز QR الخاص بالمضيف';
@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 => 'مسح رمز QR';
@override
String get scanHostQR => 'Apunta al QR del host';
String get scanHostQR => 'وجّه الكاميرا إلى رمز QR للمضيف';
@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 => 'لا تظهر؟ امسح رمز QR للمضيف';
@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.';
'تحدثوا فيما بينكم وقولوا من تظنون أنه المحتال. عندما تكونون جاهزين، اطلبوا التصويت.';
@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 => 'امسح هذا الرمز من هاتف آخر';
@@ -657,34 +646,41 @@ class AppLocalizationsAr 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) {
@@ -698,13 +694,15 @@ class AppLocalizationsAr 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';
@@ -716,7 +714,8 @@ class AppLocalizationsAr 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) {
@@ -728,6 +727,7 @@ class AppLocalizationsAr extends AppLocalizations {
@override
String get defaultPlayerName => 'لاعب';
@override
String get play => 'العب';
@@ -768,8 +768,70 @@ class AppLocalizationsAr 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 =>
'ينطبق فقط عند وجود محتالَين أو أكثر';
@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 إلى الجولة';
}
}