Exit confirmation - A dialog in the app's own style now guards every in-game screen. The safe action is the prominent one, so a stray tap keeps you in the game. - Eleven screens covered, against both the system back gesture and the close buttons. The message adapts: a single-device game is lost, a host ends it for everyone, a client can rejoin. - The two screens the host also opens from the manager take a flag so that back there just closes them instead of offering to quit. Translations - 21 keys were still holding the English text in Arabic, Basque, Hindi, Japanese, Korean, Dutch, Polish, Russian, Turkish and both Chinese variants: 231 strings, covering the whole multi-device flow, permissions and the mode picker. Nothing failed, the app just showed English. - The permissions dialog was hardcoded in Spanish; it is localized now. - Portuguese used Spanish gerunds where pt-PT takes "a + infinitive". Checked what looked untranslated but is not: Animals and Notes are correct Catalan, Configuration and Vibration correct French, Version correct German. Those are whitelisted in the new test rather than silently rewritten. l10n_cobertura_test guards all of it: no missing or orphan keys, no empty values, no English left outside the whitelist, and placeholders preserved.
880 lines
24 KiB
Dart
880 lines
24 KiB
Dart
// ignore: unused_import
|
|
import 'package:intl/intl.dart' as intl;
|
|
import 'app_localizations.dart';
|
|
|
|
// ignore_for_file: type=lint
|
|
|
|
/// The translations for Arabic (`ar`).
|
|
class AppLocalizationsAr extends AppLocalizations {
|
|
AppLocalizationsAr([String locale = 'ar']) : super(locale);
|
|
|
|
@override
|
|
String get appTitle => 'المنتحل';
|
|
|
|
@override
|
|
String get subtitle => 'لعبة تخمين اجتماعية';
|
|
|
|
@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 لاعبًا • بدون إنترنت';
|
|
|
|
@override
|
|
String get createGame => 'إنشاء لعبة';
|
|
|
|
@override
|
|
String get joinGame => 'الانضمام إلى لعبة';
|
|
|
|
@override
|
|
String get howToPlay => 'كيفية اللعب';
|
|
|
|
@override
|
|
String get settings => 'الإعدادات';
|
|
|
|
@override
|
|
String get gameMode => 'وضع اللعب';
|
|
|
|
@override
|
|
String get singleDevice => 'جهاز واحد';
|
|
|
|
@override
|
|
String get multiDevice => 'أجهزة متعددة';
|
|
|
|
@override
|
|
String get category => 'الفئة';
|
|
|
|
@override
|
|
String get categoryAll => 'الكل';
|
|
|
|
@override
|
|
String get categoryAnimals => 'حيوانات';
|
|
|
|
@override
|
|
String get categoryFood => 'طعام';
|
|
|
|
@override
|
|
String get categoryCountries => 'دول';
|
|
|
|
@override
|
|
String get categorySports => 'رياضة';
|
|
|
|
@override
|
|
String get categoryProfessions => 'مهن';
|
|
|
|
@override
|
|
String get categoryObjects => 'أشياء';
|
|
|
|
@override
|
|
String get categoryPlaces => 'أماكن';
|
|
|
|
@override
|
|
String get categoryMovies => 'أفلام';
|
|
|
|
@override
|
|
String get categoryMusic => 'موسيقى';
|
|
|
|
@override
|
|
String get categoryTechnology => 'تكنولوجيا';
|
|
|
|
@override
|
|
String playersCount(int count) {
|
|
return 'اللاعبون ($count)';
|
|
}
|
|
|
|
@override
|
|
String get playersRangeHint => '3-20';
|
|
|
|
@override
|
|
String get playerNameHint => 'اسم اللاعب';
|
|
|
|
@override
|
|
String get playerAlreadyExists => 'يوجد لاعب بهذا الاسم بالفعل';
|
|
|
|
@override
|
|
String get maxPlayersReached => 'الحد الأقصى 20 لاعبًا';
|
|
|
|
@override
|
|
String get minPlayersRequired => 'يلزم 3 لاعبين على الأقل';
|
|
|
|
@override
|
|
String get configuration => 'الإعدادات';
|
|
|
|
@override
|
|
String get impostors => '🎭 المنتحلون';
|
|
|
|
@override
|
|
String get impostorClue => '🔍 تلميح للمنتحل';
|
|
|
|
@override
|
|
String get impostorClueDescription => 'المنتحل يعرف الفئة';
|
|
|
|
@override
|
|
String get debate => '🗣️ نقاش';
|
|
|
|
@override
|
|
String get debateTime => '⏱️ وقت النقاش';
|
|
|
|
@override
|
|
String get noLimit => 'بلا حد';
|
|
|
|
@override
|
|
String get oneMin => '1 د';
|
|
|
|
@override
|
|
String get twoMin => '2 د';
|
|
|
|
@override
|
|
String get threeMin => '3 د';
|
|
|
|
@override
|
|
String get fiveMin => '5 د';
|
|
|
|
@override
|
|
String get startGame => 'بدء اللعبة';
|
|
|
|
@override
|
|
String get seeYourWord => 'اعرف كلمتك';
|
|
|
|
@override
|
|
String get eachPlayerMustSee => 'يجب على كل لاعب رؤية كلمته بسرية';
|
|
|
|
@override
|
|
String roundNumber(int round) {
|
|
return 'الجولة $round';
|
|
}
|
|
|
|
@override
|
|
String get alreadySeen => 'شاهد كلمته بالفعل';
|
|
|
|
@override
|
|
String get tapToSee => 'اضغط للعرض';
|
|
|
|
@override
|
|
String get allSeenStartDebate => 'الجميع شاهد ← بدء النقاش';
|
|
|
|
@override
|
|
String playersRemaining(int count) {
|
|
return 'متبقٍّ $count لاعبين';
|
|
}
|
|
|
|
@override
|
|
String get youAreImpostor => 'أنت المنتحل!';
|
|
|
|
@override
|
|
String get yourWordIs => 'كلمتك هي:';
|
|
|
|
@override
|
|
String clueCategory(String category) {
|
|
return 'تلميح: $category';
|
|
}
|
|
|
|
@override
|
|
String get holdToSeeWord => 'اضغط مطولًا لرؤية كلمتك';
|
|
|
|
@override
|
|
String get makeSureNoOneLooks => 'تأكد أن لا أحد ينظر';
|
|
|
|
@override
|
|
String get showingWord => '👁️ جارٍ العرض...';
|
|
|
|
@override
|
|
String get holdToSee => '👆 اضغط مطولًا للعرض';
|
|
|
|
@override
|
|
String get seenMyWord => 'رأيت كلمتي';
|
|
|
|
@override
|
|
String debateRound(int round) {
|
|
return 'النقاش - الجولة $round';
|
|
}
|
|
|
|
@override
|
|
String get timeUp => '⏰ انتهى الوقت!';
|
|
|
|
@override
|
|
String get timeRemaining => '⏱️ الوقت المتبقي';
|
|
|
|
@override
|
|
String get playersInDebate => 'اللاعبون في النقاش';
|
|
|
|
@override
|
|
String activePlayersInfo(int active, int impostors) {
|
|
return '$active نشطون • $impostors منتحل(ون) مختبئون';
|
|
}
|
|
|
|
@override
|
|
String get eliminated => 'تم إقصاؤه';
|
|
|
|
@override
|
|
String get notes => 'ملاحظات';
|
|
|
|
@override
|
|
String get goToVoting => 'الانتقال للتصويت';
|
|
|
|
@override
|
|
String get voting => '🗳️ التصويت';
|
|
|
|
@override
|
|
String get turnToVote => 'دورك للتصويت:';
|
|
|
|
@override
|
|
String votesProgress(int current, int total) {
|
|
return 'الأصوات: $current/$total';
|
|
}
|
|
|
|
@override
|
|
String get whoIsImpostor => 'من تعتقد أنه المنتحل؟';
|
|
|
|
@override
|
|
String get confirmVote => 'تأكيد التصويت';
|
|
|
|
@override
|
|
String get votingComplete => '🗳️ اكتمل التصويت';
|
|
|
|
@override
|
|
String get allVoted => 'صوّت الجميع!';
|
|
|
|
@override
|
|
String get tapToReveal => 'اضغط لكشف النتيجة';
|
|
|
|
@override
|
|
String get revealResult => 'كشف النتيجة';
|
|
|
|
@override
|
|
String get result => 'النتيجة';
|
|
|
|
@override
|
|
String get revealing => 'جارٍ الكشف...';
|
|
|
|
@override
|
|
String get wasImpostor => 'كان المنتحل! 🎉';
|
|
|
|
@override
|
|
String get wasInnocent => 'كان بريئًا 😱';
|
|
|
|
@override
|
|
String get votesThisRound => 'أصوات هذه الجولة';
|
|
|
|
@override
|
|
String get seeEndResult => 'عرض النتيجة النهائية';
|
|
|
|
@override
|
|
String get impostorGuessWord => 'هل يخمّن المنتحل الكلمة؟';
|
|
|
|
@override
|
|
String get nextRound => 'الجولة التالية';
|
|
|
|
@override
|
|
String get impostorGuessTitle => '🎯 تخمين المنتحل';
|
|
|
|
@override
|
|
String get impostorCanGuess => 'يمكن للمنتحل المُقصى\nمحاولة تخمين الكلمة';
|
|
|
|
@override
|
|
String get ifCorrectImpostorsWin => 'إذا أصاب، يفوز المنتحلون!';
|
|
|
|
@override
|
|
String get guessWordHint => 'ما الكلمة برأيك؟';
|
|
|
|
@override
|
|
String get dontGuess => 'عدم المحاولة';
|
|
|
|
@override
|
|
String get guess => 'تخمين';
|
|
|
|
@override
|
|
String get correctGuess => 'تخمين صحيح!';
|
|
|
|
@override
|
|
String theWordWas(String word) {
|
|
return 'الكلمة كانت: $word';
|
|
}
|
|
|
|
@override
|
|
String get impostorsWin => 'فاز المنتحلون!';
|
|
|
|
@override
|
|
String get wrongGuess => 'تخمين خاطئ!';
|
|
|
|
@override
|
|
String get gameContinues => 'اللعبة مستمرة...';
|
|
|
|
@override
|
|
String get gameOver => 'انتهت اللعبة';
|
|
|
|
@override
|
|
String get playersWin => 'فاز اللاعبون!';
|
|
|
|
@override
|
|
String get theSecretWordWas => '🔍 الكلمة كانت:';
|
|
|
|
@override
|
|
String categoryLabel(String category) {
|
|
return 'الفئة: $category';
|
|
}
|
|
|
|
@override
|
|
String get theImpostorWas => '🎭 المنتحل كان:';
|
|
|
|
@override
|
|
String get theImpostorsWere => '🎭 المنتحلون كانوا:';
|
|
|
|
@override
|
|
String get votingHistory => '📊 سجل التصويت';
|
|
|
|
@override
|
|
String roundElimination(int round, String name) {
|
|
return 'الجولة $round: $name';
|
|
}
|
|
|
|
@override
|
|
String get rematch => 'إعادة المباراة';
|
|
|
|
@override
|
|
String get mainMenu => 'القائمة الرئيسية';
|
|
|
|
@override
|
|
String get notesTitle => '📝 ملاحظات';
|
|
|
|
@override
|
|
String get notesSaved => 'تم حفظ الملاحظات';
|
|
|
|
@override
|
|
String get whoAreYou => 'من أنت؟';
|
|
|
|
@override
|
|
String get selectYourName => 'اختر اسمك لعرض ملاحظاتك الخاصة';
|
|
|
|
@override
|
|
String notesOf(String name) {
|
|
return 'ملاحظات $name';
|
|
}
|
|
|
|
@override
|
|
String get notesAboutPlayers => 'ملاحظات عن كل لاعب';
|
|
|
|
@override
|
|
String get playerNoteHint => 'ماذا قال؟ هل هو مشبوه؟';
|
|
|
|
@override
|
|
String get freeNote => 'ملاحظة حرة';
|
|
|
|
@override
|
|
String get freeNoteHint => 'ملاحظات شخصية...';
|
|
|
|
@override
|
|
String get rulesTitle => '📖 كيفية اللعب';
|
|
|
|
@override
|
|
String get rulesWhatIsTitle => '🎭 ما هو المنتحل؟';
|
|
|
|
@override
|
|
String get rulesWhatIsBody =>
|
|
'لعبة تخمين اجتماعية لـ 3-20 لاعبًا. الجميع يحصل على كلمة سرية... ما عدا المنتحل! مهمتك: اكتشف من يتظاهر.';
|
|
|
|
@override
|
|
String get rulesHowToPlayTitle => '🔍 كيف تُلعب؟';
|
|
|
|
@override
|
|
String get rulesHowToPlayBody =>
|
|
'1. توزيع الأدوار: الجميع يحصل على نفس الكلمة، ما عدا المنتحل(ين).\n\n2. النقاش: بالتناوب، كل لاعب يصف الكلمة دون ذكرها مباشرة. على المنتحل التظاهر بمعرفتها.\n\n3. التصويت: بعد انتهاء النقاش، يصوّت الجميع على من يعتقدون أنه المنتحل.\n\n4. الإقصاء: الأكثر حصولًا على الأصوات يُقصى ويُكشف ما إذا كان منتحلًا أم لا.\n\n5. إذا كان منتحلًا، يمكنه محاولة تخمين الكلمة. إذا أصاب، يفوز المنتحلون!';
|
|
|
|
@override
|
|
String get rulesWhoWinsTitle => '🏆 من يفوز؟';
|
|
|
|
@override
|
|
String get rulesWhoWinsBody =>
|
|
'• اللاعبون: يفوزون بإقصاء جميع المنتحلين.\n• المنتحلون: يفوزون إذا لم يُكتشفوا حتى يتساوى أو يقل عدد اللاعبين العاديين عن عدد المنتحلين، أو إذا خمّنوا الكلمة عند إقصائهم.';
|
|
|
|
@override
|
|
String get rulesTipsPlayersTitle => '💡 نصائح للاعبين';
|
|
|
|
@override
|
|
String get rulesTipsPlayersBody =>
|
|
'• أعطِ تلميحات ذكية تُثبت معرفتك بالكلمة، لكن ليست واضحة جدًا ليستغلها المنتحل.\n• راقب من يعطي إجابات غامضة أو عامة.\n• استخدم الملاحظات لتدوين ما يقوله كل شخص.\n• لا تقل الكلمة مباشرة، فهذا يساعد المنتحل!';
|
|
|
|
@override
|
|
String get rulesTipsImpostorTitle => '🎭 نصائح للمنتحل';
|
|
|
|
@override
|
|
String get rulesTipsImpostorBody =>
|
|
'• استمع بانتباه لتلميحات الآخرين.\n• حاول استنتاج الكلمة لتقديم تلميحات مقنعة.\n• لا تكن أول من يتحدث إن لم تكن متأكدًا.\n• إذا حصلت على تلميح الفئة، استغله لصالحك.\n• اتّهم الآخرين لصرف الانتباه عنك.';
|
|
|
|
@override
|
|
String get rulesModesTitle => '📱 أوضاع اللعب';
|
|
|
|
@override
|
|
String get rulesModesBody =>
|
|
'• جهاز واحد: الجميع يشارك نفس الجهاز. كل لاعب يرى كلمته بالضغط المطول على الزر.\n\n• أجهزة متعددة: كل لاعب يستخدم جهازه الخاص. يتم الاتصال عبر بلوتوث/WiFi Direct بدون حاجة للإنترنت.';
|
|
|
|
@override
|
|
String get rulesExampleTitle => '✏️ مثال على لعبة';
|
|
|
|
@override
|
|
String get rulesExampleBody =>
|
|
'الكلمة السرية: \"بيتزا\"\n\n• أحمد: \"تُؤكل ساخنة\" ✓\n• فاطمة: \"تأتي في صندوق\" ✓\n• ليلى (المنتحل): \"شيء شائع جدًا\" 🤔\n• خالد: \"عليها جبنة\" ✓\n\nإجابة ليلى كانت عامة جدًا... مشبوهة!';
|
|
|
|
@override
|
|
String get joinGameTitle => 'الانضمام إلى لعبة';
|
|
|
|
@override
|
|
String get multiDeviceMode => 'وضع الأجهزة المتعددة';
|
|
|
|
@override
|
|
String get scanQrDescription =>
|
|
'امسح رمز QR الذي يعرضه المضيف للاتصال باللعبة عبر بلوتوث/WiFi Direct.';
|
|
|
|
@override
|
|
String get comingSoon => 'قريبًا';
|
|
|
|
@override
|
|
String get nearbyNotAvailable =>
|
|
'اتصال الأجهزة المتعددة عبر Nearby Connections يتطلب أجهزة أندرويد فعلية.\n\nحاليًا، استخدم وضع \"جهاز واحد\" للعب على جهاز مشترك.';
|
|
|
|
@override
|
|
String get back => 'رجوع';
|
|
|
|
@override
|
|
String get yes => 'نعم';
|
|
|
|
@override
|
|
String get no => 'لا';
|
|
|
|
@override
|
|
String get cancel => 'إلغاء';
|
|
|
|
@override
|
|
String get accept => 'قبول';
|
|
|
|
@override
|
|
String get next => 'التالي';
|
|
|
|
@override
|
|
String get settingsTitle => 'الإعدادات';
|
|
|
|
@override
|
|
String get language => 'اللغة';
|
|
|
|
@override
|
|
String get soundVolume => 'مستوى المؤثرات الصوتية';
|
|
|
|
@override
|
|
String get vibration => 'الاهتزاز';
|
|
|
|
@override
|
|
String get about => 'حول التطبيق';
|
|
|
|
@override
|
|
String get version => 'الإصدار';
|
|
|
|
@override
|
|
String get developer => 'المطوّر';
|
|
|
|
@override
|
|
String get licenses => 'التراخيص';
|
|
|
|
@override
|
|
String get scanToJoin => 'امسح رمز QR للانضمام';
|
|
|
|
@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 الخاص بالمضيف';
|
|
|
|
@override
|
|
String get yourName => 'اسمك';
|
|
|
|
@override
|
|
String get nameRequired => 'اكتب اسمك';
|
|
|
|
@override
|
|
String get connectingTo => 'جارٍ الاتصال بـ';
|
|
|
|
@override
|
|
String get scanQR => 'مسح رمز QR';
|
|
|
|
@override
|
|
String get scanHostQR => 'وجّه الكاميرا إلى رمز QR للمضيف';
|
|
|
|
@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 للمضيف';
|
|
|
|
@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 => 'امسح هذا الرمز من هاتف آخر';
|
|
|
|
@override
|
|
String get gameUsers => 'مستخدمو اللعبة';
|
|
|
|
@override
|
|
String get selectedPlayers => 'اللاعبون المحددون';
|
|
|
|
@override
|
|
String get connectedPhones => 'الهواتف المتصلة';
|
|
|
|
@override
|
|
String get selectedOnThisPhone => 'محدد على هذا الهاتف';
|
|
|
|
@override
|
|
String get selectedByAnotherDevice => 'محدد على جهاز آخر';
|
|
|
|
@override
|
|
String get available => 'متاح';
|
|
|
|
@override
|
|
String get notAvailable => 'غير متاح';
|
|
|
|
@override
|
|
String get release => 'تحرير';
|
|
|
|
@override
|
|
String get select => 'اختيار';
|
|
|
|
@override
|
|
String get delete => 'حذف';
|
|
|
|
@override
|
|
String get selectAtLeastThreeUsersToStart =>
|
|
'اختر 3 مستخدمين على الأقل للبدء.';
|
|
|
|
@override
|
|
String get hostPhoneMustSelectUser =>
|
|
'يجب أن يختار هاتف المضيف مستخدمًا واحدًا على الأقل.';
|
|
|
|
@override
|
|
String get roomNoLongerInLobby => 'لم تعد الغرفة في ردهة الانتظار.';
|
|
|
|
@override
|
|
String get completeUserSelectionToStart => 'أكمل اختيار المستخدمين للبدء.';
|
|
|
|
@override
|
|
String get preparingSecureRoom => 'جارٍ تجهيز الغرفة الآمنة';
|
|
|
|
@override
|
|
String get searchingNearbyBluetoothGames =>
|
|
'البحث عن جولات قريبة عبر البلوتوث';
|
|
|
|
@override
|
|
String get tapToJoin => 'اضغط للانضمام';
|
|
|
|
@override
|
|
String get bluetoothLocationPermissionsRequired =>
|
|
'يلزم إذنا البلوتوث والموقع للبحث عن جولات.';
|
|
|
|
@override
|
|
String get bluetoothLocationPermissionsShort => 'يلزم إذنا البلوتوث والموقع';
|
|
|
|
@override
|
|
String get couldNotStartSearch =>
|
|
'تعذّر بدء البحث. تحقق من البلوتوث والموقع.';
|
|
|
|
@override
|
|
String couldNotConnectToHost(String host) {
|
|
return 'تعذّر الاتصال بـ $host';
|
|
}
|
|
|
|
@override
|
|
String get room => 'غرفة';
|
|
|
|
@override
|
|
String get singleDeviceSubtitle => 'اللعب على هذا الجهاز';
|
|
|
|
@override
|
|
String get singleDeviceDescription =>
|
|
'مثالي للعب معًا بتمرير الهاتف. إعداد سريع ومباشر.';
|
|
|
|
@override
|
|
String get multiDeviceSubtitle => 'كل لاعب على هاتفه';
|
|
|
|
@override
|
|
String get multiDeviceDescription =>
|
|
'أنشئ غرفة مميزة، وشارك رمز QR، وأدر المستخدمين من ردهة الانتظار.';
|
|
|
|
@override
|
|
String get singleDeviceGameLabel => 'اللعب على هذا الجهاز';
|
|
|
|
@override
|
|
String get multiDeviceGameLabel => 'لعب متعدد الأجهزة';
|
|
|
|
@override
|
|
String get mainDeviceUser => 'المستخدم الرئيسي للجهاز';
|
|
|
|
@override
|
|
String get couldNotCreateRoom => 'تعذّر إنشاء الغرفة. تحقق من البلوتوث.';
|
|
|
|
@override
|
|
String cannotStartWithReason(String reason) {
|
|
return 'تعذّر البدء: $reason';
|
|
}
|
|
|
|
@override
|
|
String get invalidRoom => 'غرفة غير صالحة';
|
|
|
|
@override
|
|
String get defaultPlayerName => 'لاعب';
|
|
|
|
@override
|
|
String get play => 'العب';
|
|
|
|
@override
|
|
String get history => 'السجل';
|
|
|
|
@override
|
|
String get mainTagline => 'اكتشف المنتحل قبل فوات الأوان';
|
|
|
|
@override
|
|
String get deviceProfile => 'الملف الشخصي للجهاز';
|
|
|
|
@override
|
|
String get profileName => 'الاسم';
|
|
|
|
@override
|
|
String get profileNick => 'اللقب';
|
|
|
|
@override
|
|
String get save => 'حفظ';
|
|
|
|
@override
|
|
String get automaticLanguage => 'تلقائي';
|
|
|
|
@override
|
|
String get noSavedGames => 'لا توجد مباريات محفوظة بعد.';
|
|
|
|
@override
|
|
String get errorNoGame => 'خطأ: لا توجد مباراة';
|
|
|
|
@override
|
|
String get disconnectedPlayersWarning => 'يوجد لاعبون بأجهزة غير متصلة.';
|
|
|
|
@override
|
|
String get assumeOnThisPhone => 'تولّي على هذا الهاتف';
|
|
|
|
@override
|
|
String get noResult => 'لا توجد نتيجة';
|
|
|
|
@override
|
|
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 إلى الجولة';
|
|
}
|
|
|
|
@override
|
|
String get leaveGameTitle => 'هل تريد مغادرة الجولة؟';
|
|
|
|
@override
|
|
String get leaveGameSingleDevice =>
|
|
'ستفقد الجولة الجارية ولن يمكن استعادتها.';
|
|
|
|
@override
|
|
String get leaveGameHost =>
|
|
'أنت المضيف: إذا غادرت ستنتهي الجولة لجميع اللاعبين.';
|
|
|
|
@override
|
|
String get leaveGameClient =>
|
|
'ستغادر الجولة. يمكنك العودة ما دام المضيف يبقيها مفتوحة.';
|
|
|
|
@override
|
|
String get stayInGame => 'متابعة اللعب';
|
|
|
|
@override
|
|
String get permissionsNeededTitle => 'أذونات مطلوبة';
|
|
|
|
@override
|
|
String get permissionsNeededBody => 'لوضع اللعب الجماعي نحتاج إلى:';
|
|
|
|
@override
|
|
String get openAppSettingsQuestion => 'هل تريد فتح إعدادات التطبيق؟';
|
|
|
|
@override
|
|
String get openSettings => 'فتح الإعدادات';
|
|
|
|
@override
|
|
String get permissionLocation => 'الموقع';
|
|
|
|
@override
|
|
String get permissionBluetoothAdvertise => 'بلوتوث (الإعلان)';
|
|
|
|
@override
|
|
String get permissionBluetoothConnect => 'بلوتوث (الاتصال)';
|
|
|
|
@override
|
|
String get permissionBluetoothScan => 'بلوتوث (المسح)';
|
|
|
|
@override
|
|
String get permissionNearbyWifi => 'واي فاي قريب';
|
|
}
|