v0.2.0: i18n 18 idiomas + pantalla ajustes + bancos multiidioma
Internacionalización completa: - 18 ficheros .arb: es, en, fr, pt, de, it, ru, ja, ko, zh, zh_TW, ar, hi, tr, pl, nl, ca, eu - Todos los strings extraídos de todas las pantallas - Detección automática de idioma del sistema - Selector manual en pantalla de ajustes Pantalla de ajustes nueva: - Selector de idioma con banderas emoji - Vibración ON/OFF - Acerca de (versión, desarrollador) Bancos de palabras multiidioma: - palabras.json (castellano, 1000 palabras) - palabras_en.json (inglés, 1000 palabras) - palabras_fr.json (francés, 1000 palabras) - Fallback a castellano si no hay banco del idioma 13138 líneas Dart, 39 ficheros, 0 issues en flutter analyze
This commit is contained in:
473
lib/l10n/generated/app_localizations_ar.dart
Normal file
473
lib/l10n/generated/app_localizations_ar.dart
Normal file
@@ -0,0 +1,473 @@
|
||||
// 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 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 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 => 'التراخيص';
|
||||
}
|
||||
Reference in New Issue
Block a user