más mejoras

This commit is contained in:
2026-05-10 23:54:09 +02:00
parent 873a5b7f4a
commit a93bab290a
42 changed files with 1365 additions and 784 deletions
+48 -34
View File
@@ -1,20 +1,16 @@
{ {
"@@locale": "ar", "@@locale": "ar",
"appTitle": "المنتحل", "appTitle": "المنتحل",
"subtitle": "لعبة تخمين اجتماعية", "subtitle": "لعبة تخمين اجتماعية",
"loadingWords": "جارٍ تحميل الكلمات...", "loadingWords": "جارٍ تحميل الكلمات...",
"playersRange": "3-20 لاعبًا • بدون إنترنت", "playersRange": "3-20 لاعبًا • بدون إنترنت",
"createGame": "إنشاء لعبة", "createGame": "إنشاء لعبة",
"joinGame": "الانضمام إلى لعبة", "joinGame": "الانضمام إلى لعبة",
"howToPlay": "كيفية اللعب", "howToPlay": "كيفية اللعب",
"settings": "الإعدادات", "settings": "الإعدادات",
"gameMode": "وضع اللعب", "gameMode": "وضع اللعب",
"singleDevice": "جهاز واحد", "singleDevice": "جهاز واحد",
"multiDevice": "أجهزة متعددة", "multiDevice": "أجهزة متعددة",
"category": "الفئة", "category": "الفئة",
"categoryAll": "الكل", "categoryAll": "الكل",
"categoryAnimals": "حيوانات", "categoryAnimals": "حيوانات",
@@ -27,11 +23,12 @@
"categoryMovies": "أفلام", "categoryMovies": "أفلام",
"categoryMusic": "موسيقى", "categoryMusic": "موسيقى",
"categoryTechnology": "تكنولوجيا", "categoryTechnology": "تكنولوجيا",
"playersCount": "اللاعبون ({count})", "playersCount": "اللاعبون ({count})",
"@playersCount": { "@playersCount": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"playersRangeHint": "3-20", "playersRangeHint": "3-20",
@@ -39,7 +36,6 @@
"playerAlreadyExists": "يوجد لاعب بهذا الاسم بالفعل", "playerAlreadyExists": "يوجد لاعب بهذا الاسم بالفعل",
"maxPlayersReached": "الحد الأقصى 20 لاعبًا", "maxPlayersReached": "الحد الأقصى 20 لاعبًا",
"minPlayersRequired": "يلزم 3 لاعبين على الأقل", "minPlayersRequired": "يلزم 3 لاعبين على الأقل",
"configuration": "الإعدادات", "configuration": "الإعدادات",
"impostors": "🎭 المنتحلون", "impostors": "🎭 المنتحلون",
"impostorClue": "🔍 تلميح للمنتحل", "impostorClue": "🔍 تلميح للمنتحل",
@@ -50,15 +46,15 @@
"twoMin": "2 د", "twoMin": "2 د",
"threeMin": "3 د", "threeMin": "3 د",
"fiveMin": "5 د", "fiveMin": "5 د",
"startGame": "بدء اللعبة", "startGame": "بدء اللعبة",
"seeYourWord": "اعرف كلمتك", "seeYourWord": "اعرف كلمتك",
"eachPlayerMustSee": "يجب على كل لاعب رؤية كلمته بسرية", "eachPlayerMustSee": "يجب على كل لاعب رؤية كلمته بسرية",
"roundNumber": "الجولة {round}", "roundNumber": "الجولة {round}",
"@roundNumber": { "@roundNumber": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"alreadySeen": "شاهد كلمته بالفعل", "alreadySeen": "شاهد كلمته بالفعل",
@@ -67,16 +63,19 @@
"playersRemaining": "متبقٍّ {count} لاعبين", "playersRemaining": "متبقٍّ {count} لاعبين",
"@playersRemaining": { "@playersRemaining": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"youAreImpostor": "أنت المنتحل!", "youAreImpostor": "أنت المنتحل!",
"yourWordIs": "كلمتك هي:", "yourWordIs": "كلمتك هي:",
"clueCategory": "تلميح: {category}", "clueCategory": "تلميح: {category}",
"@clueCategory": { "@clueCategory": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"holdToSeeWord": "اضغط مطولًا لرؤية كلمتك", "holdToSeeWord": "اضغط مطولًا لرؤية كلمتك",
@@ -84,11 +83,12 @@
"showingWord": "👁️ جارٍ العرض...", "showingWord": "👁️ جارٍ العرض...",
"holdToSee": "👆 اضغط مطولًا للعرض", "holdToSee": "👆 اضغط مطولًا للعرض",
"seenMyWord": "رأيت كلمتي", "seenMyWord": "رأيت كلمتي",
"debateRound": "النقاش - الجولة {round}", "debateRound": "النقاش - الجولة {round}",
"@debateRound": { "@debateRound": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"timeUp": "⏰ انتهى الوقت!", "timeUp": "⏰ انتهى الوقت!",
@@ -97,21 +97,28 @@
"activePlayersInfo": "{active} نشطون • {impostors} منتحل(ون) مختبئون", "activePlayersInfo": "{active} نشطون • {impostors} منتحل(ون) مختبئون",
"@activePlayersInfo": { "@activePlayersInfo": {
"placeholders": { "placeholders": {
"active": {"type": "int"}, "active": {
"impostors": {"type": "int"} "type": "int"
},
"impostors": {
"type": "int"
}
} }
}, },
"eliminated": "تم إقصاؤه", "eliminated": "تم إقصاؤه",
"notes": "ملاحظات", "notes": "ملاحظات",
"goToVoting": "الانتقال للتصويت", "goToVoting": "الانتقال للتصويت",
"voting": "🗳️ التصويت", "voting": "🗳️ التصويت",
"turnToVote": "دورك للتصويت:", "turnToVote": "دورك للتصويت:",
"votesProgress": "الأصوات: {current}/{total}", "votesProgress": "الأصوات: {current}/{total}",
"@votesProgress": { "@votesProgress": {
"placeholders": { "placeholders": {
"current": {"type": "int"}, "current": {
"total": {"type": "int"} "type": "int"
},
"total": {
"type": "int"
}
} }
}, },
"whoIsImpostor": "من تعتقد أنه المنتحل؟", "whoIsImpostor": "من تعتقد أنه المنتحل؟",
@@ -120,7 +127,6 @@
"allVoted": "صوّت الجميع!", "allVoted": "صوّت الجميع!",
"tapToReveal": "اضغط لكشف النتيجة", "tapToReveal": "اضغط لكشف النتيجة",
"revealResult": "كشف النتيجة", "revealResult": "كشف النتيجة",
"result": "النتيجة", "result": "النتيجة",
"revealing": "جارٍ الكشف...", "revealing": "جارٍ الكشف...",
"wasImpostor": "كان المنتحل! 🎉", "wasImpostor": "كان المنتحل! 🎉",
@@ -129,7 +135,6 @@
"seeEndResult": "عرض النتيجة النهائية", "seeEndResult": "عرض النتيجة النهائية",
"impostorGuessWord": "هل يخمّن المنتحل الكلمة؟", "impostorGuessWord": "هل يخمّن المنتحل الكلمة؟",
"nextRound": "الجولة التالية", "nextRound": "الجولة التالية",
"impostorGuessTitle": "🎯 تخمين المنتحل", "impostorGuessTitle": "🎯 تخمين المنتحل",
"impostorCanGuess": "يمكن للمنتحل المُقصى\nمحاولة تخمين الكلمة", "impostorCanGuess": "يمكن للمنتحل المُقصى\nمحاولة تخمين الكلمة",
"ifCorrectImpostorsWin": "إذا أصاب، يفوز المنتحلون!", "ifCorrectImpostorsWin": "إذا أصاب، يفوز المنتحلون!",
@@ -140,20 +145,23 @@
"theWordWas": "الكلمة كانت: {word}", "theWordWas": "الكلمة كانت: {word}",
"@theWordWas": { "@theWordWas": {
"placeholders": { "placeholders": {
"word": {"type": "String"} "word": {
"type": "String"
}
} }
}, },
"impostorsWin": "فاز المنتحلون!", "impostorsWin": "فاز المنتحلون!",
"wrongGuess": "تخمين خاطئ!", "wrongGuess": "تخمين خاطئ!",
"gameContinues": "اللعبة مستمرة...", "gameContinues": "اللعبة مستمرة...",
"gameOver": "انتهت اللعبة", "gameOver": "انتهت اللعبة",
"playersWin": "فاز اللاعبون!", "playersWin": "فاز اللاعبون!",
"theSecretWordWas": "🔍 الكلمة كانت:", "theSecretWordWas": "🔍 الكلمة كانت:",
"categoryLabel": "الفئة: {category}", "categoryLabel": "الفئة: {category}",
"@categoryLabel": { "@categoryLabel": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"theImpostorWas": "🎭 المنتحل كان:", "theImpostorWas": "🎭 المنتحل كان:",
@@ -162,13 +170,16 @@
"roundElimination": "الجولة {round}: {name}", "roundElimination": "الجولة {round}: {name}",
"@roundElimination": { "@roundElimination": {
"placeholders": { "placeholders": {
"round": {"type": "int"}, "round": {
"name": {"type": "String"} "type": "int"
},
"name": {
"type": "String"
}
} }
}, },
"rematch": "إعادة المباراة", "rematch": "إعادة المباراة",
"mainMenu": "القائمة الرئيسية", "mainMenu": "القائمة الرئيسية",
"notesTitle": "📝 ملاحظات", "notesTitle": "📝 ملاحظات",
"notesSaved": "تم حفظ الملاحظات", "notesSaved": "تم حفظ الملاحظات",
"whoAreYou": "من أنت؟", "whoAreYou": "من أنت؟",
@@ -176,14 +187,15 @@
"notesOf": "ملاحظات {name}", "notesOf": "ملاحظات {name}",
"@notesOf": { "@notesOf": {
"placeholders": { "placeholders": {
"name": {"type": "String"} "name": {
"type": "String"
}
} }
}, },
"notesAboutPlayers": "ملاحظات عن كل لاعب", "notesAboutPlayers": "ملاحظات عن كل لاعب",
"playerNoteHint": "ماذا قال؟ هل هو مشبوه؟", "playerNoteHint": "ماذا قال؟ هل هو مشبوه؟",
"freeNote": "ملاحظة حرة", "freeNote": "ملاحظة حرة",
"freeNoteHint": "ملاحظات شخصية...", "freeNoteHint": "ملاحظات شخصية...",
"rulesTitle": "📖 كيفية اللعب", "rulesTitle": "📖 كيفية اللعب",
"rulesWhatIsTitle": "🎭 ما هو المنتحل؟", "rulesWhatIsTitle": "🎭 ما هو المنتحل؟",
"rulesWhatIsBody": "لعبة تخمين اجتماعية لـ 3-20 لاعبًا. الجميع يحصل على كلمة سرية... ما عدا المنتحل! مهمتك: اكتشف من يتظاهر.", "rulesWhatIsBody": "لعبة تخمين اجتماعية لـ 3-20 لاعبًا. الجميع يحصل على كلمة سرية... ما عدا المنتحل! مهمتك: اكتشف من يتظاهر.",
@@ -199,20 +211,17 @@
"rulesModesBody": "• جهاز واحد: الجميع يشارك نفس الجهاز. كل لاعب يرى كلمته بالضغط المطول على الزر.\n\n• أجهزة متعددة: كل لاعب يستخدم جهازه الخاص. يتم الاتصال عبر بلوتوث/WiFi Direct بدون حاجة للإنترنت.", "rulesModesBody": "• جهاز واحد: الجميع يشارك نفس الجهاز. كل لاعب يرى كلمته بالضغط المطول على الزر.\n\n• أجهزة متعددة: كل لاعب يستخدم جهازه الخاص. يتم الاتصال عبر بلوتوث/WiFi Direct بدون حاجة للإنترنت.",
"rulesExampleTitle": "✏️ مثال على لعبة", "rulesExampleTitle": "✏️ مثال على لعبة",
"rulesExampleBody": "الكلمة السرية: \"بيتزا\"\n\n• أحمد: \"تُؤكل ساخنة\" ✓\n• فاطمة: \"تأتي في صندوق\" ✓\n• ليلى (المنتحل): \"شيء شائع جدًا\" 🤔\n• خالد: \"عليها جبنة\" ✓\n\nإجابة ليلى كانت عامة جدًا... مشبوهة!", "rulesExampleBody": "الكلمة السرية: \"بيتزا\"\n\n• أحمد: \"تُؤكل ساخنة\" ✓\n• فاطمة: \"تأتي في صندوق\" ✓\n• ليلى (المنتحل): \"شيء شائع جدًا\" 🤔\n• خالد: \"عليها جبنة\" ✓\n\nإجابة ليلى كانت عامة جدًا... مشبوهة!",
"joinGameTitle": "الانضمام إلى لعبة", "joinGameTitle": "الانضمام إلى لعبة",
"multiDeviceMode": "وضع الأجهزة المتعددة", "multiDeviceMode": "وضع الأجهزة المتعددة",
"scanQrDescription": "امسح رمز QR الذي يعرضه المضيف للاتصال باللعبة عبر بلوتوث/WiFi Direct.", "scanQrDescription": "امسح رمز QR الذي يعرضه المضيف للاتصال باللعبة عبر بلوتوث/WiFi Direct.",
"comingSoon": "قريبًا", "comingSoon": "قريبًا",
"nearbyNotAvailable": "اتصال الأجهزة المتعددة عبر Nearby Connections يتطلب أجهزة أندرويد فعلية.\n\nحاليًا، استخدم وضع \"جهاز واحد\" للعب على جهاز مشترك.", "nearbyNotAvailable": "اتصال الأجهزة المتعددة عبر Nearby Connections يتطلب أجهزة أندرويد فعلية.\n\nحاليًا، استخدم وضع \"جهاز واحد\" للعب على جهاز مشترك.",
"back": "رجوع", "back": "رجوع",
"yes": "نعم", "yes": "نعم",
"no": "لا", "no": "لا",
"cancel": "إلغاء", "cancel": "إلغاء",
"accept": "قبول", "accept": "قبول",
"next": "التالي", "next": "التالي",
"settingsTitle": "الإعدادات", "settingsTitle": "الإعدادات",
"language": "اللغة", "language": "اللغة",
"soundVolume": "مستوى المؤثرات الصوتية", "soundVolume": "مستوى المؤثرات الصوتية",
@@ -257,5 +266,10 @@
"defaultPlayerName": "لاعب", "defaultPlayerName": "لاعب",
"play": "العب", "play": "العب",
"history": "السجل", "history": "السجل",
"mainTagline": "اكتشف المنتحل قبل فوات الأوان" "mainTagline": "اكتشف المنتحل قبل فوات الأوان",
"deviceProfile": "الملف الشخصي للجهاز",
"profileName": "الاسم",
"profileNick": "اللقب",
"save": "حفظ",
"automaticLanguage": "تلقائي"
} }
+48 -34
View File
@@ -1,20 +1,16 @@
{ {
"@@locale": "ca", "@@locale": "ca",
"appTitle": "L'Impostor", "appTitle": "L'Impostor",
"subtitle": "Joc de deducció social", "subtitle": "Joc de deducció social",
"loadingWords": "Carregant paraules...", "loadingWords": "Carregant paraules...",
"playersRange": "3-20 jugadors • Sense internet", "playersRange": "3-20 jugadors • Sense internet",
"createGame": "Crear partida", "createGame": "Crear partida",
"joinGame": "Unir-se a partida", "joinGame": "Unir-se a partida",
"howToPlay": "Com jugar", "howToPlay": "Com jugar",
"settings": "Configuració", "settings": "Configuració",
"gameMode": "Mode de joc", "gameMode": "Mode de joc",
"singleDevice": "Un sol mòbil", "singleDevice": "Un sol mòbil",
"multiDevice": "Multimòbil", "multiDevice": "Multimòbil",
"category": "Categoria", "category": "Categoria",
"categoryAll": "Totes", "categoryAll": "Totes",
"categoryAnimals": "Animals", "categoryAnimals": "Animals",
@@ -27,11 +23,12 @@
"categoryMovies": "Pel·lícules", "categoryMovies": "Pel·lícules",
"categoryMusic": "Música", "categoryMusic": "Música",
"categoryTechnology": "Tecnologia", "categoryTechnology": "Tecnologia",
"playersCount": "Jugadors ({count})", "playersCount": "Jugadors ({count})",
"@playersCount": { "@playersCount": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"playersRangeHint": "3-20", "playersRangeHint": "3-20",
@@ -39,7 +36,6 @@
"playerAlreadyExists": "Ja existeix un jugador amb aquest nom", "playerAlreadyExists": "Ja existeix un jugador amb aquest nom",
"maxPlayersReached": "Màxim 20 jugadors", "maxPlayersReached": "Màxim 20 jugadors",
"minPlayersRequired": "Calen almenys 3 jugadors", "minPlayersRequired": "Calen almenys 3 jugadors",
"configuration": "Configuració", "configuration": "Configuració",
"impostors": "🎭 Impostors", "impostors": "🎭 Impostors",
"impostorClue": "🔍 Pista per a l'impostor", "impostorClue": "🔍 Pista per a l'impostor",
@@ -50,15 +46,15 @@
"twoMin": "2 min", "twoMin": "2 min",
"threeMin": "3 min", "threeMin": "3 min",
"fiveMin": "5 min", "fiveMin": "5 min",
"startGame": "Iniciar partida", "startGame": "Iniciar partida",
"seeYourWord": "Veure la teva paraula", "seeYourWord": "Veure la teva paraula",
"eachPlayerMustSee": "Cada jugador ha de veure la seva paraula en secret", "eachPlayerMustSee": "Cada jugador ha de veure la seva paraula en secret",
"roundNumber": "Ronda {round}", "roundNumber": "Ronda {round}",
"@roundNumber": { "@roundNumber": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"alreadySeen": "Ja ha vist la seva paraula", "alreadySeen": "Ja ha vist la seva paraula",
@@ -67,16 +63,19 @@
"playersRemaining": "Falten {count} jugadors", "playersRemaining": "Falten {count} jugadors",
"@playersRemaining": { "@playersRemaining": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"youAreImpostor": "Ets l'impostor!", "youAreImpostor": "Ets l'impostor!",
"yourWordIs": "La teva paraula és:", "yourWordIs": "La teva paraula és:",
"clueCategory": "Pista: {category}", "clueCategory": "Pista: {category}",
"@clueCategory": { "@clueCategory": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"holdToSeeWord": "Mantén premut per veure la teva paraula", "holdToSeeWord": "Mantén premut per veure la teva paraula",
@@ -84,11 +83,12 @@
"showingWord": "👁️ Mostrant...", "showingWord": "👁️ Mostrant...",
"holdToSee": "👆 Mantén premut per veure", "holdToSee": "👆 Mantén premut per veure",
"seenMyWord": "He vist la meva paraula", "seenMyWord": "He vist la meva paraula",
"debateRound": "Debat - Ronda {round}", "debateRound": "Debat - Ronda {round}",
"@debateRound": { "@debateRound": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"timeUp": "⏰ Temps esgotat!", "timeUp": "⏰ Temps esgotat!",
@@ -97,21 +97,28 @@
"activePlayersInfo": "{active} actius • {impostors} impostor(s) ocults", "activePlayersInfo": "{active} actius • {impostors} impostor(s) ocults",
"@activePlayersInfo": { "@activePlayersInfo": {
"placeholders": { "placeholders": {
"active": {"type": "int"}, "active": {
"impostors": {"type": "int"} "type": "int"
},
"impostors": {
"type": "int"
}
} }
}, },
"eliminated": "Eliminat", "eliminated": "Eliminat",
"notes": "Notes", "notes": "Notes",
"goToVoting": "Anar a votació", "goToVoting": "Anar a votació",
"voting": "🗳️ Votació", "voting": "🗳️ Votació",
"turnToVote": "Torn de votar:", "turnToVote": "Torn de votar:",
"votesProgress": "Vots: {current}/{total}", "votesProgress": "Vots: {current}/{total}",
"@votesProgress": { "@votesProgress": {
"placeholders": { "placeholders": {
"current": {"type": "int"}, "current": {
"total": {"type": "int"} "type": "int"
},
"total": {
"type": "int"
}
} }
}, },
"whoIsImpostor": "Qui creus que és l'impostor?", "whoIsImpostor": "Qui creus que és l'impostor?",
@@ -120,7 +127,6 @@
"allVoted": "Tots han votat!", "allVoted": "Tots han votat!",
"tapToReveal": "Toca per revelar el resultat", "tapToReveal": "Toca per revelar el resultat",
"revealResult": "Revelar resultat", "revealResult": "Revelar resultat",
"result": "Resultat", "result": "Resultat",
"revealing": "Revelant...", "revealing": "Revelant...",
"wasImpostor": "Era IMPOSTOR! 🎉", "wasImpostor": "Era IMPOSTOR! 🎉",
@@ -129,7 +135,6 @@
"seeEndResult": "Veure resultat final", "seeEndResult": "Veure resultat final",
"impostorGuessWord": "L'impostor endevina la paraula?", "impostorGuessWord": "L'impostor endevina la paraula?",
"nextRound": "Següent ronda", "nextRound": "Següent ronda",
"impostorGuessTitle": "🎯 Endevinalla de l'impostor", "impostorGuessTitle": "🎯 Endevinalla de l'impostor",
"impostorCanGuess": "L'impostor eliminat pot\nintentar endevinar la paraula", "impostorCanGuess": "L'impostor eliminat pot\nintentar endevinar la paraula",
"ifCorrectImpostorsWin": "Si encerta, els impostors guanyen!", "ifCorrectImpostorsWin": "Si encerta, els impostors guanyen!",
@@ -140,20 +145,23 @@
"theWordWas": "La paraula era: {word}", "theWordWas": "La paraula era: {word}",
"@theWordWas": { "@theWordWas": {
"placeholders": { "placeholders": {
"word": {"type": "String"} "word": {
"type": "String"
}
} }
}, },
"impostorsWin": "Els impostors guanyen!", "impostorsWin": "Els impostors guanyen!",
"wrongGuess": "No ha encertat!", "wrongGuess": "No ha encertat!",
"gameContinues": "La partida continua...", "gameContinues": "La partida continua...",
"gameOver": "Fi de partida", "gameOver": "Fi de partida",
"playersWin": "Els jugadors guanyen!", "playersWin": "Els jugadors guanyen!",
"theSecretWordWas": "🔍 La paraula era:", "theSecretWordWas": "🔍 La paraula era:",
"categoryLabel": "Categoria: {category}", "categoryLabel": "Categoria: {category}",
"@categoryLabel": { "@categoryLabel": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"theImpostorWas": "🎭 L'impostor era:", "theImpostorWas": "🎭 L'impostor era:",
@@ -162,13 +170,16 @@
"roundElimination": "Ronda {round}: {name}", "roundElimination": "Ronda {round}: {name}",
"@roundElimination": { "@roundElimination": {
"placeholders": { "placeholders": {
"round": {"type": "int"}, "round": {
"name": {"type": "String"} "type": "int"
},
"name": {
"type": "String"
}
} }
}, },
"rematch": "Revenja", "rematch": "Revenja",
"mainMenu": "Menú principal", "mainMenu": "Menú principal",
"notesTitle": "📝 Notes", "notesTitle": "📝 Notes",
"notesSaved": "Notes desades", "notesSaved": "Notes desades",
"whoAreYou": "Qui ets?", "whoAreYou": "Qui ets?",
@@ -176,14 +187,15 @@
"notesOf": "Notes de {name}", "notesOf": "Notes de {name}",
"@notesOf": { "@notesOf": {
"placeholders": { "placeholders": {
"name": {"type": "String"} "name": {
"type": "String"
}
} }
}, },
"notesAboutPlayers": "Apunts sobre cada jugador", "notesAboutPlayers": "Apunts sobre cada jugador",
"playerNoteHint": "Què ha dit? Sospitós?", "playerNoteHint": "Què ha dit? Sospitós?",
"freeNote": "Nota lliure", "freeNote": "Nota lliure",
"freeNoteHint": "Apunts personals...", "freeNoteHint": "Apunts personals...",
"rulesTitle": "📖 Com jugar", "rulesTitle": "📖 Com jugar",
"rulesWhatIsTitle": "🎭 Què és L'Impostor?", "rulesWhatIsTitle": "🎭 Què és L'Impostor?",
"rulesWhatIsBody": "Un joc de deducció social per a 3-20 jugadors. Tots reben una paraula secreta... excepte l'impostor! La teva missió: descobrir qui fingeix.", "rulesWhatIsBody": "Un joc de deducció social per a 3-20 jugadors. Tots reben una paraula secreta... excepte l'impostor! La teva missió: descobrir qui fingeix.",
@@ -199,20 +211,17 @@
"rulesModesBody": "• Un sol mòbil: tots comparteixen el dispositiu. Cada jugador veu la seva paraula prement i mantenint un botó.\n\n• Multimòbil: cada jugador fa servir el seu propi dispositiu. Es connecten per Bluetooth/WiFi Direct sense necessitat d'internet.", "rulesModesBody": "• Un sol mòbil: tots comparteixen el dispositiu. Cada jugador veu la seva paraula prement i mantenint un botó.\n\n• Multimòbil: cada jugador fa servir el seu propi dispositiu. Es connecten per Bluetooth/WiFi Direct sense necessitat d'internet.",
"rulesExampleTitle": "✏️ Exemple de partida", "rulesExampleTitle": "✏️ Exemple de partida",
"rulesExampleBody": "Paraula secreta: \"Pizza\"\n\n• Laia: \"Es menja calenta\" ✓\n• Jordi: \"Ve en una capsa\" ✓\n• Marta (impostor): \"És molt popular\" 🤔\n• Pau: \"Té formatge\" ✓\n\nLa Marta va donar una resposta molt genèrica... Sospitosa!", "rulesExampleBody": "Paraula secreta: \"Pizza\"\n\n• Laia: \"Es menja calenta\" ✓\n• Jordi: \"Ve en una capsa\" ✓\n• Marta (impostor): \"És molt popular\" 🤔\n• Pau: \"Té formatge\" ✓\n\nLa Marta va donar una resposta molt genèrica... Sospitosa!",
"joinGameTitle": "Unir-se a partida", "joinGameTitle": "Unir-se a partida",
"multiDeviceMode": "Mode multimòbil", "multiDeviceMode": "Mode multimòbil",
"scanQrDescription": "Escaneja el codi QR que mostra l'amfitrió per connectar-te a la partida via Bluetooth/WiFi Direct.", "scanQrDescription": "Escaneja el codi QR que mostra l'amfitrió per connectar-te a la partida via Bluetooth/WiFi Direct.",
"comingSoon": "Properament", "comingSoon": "Properament",
"nearbyNotAvailable": "La connexió multimòbil amb Nearby Connections requereix dispositius Android físics.\n\nDe moment, fes servir el mode \"Un sol mòbil\" per jugar en un dispositiu compartit.", "nearbyNotAvailable": "La connexió multimòbil amb Nearby Connections requereix dispositius Android físics.\n\nDe moment, fes servir el mode \"Un sol mòbil\" per jugar en un dispositiu compartit.",
"back": "Tornar", "back": "Tornar",
"yes": "Sí", "yes": "Sí",
"no": "No", "no": "No",
"cancel": "Cancel·lar", "cancel": "Cancel·lar",
"accept": "Acceptar", "accept": "Acceptar",
"next": "Següent", "next": "Següent",
"settingsTitle": "Configuració", "settingsTitle": "Configuració",
"language": "Idioma", "language": "Idioma",
"soundVolume": "Volum d'efectes", "soundVolume": "Volum d'efectes",
@@ -257,5 +266,10 @@
"defaultPlayerName": "Jugador", "defaultPlayerName": "Jugador",
"play": "Jugar", "play": "Jugar",
"history": "Historial", "history": "Historial",
"mainTagline": "Descobreix limpostor abans que siga massa tard" "mainTagline": "Descobreix limpostor abans que siga massa tard",
"deviceProfile": "Perfil del dispositiu",
"profileName": "Nom",
"profileNick": "Àlies",
"save": "Desa",
"automaticLanguage": "Automàtic"
} }
+48 -34
View File
@@ -1,20 +1,16 @@
{ {
"@@locale": "de", "@@locale": "de",
"appTitle": "Farolero", "appTitle": "Farolero",
"subtitle": "Soziales Deduktionsspiel", "subtitle": "Soziales Deduktionsspiel",
"loadingWords": "Wörter werden geladen...", "loadingWords": "Wörter werden geladen...",
"playersRange": "3-20 Spieler • Ohne Internet", "playersRange": "3-20 Spieler • Ohne Internet",
"createGame": "Spiel erstellen", "createGame": "Spiel erstellen",
"joinGame": "Spiel beitreten", "joinGame": "Spiel beitreten",
"howToPlay": "Spielanleitung", "howToPlay": "Spielanleitung",
"settings": "Einstellungen", "settings": "Einstellungen",
"gameMode": "Spielmodus", "gameMode": "Spielmodus",
"singleDevice": "Ein Gerät", "singleDevice": "Ein Gerät",
"multiDevice": "Mehrere Geräte", "multiDevice": "Mehrere Geräte",
"category": "Kategorie", "category": "Kategorie",
"categoryAll": "Alle", "categoryAll": "Alle",
"categoryAnimals": "Tiere", "categoryAnimals": "Tiere",
@@ -27,11 +23,12 @@
"categoryMovies": "Filme", "categoryMovies": "Filme",
"categoryMusic": "Musik", "categoryMusic": "Musik",
"categoryTechnology": "Technologie", "categoryTechnology": "Technologie",
"playersCount": "Spieler ({count})", "playersCount": "Spieler ({count})",
"@playersCount": { "@playersCount": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"playersRangeHint": "3-20", "playersRangeHint": "3-20",
@@ -39,7 +36,6 @@
"playerAlreadyExists": "Ein Spieler mit diesem Namen existiert bereits", "playerAlreadyExists": "Ein Spieler mit diesem Namen existiert bereits",
"maxPlayersReached": "Maximal 20 Spieler", "maxPlayersReached": "Maximal 20 Spieler",
"minPlayersRequired": "Mindestens 3 Spieler erforderlich", "minPlayersRequired": "Mindestens 3 Spieler erforderlich",
"configuration": "Konfiguration", "configuration": "Konfiguration",
"impostors": "🎭 Hochstapler", "impostors": "🎭 Hochstapler",
"impostorClue": "🔍 Hinweis für den Hochstapler", "impostorClue": "🔍 Hinweis für den Hochstapler",
@@ -50,15 +46,15 @@
"twoMin": "2 Min", "twoMin": "2 Min",
"threeMin": "3 Min", "threeMin": "3 Min",
"fiveMin": "5 Min", "fiveMin": "5 Min",
"startGame": "Spiel starten", "startGame": "Spiel starten",
"seeYourWord": "Dein Wort ansehen", "seeYourWord": "Dein Wort ansehen",
"eachPlayerMustSee": "Jeder Spieler muss sein Wort im Geheimen ansehen", "eachPlayerMustSee": "Jeder Spieler muss sein Wort im Geheimen ansehen",
"roundNumber": "Runde {round}", "roundNumber": "Runde {round}",
"@roundNumber": { "@roundNumber": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"alreadySeen": "Hat sein Wort bereits gesehen", "alreadySeen": "Hat sein Wort bereits gesehen",
@@ -67,16 +63,19 @@
"playersRemaining": "Noch {count} Spieler übrig", "playersRemaining": "Noch {count} Spieler übrig",
"@playersRemaining": { "@playersRemaining": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"youAreImpostor": "Du bist der Hochstapler!", "youAreImpostor": "Du bist der Hochstapler!",
"yourWordIs": "Dein Wort ist:", "yourWordIs": "Dein Wort ist:",
"clueCategory": "Hinweis: {category}", "clueCategory": "Hinweis: {category}",
"@clueCategory": { "@clueCategory": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"holdToSeeWord": "Gedrückt halten, um dein Wort zu sehen", "holdToSeeWord": "Gedrückt halten, um dein Wort zu sehen",
@@ -84,11 +83,12 @@
"showingWord": "👁️ Wird angezeigt...", "showingWord": "👁️ Wird angezeigt...",
"holdToSee": "👆 Gedrückt halten zum Ansehen", "holdToSee": "👆 Gedrückt halten zum Ansehen",
"seenMyWord": "Ich habe mein Wort gesehen", "seenMyWord": "Ich habe mein Wort gesehen",
"debateRound": "Diskussion - Runde {round}", "debateRound": "Diskussion - Runde {round}",
"@debateRound": { "@debateRound": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"timeUp": "⏰ Zeit abgelaufen!", "timeUp": "⏰ Zeit abgelaufen!",
@@ -97,21 +97,28 @@
"activePlayersInfo": "{active} aktiv • {impostors} versteckte(r) Hochstapler", "activePlayersInfo": "{active} aktiv • {impostors} versteckte(r) Hochstapler",
"@activePlayersInfo": { "@activePlayersInfo": {
"placeholders": { "placeholders": {
"active": {"type": "int"}, "active": {
"impostors": {"type": "int"} "type": "int"
},
"impostors": {
"type": "int"
}
} }
}, },
"eliminated": "Ausgeschieden", "eliminated": "Ausgeschieden",
"notes": "Notizen", "notes": "Notizen",
"goToVoting": "Zur Abstimmung", "goToVoting": "Zur Abstimmung",
"voting": "🗳️ Abstimmung", "voting": "🗳️ Abstimmung",
"turnToVote": "Jetzt abstimmen:", "turnToVote": "Jetzt abstimmen:",
"votesProgress": "Stimmen: {current}/{total}", "votesProgress": "Stimmen: {current}/{total}",
"@votesProgress": { "@votesProgress": {
"placeholders": { "placeholders": {
"current": {"type": "int"}, "current": {
"total": {"type": "int"} "type": "int"
},
"total": {
"type": "int"
}
} }
}, },
"whoIsImpostor": "Wer ist deiner Meinung nach der Hochstapler?", "whoIsImpostor": "Wer ist deiner Meinung nach der Hochstapler?",
@@ -120,7 +127,6 @@
"allVoted": "Alle haben abgestimmt!", "allVoted": "Alle haben abgestimmt!",
"tapToReveal": "Tippen, um das Ergebnis aufzudecken", "tapToReveal": "Tippen, um das Ergebnis aufzudecken",
"revealResult": "Ergebnis aufdecken", "revealResult": "Ergebnis aufdecken",
"result": "Ergebnis", "result": "Ergebnis",
"revealing": "Wird aufgedeckt...", "revealing": "Wird aufgedeckt...",
"wasImpostor": "War ein HOCHSTAPLER! 🎉", "wasImpostor": "War ein HOCHSTAPLER! 🎉",
@@ -129,7 +135,6 @@
"seeEndResult": "Endergebnis anzeigen", "seeEndResult": "Endergebnis anzeigen",
"impostorGuessWord": "Errät der Hochstapler das Wort?", "impostorGuessWord": "Errät der Hochstapler das Wort?",
"nextRound": "Nächste Runde", "nextRound": "Nächste Runde",
"impostorGuessTitle": "🎯 Tipp des Hochstaplers", "impostorGuessTitle": "🎯 Tipp des Hochstaplers",
"impostorCanGuess": "Der ausgeschiedene Hochstapler kann\nversuchen, das Wort zu erraten", "impostorCanGuess": "Der ausgeschiedene Hochstapler kann\nversuchen, das Wort zu erraten",
"ifCorrectImpostorsWin": "Bei richtigem Tipp gewinnen die Hochstapler!", "ifCorrectImpostorsWin": "Bei richtigem Tipp gewinnen die Hochstapler!",
@@ -140,20 +145,23 @@
"theWordWas": "Das Wort war: {word}", "theWordWas": "Das Wort war: {word}",
"@theWordWas": { "@theWordWas": {
"placeholders": { "placeholders": {
"word": {"type": "String"} "word": {
"type": "String"
}
} }
}, },
"impostorsWin": "Die Hochstapler gewinnen!", "impostorsWin": "Die Hochstapler gewinnen!",
"wrongGuess": "Falsch geraten!", "wrongGuess": "Falsch geraten!",
"gameContinues": "Das Spiel geht weiter...", "gameContinues": "Das Spiel geht weiter...",
"gameOver": "Spielende", "gameOver": "Spielende",
"playersWin": "Die Spieler gewinnen!", "playersWin": "Die Spieler gewinnen!",
"theSecretWordWas": "🔍 Das Wort war:", "theSecretWordWas": "🔍 Das Wort war:",
"categoryLabel": "Kategorie: {category}", "categoryLabel": "Kategorie: {category}",
"@categoryLabel": { "@categoryLabel": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"theImpostorWas": "🎭 Der Hochstapler war:", "theImpostorWas": "🎭 Der Hochstapler war:",
@@ -162,13 +170,16 @@
"roundElimination": "Runde {round}: {name}", "roundElimination": "Runde {round}: {name}",
"@roundElimination": { "@roundElimination": {
"placeholders": { "placeholders": {
"round": {"type": "int"}, "round": {
"name": {"type": "String"} "type": "int"
},
"name": {
"type": "String"
}
} }
}, },
"rematch": "Revanche", "rematch": "Revanche",
"mainMenu": "Hauptmenü", "mainMenu": "Hauptmenü",
"notesTitle": "📝 Notizen", "notesTitle": "📝 Notizen",
"notesSaved": "Notizen gespeichert", "notesSaved": "Notizen gespeichert",
"whoAreYou": "Wer bist du?", "whoAreYou": "Wer bist du?",
@@ -176,14 +187,15 @@
"notesOf": "Notizen von {name}", "notesOf": "Notizen von {name}",
"@notesOf": { "@notesOf": {
"placeholders": { "placeholders": {
"name": {"type": "String"} "name": {
"type": "String"
}
} }
}, },
"notesAboutPlayers": "Notizen zu jedem Spieler", "notesAboutPlayers": "Notizen zu jedem Spieler",
"playerNoteHint": "Was hat er/sie gesagt? Verdächtig?", "playerNoteHint": "Was hat er/sie gesagt? Verdächtig?",
"freeNote": "Freie Notiz", "freeNote": "Freie Notiz",
"freeNoteHint": "Persönliche Notizen...", "freeNoteHint": "Persönliche Notizen...",
"rulesTitle": "📖 Spielanleitung", "rulesTitle": "📖 Spielanleitung",
"rulesWhatIsTitle": "🎭 Was ist Der Hochstapler?", "rulesWhatIsTitle": "🎭 Was ist Der Hochstapler?",
"rulesWhatIsBody": "Ein soziales Deduktionsspiel für 3-20 Spieler. Alle erhalten ein geheimes Wort... außer der Hochstapler! Deine Mission: herausfinden, wer blufft.", "rulesWhatIsBody": "Ein soziales Deduktionsspiel für 3-20 Spieler. Alle erhalten ein geheimes Wort... außer der Hochstapler! Deine Mission: herausfinden, wer blufft.",
@@ -199,20 +211,17 @@
"rulesModesBody": "• Ein Gerät: Alle teilen sich das Gerät. Jeder Spieler sieht sein Wort, indem er einen Button gedrückt hält.\n\n• Mehrere Geräte: Jeder Spieler nutzt sein eigenes Gerät. Die Verbindung erfolgt über Bluetooth/WiFi Direct ohne Internetzugang.", "rulesModesBody": "• Ein Gerät: Alle teilen sich das Gerät. Jeder Spieler sieht sein Wort, indem er einen Button gedrückt hält.\n\n• Mehrere Geräte: Jeder Spieler nutzt sein eigenes Gerät. Die Verbindung erfolgt über Bluetooth/WiFi Direct ohne Internetzugang.",
"rulesExampleTitle": "✏️ Beispielrunde", "rulesExampleTitle": "✏️ Beispielrunde",
"rulesExampleBody": "Geheimes Wort: \"Pizza\"\n\n• Lisa: \"Man isst es warm\" ✓\n• Max: \"Kommt in einer Schachtel\" ✓\n• Nina (Hochstapler): \"Ist sehr beliebt\" 🤔\n• Felix: \"Hat Käse drauf\" ✓\n\nNina gab eine sehr allgemeine Antwort... Verdächtig!", "rulesExampleBody": "Geheimes Wort: \"Pizza\"\n\n• Lisa: \"Man isst es warm\" ✓\n• Max: \"Kommt in einer Schachtel\" ✓\n• Nina (Hochstapler): \"Ist sehr beliebt\" 🤔\n• Felix: \"Hat Käse drauf\" ✓\n\nNina gab eine sehr allgemeine Antwort... Verdächtig!",
"joinGameTitle": "Spiel beitreten", "joinGameTitle": "Spiel beitreten",
"multiDeviceMode": "Mehrere-Geräte-Modus", "multiDeviceMode": "Mehrere-Geräte-Modus",
"scanQrDescription": "Scanne den QR-Code des Hosts, um der Partie über Bluetooth/WiFi Direct beizutreten.", "scanQrDescription": "Scanne den QR-Code des Hosts, um der Partie über Bluetooth/WiFi Direct beizutreten.",
"comingSoon": "Demnächst", "comingSoon": "Demnächst",
"nearbyNotAvailable": "Die Mehrgeräte-Verbindung mit Nearby Connections erfordert physische Android-Geräte.\n\nVerwende vorerst den Modus \"Ein Gerät\", um auf einem gemeinsamen Gerät zu spielen.", "nearbyNotAvailable": "Die Mehrgeräte-Verbindung mit Nearby Connections erfordert physische Android-Geräte.\n\nVerwende vorerst den Modus \"Ein Gerät\", um auf einem gemeinsamen Gerät zu spielen.",
"back": "Zurück", "back": "Zurück",
"yes": "Ja", "yes": "Ja",
"no": "Nein", "no": "Nein",
"cancel": "Abbrechen", "cancel": "Abbrechen",
"accept": "Akzeptieren", "accept": "Akzeptieren",
"next": "Weiter", "next": "Weiter",
"settingsTitle": "Einstellungen", "settingsTitle": "Einstellungen",
"language": "Sprache", "language": "Sprache",
"soundVolume": "Effektlautstärke", "soundVolume": "Effektlautstärke",
@@ -257,5 +266,10 @@
"defaultPlayerName": "Spieler", "defaultPlayerName": "Spieler",
"play": "Spielen", "play": "Spielen",
"history": "Verlauf", "history": "Verlauf",
"mainTagline": "Finde den Hochstapler, bevor es zu spät ist" "mainTagline": "Finde den Hochstapler, bevor es zu spät ist",
"deviceProfile": "Geräteprofil",
"profileName": "Name",
"profileNick": "Nickname",
"save": "Speichern",
"automaticLanguage": "Automatisch"
} }
+6 -1
View File
@@ -298,5 +298,10 @@
"defaultPlayerName": "Player", "defaultPlayerName": "Player",
"play": "Play", "play": "Play",
"history": "History", "history": "History",
"mainTagline": "Find the impostor before it is too late" "mainTagline": "Find the impostor before it is too late",
"deviceProfile": "Device profile",
"profileName": "Name",
"profileNick": "Nick",
"save": "Save",
"automaticLanguage": "Automatic"
} }
+12 -3
View File
@@ -308,7 +308,9 @@
"couldNotConnectToHost": "No se pudo conectar a {host}", "couldNotConnectToHost": "No se pudo conectar a {host}",
"@couldNotConnectToHost": { "@couldNotConnectToHost": {
"placeholders": { "placeholders": {
"host": { "type": "String" } "host": {
"type": "String"
}
} }
}, },
"room": "Sala", "room": "Sala",
@@ -323,12 +325,19 @@
"cannotStartWithReason": "No se puede iniciar: {reason}", "cannotStartWithReason": "No se puede iniciar: {reason}",
"@cannotStartWithReason": { "@cannotStartWithReason": {
"placeholders": { "placeholders": {
"reason": { "type": "String" } "reason": {
"type": "String"
}
} }
}, },
"invalidRoom": "sala inválida", "invalidRoom": "sala inválida",
"defaultPlayerName": "Jugador", "defaultPlayerName": "Jugador",
"play": "Jugar", "play": "Jugar",
"history": "Historial", "history": "Historial",
"mainTagline": "Descubre al impostor antes de que sea tarde" "mainTagline": "Descubre al impostor antes de que sea tarde",
"deviceProfile": "Perfil del dispositivo",
"profileName": "Nombre",
"profileNick": "Nick",
"save": "Guardar",
"automaticLanguage": "Automático"
} }
+48 -34
View File
@@ -1,20 +1,16 @@
{ {
"@@locale": "eu", "@@locale": "eu",
"appTitle": "Inpostorrea", "appTitle": "Inpostorrea",
"subtitle": "Dedukzio sozialeko jokoa", "subtitle": "Dedukzio sozialeko jokoa",
"loadingWords": "Hitzak kargatzen...", "loadingWords": "Hitzak kargatzen...",
"playersRange": "3-20 jokalari • Internetik gabe", "playersRange": "3-20 jokalari • Internetik gabe",
"createGame": "Partida sortu", "createGame": "Partida sortu",
"joinGame": "Partidara batu", "joinGame": "Partidara batu",
"howToPlay": "Nola jolastu", "howToPlay": "Nola jolastu",
"settings": "Ezarpenak", "settings": "Ezarpenak",
"gameMode": "Joko-modua", "gameMode": "Joko-modua",
"singleDevice": "Mugikor bakarra", "singleDevice": "Mugikor bakarra",
"multiDevice": "Mugikor anitz", "multiDevice": "Mugikor anitz",
"category": "Kategoria", "category": "Kategoria",
"categoryAll": "Denak", "categoryAll": "Denak",
"categoryAnimals": "Animaliak", "categoryAnimals": "Animaliak",
@@ -27,11 +23,12 @@
"categoryMovies": "Filmak", "categoryMovies": "Filmak",
"categoryMusic": "Musika", "categoryMusic": "Musika",
"categoryTechnology": "Teknologia", "categoryTechnology": "Teknologia",
"playersCount": "Jokalariak ({count})", "playersCount": "Jokalariak ({count})",
"@playersCount": { "@playersCount": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"playersRangeHint": "3-20", "playersRangeHint": "3-20",
@@ -39,7 +36,6 @@
"playerAlreadyExists": "Izen hori duen jokalari bat badago dagoeneko", "playerAlreadyExists": "Izen hori duen jokalari bat badago dagoeneko",
"maxPlayersReached": "Gehienez 20 jokalari", "maxPlayersReached": "Gehienez 20 jokalari",
"minPlayersRequired": "Gutxienez 3 jokalari behar dira", "minPlayersRequired": "Gutxienez 3 jokalari behar dira",
"configuration": "Konfigurazioa", "configuration": "Konfigurazioa",
"impostors": "🎭 Inpostoreak", "impostors": "🎭 Inpostoreak",
"impostorClue": "🔍 Inpostorearentzako pista", "impostorClue": "🔍 Inpostorearentzako pista",
@@ -50,15 +46,15 @@
"twoMin": "2 min", "twoMin": "2 min",
"threeMin": "3 min", "threeMin": "3 min",
"fiveMin": "5 min", "fiveMin": "5 min",
"startGame": "Partida hasi", "startGame": "Partida hasi",
"seeYourWord": "Ikusi zure hitza", "seeYourWord": "Ikusi zure hitza",
"eachPlayerMustSee": "Jokalari bakoitzak bere hitza ezkutuan ikusi behar du", "eachPlayerMustSee": "Jokalari bakoitzak bere hitza ezkutuan ikusi behar du",
"roundNumber": "{round}. txanda", "roundNumber": "{round}. txanda",
"@roundNumber": { "@roundNumber": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"alreadySeen": "Bere hitza ikusi du dagoeneko", "alreadySeen": "Bere hitza ikusi du dagoeneko",
@@ -67,16 +63,19 @@
"playersRemaining": "{count} jokalari falta dira", "playersRemaining": "{count} jokalari falta dira",
"@playersRemaining": { "@playersRemaining": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"youAreImpostor": "Inpostorea zara!", "youAreImpostor": "Inpostorea zara!",
"yourWordIs": "Zure hitza da:", "yourWordIs": "Zure hitza da:",
"clueCategory": "Pista: {category}", "clueCategory": "Pista: {category}",
"@clueCategory": { "@clueCategory": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"holdToSeeWord": "Sakatuta eduki zure hitza ikusteko", "holdToSeeWord": "Sakatuta eduki zure hitza ikusteko",
@@ -84,11 +83,12 @@
"showingWord": "👁️ Erakusten...", "showingWord": "👁️ Erakusten...",
"holdToSee": "👆 Sakatuta eduki ikusteko", "holdToSee": "👆 Sakatuta eduki ikusteko",
"seenMyWord": "Nire hitza ikusi dut", "seenMyWord": "Nire hitza ikusi dut",
"debateRound": "Eztabaida - {round}. txanda", "debateRound": "Eztabaida - {round}. txanda",
"@debateRound": { "@debateRound": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"timeUp": "⏰ Denbora agortu da!", "timeUp": "⏰ Denbora agortu da!",
@@ -97,21 +97,28 @@
"activePlayersInfo": "{active} aktibo • {impostors} inpostore ezkutu", "activePlayersInfo": "{active} aktibo • {impostors} inpostore ezkutu",
"@activePlayersInfo": { "@activePlayersInfo": {
"placeholders": { "placeholders": {
"active": {"type": "int"}, "active": {
"impostors": {"type": "int"} "type": "int"
},
"impostors": {
"type": "int"
}
} }
}, },
"eliminated": "Kanporatua", "eliminated": "Kanporatua",
"notes": "Oharrak", "notes": "Oharrak",
"goToVoting": "Bozkatzera joan", "goToVoting": "Bozkatzera joan",
"voting": "🗳️ Bozketa", "voting": "🗳️ Bozketa",
"turnToVote": "Bozkatze-txanda:", "turnToVote": "Bozkatze-txanda:",
"votesProgress": "Botoak: {current}/{total}", "votesProgress": "Botoak: {current}/{total}",
"@votesProgress": { "@votesProgress": {
"placeholders": { "placeholders": {
"current": {"type": "int"}, "current": {
"total": {"type": "int"} "type": "int"
},
"total": {
"type": "int"
}
} }
}, },
"whoIsImpostor": "Nor da inpostorea zure ustez?", "whoIsImpostor": "Nor da inpostorea zure ustez?",
@@ -120,7 +127,6 @@
"allVoted": "Denek bozka eman dute!", "allVoted": "Denek bozka eman dute!",
"tapToReveal": "Sakatu emaitza agertzeko", "tapToReveal": "Sakatu emaitza agertzeko",
"revealResult": "Emaitza agertu", "revealResult": "Emaitza agertu",
"result": "Emaitza", "result": "Emaitza",
"revealing": "Agertzen...", "revealing": "Agertzen...",
"wasImpostor": "INPOSTOREA zen! 🎉", "wasImpostor": "INPOSTOREA zen! 🎉",
@@ -129,7 +135,6 @@
"seeEndResult": "Azken emaitza ikusi", "seeEndResult": "Azken emaitza ikusi",
"impostorGuessWord": "Inpostoreak hitza asmatzen du?", "impostorGuessWord": "Inpostoreak hitza asmatzen du?",
"nextRound": "Hurrengo txanda", "nextRound": "Hurrengo txanda",
"impostorGuessTitle": "🎯 Inpostorearen asmaketa", "impostorGuessTitle": "🎯 Inpostorearen asmaketa",
"impostorCanGuess": "Kanporatutako inpostoreak\nhitza asmatzen saia daiteke", "impostorCanGuess": "Kanporatutako inpostoreak\nhitza asmatzen saia daiteke",
"ifCorrectImpostorsWin": "Asmatzen badu, inpostoreek irabazten dute!", "ifCorrectImpostorsWin": "Asmatzen badu, inpostoreek irabazten dute!",
@@ -140,20 +145,23 @@
"theWordWas": "Hitza zen: {word}", "theWordWas": "Hitza zen: {word}",
"@theWordWas": { "@theWordWas": {
"placeholders": { "placeholders": {
"word": {"type": "String"} "word": {
"type": "String"
}
} }
}, },
"impostorsWin": "Inpostoreek irabazi dute!", "impostorsWin": "Inpostoreek irabazi dute!",
"wrongGuess": "Ez du asmatu!", "wrongGuess": "Ez du asmatu!",
"gameContinues": "Partida jarraitzen du...", "gameContinues": "Partida jarraitzen du...",
"gameOver": "Partidaren amaiera", "gameOver": "Partidaren amaiera",
"playersWin": "Jokalariek irabazi dute!", "playersWin": "Jokalariek irabazi dute!",
"theSecretWordWas": "🔍 Hitza zen:", "theSecretWordWas": "🔍 Hitza zen:",
"categoryLabel": "Kategoria: {category}", "categoryLabel": "Kategoria: {category}",
"@categoryLabel": { "@categoryLabel": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"theImpostorWas": "🎭 Inpostorea zen:", "theImpostorWas": "🎭 Inpostorea zen:",
@@ -162,13 +170,16 @@
"roundElimination": "{round}. txanda: {name}", "roundElimination": "{round}. txanda: {name}",
"@roundElimination": { "@roundElimination": {
"placeholders": { "placeholders": {
"round": {"type": "int"}, "round": {
"name": {"type": "String"} "type": "int"
},
"name": {
"type": "String"
}
} }
}, },
"rematch": "Errebantxa", "rematch": "Errebantxa",
"mainMenu": "Menu nagusia", "mainMenu": "Menu nagusia",
"notesTitle": "📝 Oharrak", "notesTitle": "📝 Oharrak",
"notesSaved": "Oharrak gordeta", "notesSaved": "Oharrak gordeta",
"whoAreYou": "Nor zara?", "whoAreYou": "Nor zara?",
@@ -176,14 +187,15 @@
"notesOf": "{name}-(r)en oharrak", "notesOf": "{name}-(r)en oharrak",
"@notesOf": { "@notesOf": {
"placeholders": { "placeholders": {
"name": {"type": "String"} "name": {
"type": "String"
}
} }
}, },
"notesAboutPlayers": "Jokalari bakoitzari buruzko apunteak", "notesAboutPlayers": "Jokalari bakoitzari buruzko apunteak",
"playerNoteHint": "Zer esan du? Susmagarria?", "playerNoteHint": "Zer esan du? Susmagarria?",
"freeNote": "Ohar librea", "freeNote": "Ohar librea",
"freeNoteHint": "Apunte pertsonalak...", "freeNoteHint": "Apunte pertsonalak...",
"rulesTitle": "📖 Nola jolastu", "rulesTitle": "📖 Nola jolastu",
"rulesWhatIsTitle": "🎭 Zer da Inpostorrea?", "rulesWhatIsTitle": "🎭 Zer da Inpostorrea?",
"rulesWhatIsBody": "3-20 jokalarientzako dedukzio sozialeko jokoa. Denek hitz sekretu bat jasotzen dute... inpostorea izan ezik! Zure misioa: nor ari den itxurak egiten aurkitzea.", "rulesWhatIsBody": "3-20 jokalarientzako dedukzio sozialeko jokoa. Denek hitz sekretu bat jasotzen dute... inpostorea izan ezik! Zure misioa: nor ari den itxurak egiten aurkitzea.",
@@ -199,20 +211,17 @@
"rulesModesBody": "• Mugikor bakarra: denek gailua partekatzen dute. Jokalari bakoitzak bere hitza ikusten du botoi bat sakatuta edukiz.\n\n• Mugikor anitz: jokalari bakoitzak bere gailua erabiltzen du. Bluetooth/WiFi Direct bidez konektatzen dira internetik behartu gabe.", "rulesModesBody": "• Mugikor bakarra: denek gailua partekatzen dute. Jokalari bakoitzak bere hitza ikusten du botoi bat sakatuta edukiz.\n\n• Mugikor anitz: jokalari bakoitzak bere gailua erabiltzen du. Bluetooth/WiFi Direct bidez konektatzen dira internetik behartu gabe.",
"rulesExampleTitle": "✏️ Partida-adibidea", "rulesExampleTitle": "✏️ Partida-adibidea",
"rulesExampleBody": "Hitz sekretua: \"Pizza\"\n\n• Ane: \"Beroa jaten da\" ✓\n• Mikel: \"Kutxa batean dator\" ✓\n• Irati (inpostorea): \"Oso ezaguna da\" 🤔\n• Unai: \"Gazta dauka\" ✓\n\nIratik erantzun oso generikoa eman zuen... Susmagarria!", "rulesExampleBody": "Hitz sekretua: \"Pizza\"\n\n• Ane: \"Beroa jaten da\" ✓\n• Mikel: \"Kutxa batean dator\" ✓\n• Irati (inpostorea): \"Oso ezaguna da\" 🤔\n• Unai: \"Gazta dauka\" ✓\n\nIratik erantzun oso generikoa eman zuen... Susmagarria!",
"joinGameTitle": "Partidara batu", "joinGameTitle": "Partidara batu",
"multiDeviceMode": "Mugikor anitzeko modua", "multiDeviceMode": "Mugikor anitzeko modua",
"scanQrDescription": "Eskaneatu ostalariak erakusten duen QR kodea partidara Bluetooth/WiFi Direct bidez konektatzeko.", "scanQrDescription": "Eskaneatu ostalariak erakusten duen QR kodea partidara Bluetooth/WiFi Direct bidez konektatzeko.",
"comingSoon": "Laster", "comingSoon": "Laster",
"nearbyNotAvailable": "Mugikor anitzeko konexioak Nearby Connections-ekin Android gailu fisikoak behar ditu.\n\nOraingoz, erabili \"Mugikor bakarra\" modua gailu partekatuan jolasteko.", "nearbyNotAvailable": "Mugikor anitzeko konexioak Nearby Connections-ekin Android gailu fisikoak behar ditu.\n\nOraingoz, erabili \"Mugikor bakarra\" modua gailu partekatuan jolasteko.",
"back": "Atzera", "back": "Atzera",
"yes": "Bai", "yes": "Bai",
"no": "Ez", "no": "Ez",
"cancel": "Ezeztatu", "cancel": "Ezeztatu",
"accept": "Onartu", "accept": "Onartu",
"next": "Hurrengoa", "next": "Hurrengoa",
"settingsTitle": "Ezarpenak", "settingsTitle": "Ezarpenak",
"language": "Hizkuntza", "language": "Hizkuntza",
"soundVolume": "Efektuen bolumena", "soundVolume": "Efektuen bolumena",
@@ -257,5 +266,10 @@
"defaultPlayerName": "Jokalaria", "defaultPlayerName": "Jokalaria",
"play": "Jokatu", "play": "Jokatu",
"history": "Historia", "history": "Historia",
"mainTagline": "Aurkitu iruzurtia berandu baino lehen" "mainTagline": "Aurkitu iruzurtia berandu baino lehen",
"deviceProfile": "Gailuaren profila",
"profileName": "Izena",
"profileNick": "Ezizena",
"save": "Gorde",
"automaticLanguage": "Automatikoa"
} }
+48 -34
View File
@@ -1,20 +1,16 @@
{ {
"@@locale": "fr", "@@locale": "fr",
"appTitle": "Farolero", "appTitle": "Farolero",
"subtitle": "Jeu de déduction sociale", "subtitle": "Jeu de déduction sociale",
"loadingWords": "Chargement des mots...", "loadingWords": "Chargement des mots...",
"playersRange": "3-20 joueurs • Sans internet", "playersRange": "3-20 joueurs • Sans internet",
"createGame": "Créer une partie", "createGame": "Créer une partie",
"joinGame": "Rejoindre une partie", "joinGame": "Rejoindre une partie",
"howToPlay": "Comment jouer", "howToPlay": "Comment jouer",
"settings": "Paramètres", "settings": "Paramètres",
"gameMode": "Mode de jeu", "gameMode": "Mode de jeu",
"singleDevice": "Un seul téléphone", "singleDevice": "Un seul téléphone",
"multiDevice": "Multi-téléphone", "multiDevice": "Multi-téléphone",
"category": "Catégorie", "category": "Catégorie",
"categoryAll": "Toutes", "categoryAll": "Toutes",
"categoryAnimals": "Animaux", "categoryAnimals": "Animaux",
@@ -27,11 +23,12 @@
"categoryMovies": "Films", "categoryMovies": "Films",
"categoryMusic": "Musique", "categoryMusic": "Musique",
"categoryTechnology": "Technologie", "categoryTechnology": "Technologie",
"playersCount": "Joueurs ({count})", "playersCount": "Joueurs ({count})",
"@playersCount": { "@playersCount": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"playersRangeHint": "3-20", "playersRangeHint": "3-20",
@@ -39,7 +36,6 @@
"playerAlreadyExists": "Un joueur avec ce nom existe déjà", "playerAlreadyExists": "Un joueur avec ce nom existe déjà",
"maxPlayersReached": "Maximum 20 joueurs", "maxPlayersReached": "Maximum 20 joueurs",
"minPlayersRequired": "Il faut au moins 3 joueurs", "minPlayersRequired": "Il faut au moins 3 joueurs",
"configuration": "Configuration", "configuration": "Configuration",
"impostors": "🎭 Imposteurs", "impostors": "🎭 Imposteurs",
"impostorClue": "🔍 Indice pour l'imposteur", "impostorClue": "🔍 Indice pour l'imposteur",
@@ -50,15 +46,15 @@
"twoMin": "2 min", "twoMin": "2 min",
"threeMin": "3 min", "threeMin": "3 min",
"fiveMin": "5 min", "fiveMin": "5 min",
"startGame": "Lancer la partie", "startGame": "Lancer la partie",
"seeYourWord": "Voir ton mot", "seeYourWord": "Voir ton mot",
"eachPlayerMustSee": "Chaque joueur doit voir son mot en secret", "eachPlayerMustSee": "Chaque joueur doit voir son mot en secret",
"roundNumber": "Manche {round}", "roundNumber": "Manche {round}",
"@roundNumber": { "@roundNumber": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"alreadySeen": "A déjà vu son mot", "alreadySeen": "A déjà vu son mot",
@@ -67,16 +63,19 @@
"playersRemaining": "Encore {count} joueurs", "playersRemaining": "Encore {count} joueurs",
"@playersRemaining": { "@playersRemaining": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"youAreImpostor": "Tu es l'imposteur !", "youAreImpostor": "Tu es l'imposteur !",
"yourWordIs": "Ton mot est :", "yourWordIs": "Ton mot est :",
"clueCategory": "Indice : {category}", "clueCategory": "Indice : {category}",
"@clueCategory": { "@clueCategory": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"holdToSeeWord": "Maintiens appuyé pour voir ton mot", "holdToSeeWord": "Maintiens appuyé pour voir ton mot",
@@ -84,11 +83,12 @@
"showingWord": "👁️ Affichage...", "showingWord": "👁️ Affichage...",
"holdToSee": "👆 Maintiens appuyé pour voir", "holdToSee": "👆 Maintiens appuyé pour voir",
"seenMyWord": "J'ai vu mon mot", "seenMyWord": "J'ai vu mon mot",
"debateRound": "Débat - Manche {round}", "debateRound": "Débat - Manche {round}",
"@debateRound": { "@debateRound": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"timeUp": "⏰ Temps écoulé !", "timeUp": "⏰ Temps écoulé !",
@@ -97,21 +97,28 @@
"activePlayersInfo": "{active} actifs • {impostors} imposteur(s) caché(s)", "activePlayersInfo": "{active} actifs • {impostors} imposteur(s) caché(s)",
"@activePlayersInfo": { "@activePlayersInfo": {
"placeholders": { "placeholders": {
"active": {"type": "int"}, "active": {
"impostors": {"type": "int"} "type": "int"
},
"impostors": {
"type": "int"
}
} }
}, },
"eliminated": "Éliminé", "eliminated": "Éliminé",
"notes": "Notes", "notes": "Notes",
"goToVoting": "Passer au vote", "goToVoting": "Passer au vote",
"voting": "🗳️ Vote", "voting": "🗳️ Vote",
"turnToVote": "Au tour de voter :", "turnToVote": "Au tour de voter :",
"votesProgress": "Votes : {current}/{total}", "votesProgress": "Votes : {current}/{total}",
"@votesProgress": { "@votesProgress": {
"placeholders": { "placeholders": {
"current": {"type": "int"}, "current": {
"total": {"type": "int"} "type": "int"
},
"total": {
"type": "int"
}
} }
}, },
"whoIsImpostor": "Qui est l'imposteur selon toi ?", "whoIsImpostor": "Qui est l'imposteur selon toi ?",
@@ -120,7 +127,6 @@
"allVoted": "Tout le monde a voté !", "allVoted": "Tout le monde a voté !",
"tapToReveal": "Appuie pour révéler le résultat", "tapToReveal": "Appuie pour révéler le résultat",
"revealResult": "Révéler le résultat", "revealResult": "Révéler le résultat",
"result": "Résultat", "result": "Résultat",
"revealing": "Révélation...", "revealing": "Révélation...",
"wasImpostor": "C'était l'IMPOSTEUR ! 🎉", "wasImpostor": "C'était l'IMPOSTEUR ! 🎉",
@@ -129,7 +135,6 @@
"seeEndResult": "Voir le résultat final", "seeEndResult": "Voir le résultat final",
"impostorGuessWord": "L'imposteur devine-t-il le mot ?", "impostorGuessWord": "L'imposteur devine-t-il le mot ?",
"nextRound": "Manche suivante", "nextRound": "Manche suivante",
"impostorGuessTitle": "🎯 Devinette de l'imposteur", "impostorGuessTitle": "🎯 Devinette de l'imposteur",
"impostorCanGuess": "L'imposteur éliminé peut\ntenter de deviner le mot", "impostorCanGuess": "L'imposteur éliminé peut\ntenter de deviner le mot",
"ifCorrectImpostorsWin": "S'il trouve, les imposteurs gagnent !", "ifCorrectImpostorsWin": "S'il trouve, les imposteurs gagnent !",
@@ -140,20 +145,23 @@
"theWordWas": "Le mot était : {word}", "theWordWas": "Le mot était : {word}",
"@theWordWas": { "@theWordWas": {
"placeholders": { "placeholders": {
"word": {"type": "String"} "word": {
"type": "String"
}
} }
}, },
"impostorsWin": "Les imposteurs gagnent !", "impostorsWin": "Les imposteurs gagnent !",
"wrongGuess": "Il n'a pas trouvé !", "wrongGuess": "Il n'a pas trouvé !",
"gameContinues": "La partie continue...", "gameContinues": "La partie continue...",
"gameOver": "Fin de partie", "gameOver": "Fin de partie",
"playersWin": "Les joueurs gagnent !", "playersWin": "Les joueurs gagnent !",
"theSecretWordWas": "🔍 Le mot était :", "theSecretWordWas": "🔍 Le mot était :",
"categoryLabel": "Catégorie : {category}", "categoryLabel": "Catégorie : {category}",
"@categoryLabel": { "@categoryLabel": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"theImpostorWas": "🎭 L'imposteur était :", "theImpostorWas": "🎭 L'imposteur était :",
@@ -162,13 +170,16 @@
"roundElimination": "Manche {round} : {name}", "roundElimination": "Manche {round} : {name}",
"@roundElimination": { "@roundElimination": {
"placeholders": { "placeholders": {
"round": {"type": "int"}, "round": {
"name": {"type": "String"} "type": "int"
},
"name": {
"type": "String"
}
} }
}, },
"rematch": "Revanche", "rematch": "Revanche",
"mainMenu": "Menu principal", "mainMenu": "Menu principal",
"notesTitle": "📝 Notes", "notesTitle": "📝 Notes",
"notesSaved": "Notes sauvegardées", "notesSaved": "Notes sauvegardées",
"whoAreYou": "Qui es-tu ?", "whoAreYou": "Qui es-tu ?",
@@ -176,14 +187,15 @@
"notesOf": "Notes de {name}", "notesOf": "Notes de {name}",
"@notesOf": { "@notesOf": {
"placeholders": { "placeholders": {
"name": {"type": "String"} "name": {
"type": "String"
}
} }
}, },
"notesAboutPlayers": "Notes sur chaque joueur", "notesAboutPlayers": "Notes sur chaque joueur",
"playerNoteHint": "Qu'a-t-il dit ? Suspect ?", "playerNoteHint": "Qu'a-t-il dit ? Suspect ?",
"freeNote": "Note libre", "freeNote": "Note libre",
"freeNoteHint": "Notes personnelles...", "freeNoteHint": "Notes personnelles...",
"rulesTitle": "📖 Comment jouer", "rulesTitle": "📖 Comment jouer",
"rulesWhatIsTitle": "🎭 Qu'est-ce que L'Imposteur ?", "rulesWhatIsTitle": "🎭 Qu'est-ce que L'Imposteur ?",
"rulesWhatIsBody": "Un jeu de déduction sociale pour 3-20 joueurs. Tout le monde reçoit un mot secret... sauf l'imposteur ! Ta mission : découvrir qui bluff.", "rulesWhatIsBody": "Un jeu de déduction sociale pour 3-20 joueurs. Tout le monde reçoit un mot secret... sauf l'imposteur ! Ta mission : découvrir qui bluff.",
@@ -199,20 +211,17 @@
"rulesModesBody": "• Un seul téléphone : tout le monde partage l'appareil. Chaque joueur voit son mot en appuyant et maintenant un bouton.\n\n• Multi-téléphone : chaque joueur utilise son propre appareil. Ils se connectent par Bluetooth/WiFi Direct sans avoir besoin d'internet.", "rulesModesBody": "• Un seul téléphone : tout le monde partage l'appareil. Chaque joueur voit son mot en appuyant et maintenant un bouton.\n\n• Multi-téléphone : chaque joueur utilise son propre appareil. Ils se connectent par Bluetooth/WiFi Direct sans avoir besoin d'internet.",
"rulesExampleTitle": "✏️ Exemple de partie", "rulesExampleTitle": "✏️ Exemple de partie",
"rulesExampleBody": "Mot secret : \"Pizza\"\n\n• Marie : \"Ça se mange chaud\" ✓\n• Lucas : \"Ça arrive dans une boîte\" ✓\n• Julie (imposteur) : \"C'est très populaire\" 🤔\n• Thomas : \"Il y a du fromage\" ✓\n\nJulie a donné une réponse très générique... Suspecte !", "rulesExampleBody": "Mot secret : \"Pizza\"\n\n• Marie : \"Ça se mange chaud\" ✓\n• Lucas : \"Ça arrive dans une boîte\" ✓\n• Julie (imposteur) : \"C'est très populaire\" 🤔\n• Thomas : \"Il y a du fromage\" ✓\n\nJulie a donné une réponse très générique... Suspecte !",
"joinGameTitle": "Rejoindre une partie", "joinGameTitle": "Rejoindre une partie",
"multiDeviceMode": "Mode multi-téléphone", "multiDeviceMode": "Mode multi-téléphone",
"scanQrDescription": "Scanne le code QR affiché par l'hôte pour te connecter à la partie via Bluetooth/WiFi Direct.", "scanQrDescription": "Scanne le code QR affiché par l'hôte pour te connecter à la partie via Bluetooth/WiFi Direct.",
"comingSoon": "Prochainement", "comingSoon": "Prochainement",
"nearbyNotAvailable": "La connexion multi-téléphone avec Nearby Connections nécessite des appareils Android physiques.\n\nPour l'instant, utilise le mode \"Un seul téléphone\" pour jouer sur un appareil partagé.", "nearbyNotAvailable": "La connexion multi-téléphone avec Nearby Connections nécessite des appareils Android physiques.\n\nPour l'instant, utilise le mode \"Un seul téléphone\" pour jouer sur un appareil partagé.",
"back": "Retour", "back": "Retour",
"yes": "Oui", "yes": "Oui",
"no": "Non", "no": "Non",
"cancel": "Annuler", "cancel": "Annuler",
"accept": "Accepter", "accept": "Accepter",
"next": "Suivant", "next": "Suivant",
"settingsTitle": "Paramètres", "settingsTitle": "Paramètres",
"language": "Langue", "language": "Langue",
"soundVolume": "Volume des effets", "soundVolume": "Volume des effets",
@@ -257,5 +266,10 @@
"defaultPlayerName": "Joueur", "defaultPlayerName": "Joueur",
"play": "Jouer", "play": "Jouer",
"history": "Historique", "history": "Historique",
"mainTagline": "Découvre limposteur avant quil ne soit trop tard" "mainTagline": "Découvre limposteur avant quil ne soit trop tard",
"deviceProfile": "Profil de lappareil",
"profileName": "Nom",
"profileNick": "Pseudo",
"save": "Enregistrer",
"automaticLanguage": "Automatique"
} }
+48 -34
View File
@@ -1,20 +1,16 @@
{ {
"@@locale": "hi", "@@locale": "hi",
"appTitle": "धोखेबाज़", "appTitle": "धोखेबाज़",
"subtitle": "सामाजिक अनुमान का खेल", "subtitle": "सामाजिक अनुमान का खेल",
"loadingWords": "शब्द लोड हो रहे हैं...", "loadingWords": "शब्द लोड हो रहे हैं...",
"playersRange": "3-20 खिलाड़ी • इंटरनेट की ज़रूरत नहीं", "playersRange": "3-20 खिलाड़ी • इंटरनेट की ज़रूरत नहीं",
"createGame": "गेम बनाएँ", "createGame": "गेम बनाएँ",
"joinGame": "गेम में शामिल हों", "joinGame": "गेम में शामिल हों",
"howToPlay": "कैसे खेलें", "howToPlay": "कैसे खेलें",
"settings": "सेटिंग्स", "settings": "सेटिंग्स",
"gameMode": "गेम मोड", "gameMode": "गेम मोड",
"singleDevice": "एक डिवाइस", "singleDevice": "एक डिवाइस",
"multiDevice": "मल्टी-डिवाइस", "multiDevice": "मल्टी-डिवाइस",
"category": "श्रेणी", "category": "श्रेणी",
"categoryAll": "सभी", "categoryAll": "सभी",
"categoryAnimals": "जानवर", "categoryAnimals": "जानवर",
@@ -27,11 +23,12 @@
"categoryMovies": "फ़िल्में", "categoryMovies": "फ़िल्में",
"categoryMusic": "संगीत", "categoryMusic": "संगीत",
"categoryTechnology": "टेक्नोलॉजी", "categoryTechnology": "टेक्नोलॉजी",
"playersCount": "खिलाड़ी ({count})", "playersCount": "खिलाड़ी ({count})",
"@playersCount": { "@playersCount": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"playersRangeHint": "3-20", "playersRangeHint": "3-20",
@@ -39,7 +36,6 @@
"playerAlreadyExists": "इस नाम का खिलाड़ी पहले से मौजूद है", "playerAlreadyExists": "इस नाम का खिलाड़ी पहले से मौजूद है",
"maxPlayersReached": "अधिकतम 20 खिलाड़ी", "maxPlayersReached": "अधिकतम 20 खिलाड़ी",
"minPlayersRequired": "कम से कम 3 खिलाड़ी ज़रूरी हैं", "minPlayersRequired": "कम से कम 3 खिलाड़ी ज़रूरी हैं",
"configuration": "कॉन्फ़िगरेशन", "configuration": "कॉन्फ़िगरेशन",
"impostors": "🎭 धोखेबाज़", "impostors": "🎭 धोखेबाज़",
"impostorClue": "🔍 धोखेबाज़ के लिए संकेत", "impostorClue": "🔍 धोखेबाज़ के लिए संकेत",
@@ -50,15 +46,15 @@
"twoMin": "2 मिनट", "twoMin": "2 मिनट",
"threeMin": "3 मिनट", "threeMin": "3 मिनट",
"fiveMin": "5 मिनट", "fiveMin": "5 मिनट",
"startGame": "गेम शुरू करें", "startGame": "गेम शुरू करें",
"seeYourWord": "अपना शब्द देखें", "seeYourWord": "अपना शब्द देखें",
"eachPlayerMustSee": "हर खिलाड़ी को अपना शब्द गुपचुप देखना होगा", "eachPlayerMustSee": "हर खिलाड़ी को अपना शब्द गुपचुप देखना होगा",
"roundNumber": "राउंड {round}", "roundNumber": "राउंड {round}",
"@roundNumber": { "@roundNumber": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"alreadySeen": "अपना शब्द देख चुके हैं", "alreadySeen": "अपना शब्द देख चुके हैं",
@@ -67,16 +63,19 @@
"playersRemaining": "{count} खिलाड़ी बाकी हैं", "playersRemaining": "{count} खिलाड़ी बाकी हैं",
"@playersRemaining": { "@playersRemaining": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"youAreImpostor": "आप धोखेबाज़ हैं!", "youAreImpostor": "आप धोखेबाज़ हैं!",
"yourWordIs": "आपका शब्द है:", "yourWordIs": "आपका शब्द है:",
"clueCategory": "संकेत: {category}", "clueCategory": "संकेत: {category}",
"@clueCategory": { "@clueCategory": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"holdToSeeWord": "अपना शब्द देखने के लिए दबाए रखें", "holdToSeeWord": "अपना शब्द देखने के लिए दबाए रखें",
@@ -84,11 +83,12 @@
"showingWord": "👁️ दिखा रहे हैं...", "showingWord": "👁️ दिखा रहे हैं...",
"holdToSee": "👆 देखने के लिए दबाए रखें", "holdToSee": "👆 देखने के लिए दबाए रखें",
"seenMyWord": "मैंने अपना शब्द देख लिया", "seenMyWord": "मैंने अपना शब्द देख लिया",
"debateRound": "बहस - राउंड {round}", "debateRound": "बहस - राउंड {round}",
"@debateRound": { "@debateRound": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"timeUp": "⏰ समय समाप्त!", "timeUp": "⏰ समय समाप्त!",
@@ -97,21 +97,28 @@
"activePlayersInfo": "{active} सक्रिय • {impostors} धोखेबाज़ छिपे हुए", "activePlayersInfo": "{active} सक्रिय • {impostors} धोखेबाज़ छिपे हुए",
"@activePlayersInfo": { "@activePlayersInfo": {
"placeholders": { "placeholders": {
"active": {"type": "int"}, "active": {
"impostors": {"type": "int"} "type": "int"
},
"impostors": {
"type": "int"
}
} }
}, },
"eliminated": "बाहर", "eliminated": "बाहर",
"notes": "नोट्स", "notes": "नोट्स",
"goToVoting": "वोटिंग पर जाएँ", "goToVoting": "वोटिंग पर जाएँ",
"voting": "🗳️ वोटिंग", "voting": "🗳️ वोटिंग",
"turnToVote": "वोट करने की बारी:", "turnToVote": "वोट करने की बारी:",
"votesProgress": "वोट: {current}/{total}", "votesProgress": "वोट: {current}/{total}",
"@votesProgress": { "@votesProgress": {
"placeholders": { "placeholders": {
"current": {"type": "int"}, "current": {
"total": {"type": "int"} "type": "int"
},
"total": {
"type": "int"
}
} }
}, },
"whoIsImpostor": "आपको कौन धोखेबाज़ लगता है?", "whoIsImpostor": "आपको कौन धोखेबाज़ लगता है?",
@@ -120,7 +127,6 @@
"allVoted": "सबने वोट कर दिया!", "allVoted": "सबने वोट कर दिया!",
"tapToReveal": "नतीजा देखने के लिए टैप करें", "tapToReveal": "नतीजा देखने के लिए टैप करें",
"revealResult": "नतीजा दिखाएँ", "revealResult": "नतीजा दिखाएँ",
"result": "नतीजा", "result": "नतीजा",
"revealing": "दिखा रहे हैं...", "revealing": "दिखा रहे हैं...",
"wasImpostor": "धोखेबाज़ था! 🎉", "wasImpostor": "धोखेबाज़ था! 🎉",
@@ -129,7 +135,6 @@
"seeEndResult": "अंतिम नतीजा देखें", "seeEndResult": "अंतिम नतीजा देखें",
"impostorGuessWord": "क्या धोखेबाज़ शब्द का अनुमान लगाएगा?", "impostorGuessWord": "क्या धोखेबाज़ शब्द का अनुमान लगाएगा?",
"nextRound": "अगला राउंड", "nextRound": "अगला राउंड",
"impostorGuessTitle": "🎯 धोखेबाज़ का अनुमान", "impostorGuessTitle": "🎯 धोखेबाज़ का अनुमान",
"impostorCanGuess": "बाहर किया गया धोखेबाज़\nशब्द का अनुमान लगा सकता है", "impostorCanGuess": "बाहर किया गया धोखेबाज़\nशब्द का अनुमान लगा सकता है",
"ifCorrectImpostorsWin": "अगर सही अनुमान लगाया, तो धोखेबाज़ जीतते हैं!", "ifCorrectImpostorsWin": "अगर सही अनुमान लगाया, तो धोखेबाज़ जीतते हैं!",
@@ -140,20 +145,23 @@
"theWordWas": "शब्द था: {word}", "theWordWas": "शब्द था: {word}",
"@theWordWas": { "@theWordWas": {
"placeholders": { "placeholders": {
"word": {"type": "String"} "word": {
"type": "String"
}
} }
}, },
"impostorsWin": "धोखेबाज़ जीत गए!", "impostorsWin": "धोखेबाज़ जीत गए!",
"wrongGuess": "गलत अनुमान!", "wrongGuess": "गलत अनुमान!",
"gameContinues": "गेम जारी है...", "gameContinues": "गेम जारी है...",
"gameOver": "गेम ख़त्म", "gameOver": "गेम ख़त्म",
"playersWin": "खिलाड़ी जीत गए!", "playersWin": "खिलाड़ी जीत गए!",
"theSecretWordWas": "🔍 शब्द था:", "theSecretWordWas": "🔍 शब्द था:",
"categoryLabel": "श्रेणी: {category}", "categoryLabel": "श्रेणी: {category}",
"@categoryLabel": { "@categoryLabel": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"theImpostorWas": "🎭 धोखेबाज़ था:", "theImpostorWas": "🎭 धोखेबाज़ था:",
@@ -162,13 +170,16 @@
"roundElimination": "राउंड {round}: {name}", "roundElimination": "राउंड {round}: {name}",
"@roundElimination": { "@roundElimination": {
"placeholders": { "placeholders": {
"round": {"type": "int"}, "round": {
"name": {"type": "String"} "type": "int"
},
"name": {
"type": "String"
}
} }
}, },
"rematch": "फिर से खेलें", "rematch": "फिर से खेलें",
"mainMenu": "मुख्य मेनू", "mainMenu": "मुख्य मेनू",
"notesTitle": "📝 नोट्स", "notesTitle": "📝 नोट्स",
"notesSaved": "नोट्स सहेजे गए", "notesSaved": "नोट्स सहेजे गए",
"whoAreYou": "आप कौन हैं?", "whoAreYou": "आप कौन हैं?",
@@ -176,14 +187,15 @@
"notesOf": "{name} के नोट्स", "notesOf": "{name} के नोट्स",
"@notesOf": { "@notesOf": {
"placeholders": { "placeholders": {
"name": {"type": "String"} "name": {
"type": "String"
}
} }
}, },
"notesAboutPlayers": "हर खिलाड़ी के बारे में नोट्स", "notesAboutPlayers": "हर खिलाड़ी के बारे में नोट्स",
"playerNoteHint": "उसने क्या कहा? शक है?", "playerNoteHint": "उसने क्या कहा? शक है?",
"freeNote": "फ्री नोट", "freeNote": "फ्री नोट",
"freeNoteHint": "निजी नोट्स...", "freeNoteHint": "निजी नोट्स...",
"rulesTitle": "📖 कैसे खेलें", "rulesTitle": "📖 कैसे खेलें",
"rulesWhatIsTitle": "🎭 धोखेबाज़ क्या है?", "rulesWhatIsTitle": "🎭 धोखेबाज़ क्या है?",
"rulesWhatIsBody": "3-20 खिलाड़ियों के लिए एक सामाजिक अनुमान का खेल। सबको एक गुप्त शब्द मिलता है... धोखेबाज़ को छोड़कर! आपका मिशन: पता लगाएँ कि कौन बहाना बना रहा है।", "rulesWhatIsBody": "3-20 खिलाड़ियों के लिए एक सामाजिक अनुमान का खेल। सबको एक गुप्त शब्द मिलता है... धोखेबाज़ को छोड़कर! आपका मिशन: पता लगाएँ कि कौन बहाना बना रहा है।",
@@ -199,20 +211,17 @@
"rulesModesBody": "• एक डिवाइस: सभी एक ही डिवाइस शेयर करते हैं। हर खिलाड़ी बटन दबाकर अपना शब्द देखता है।\n\n• मल्टी-डिवाइस: हर खिलाड़ी अपना डिवाइस इस्तेमाल करता है। ब्लूटूथ/WiFi Direct से जुड़ते हैं, इंटरनेट की ज़रूरत नहीं।", "rulesModesBody": "• एक डिवाइस: सभी एक ही डिवाइस शेयर करते हैं। हर खिलाड़ी बटन दबाकर अपना शब्द देखता है।\n\n• मल्टी-डिवाइस: हर खिलाड़ी अपना डिवाइस इस्तेमाल करता है। ब्लूटूथ/WiFi Direct से जुड़ते हैं, इंटरनेट की ज़रूरत नहीं।",
"rulesExampleTitle": "✏️ गेम का उदाहरण", "rulesExampleTitle": "✏️ गेम का उदाहरण",
"rulesExampleBody": "गुप्त शब्द: \"पिज़्ज़ा\"\n\n• आर्यन: \"गरम खाया जाता है\" ✓\n• प्रिया: \"डिब्बे में आता है\" ✓\n• नेहा (धोखेबाज़): \"बहुत लोकप्रिय है\" 🤔\n• राहुल: \"इसमें चीज़ होता है\" ✓\n\nनेहा का जवाब बहुत सामान्य था... शक़ है!", "rulesExampleBody": "गुप्त शब्द: \"पिज़्ज़ा\"\n\n• आर्यन: \"गरम खाया जाता है\" ✓\n• प्रिया: \"डिब्बे में आता है\" ✓\n• नेहा (धोखेबाज़): \"बहुत लोकप्रिय है\" 🤔\n• राहुल: \"इसमें चीज़ होता है\" ✓\n\nनेहा का जवाब बहुत सामान्य था... शक़ है!",
"joinGameTitle": "गेम में शामिल हों", "joinGameTitle": "गेम में शामिल हों",
"multiDeviceMode": "मल्टी-डिवाइस मोड", "multiDeviceMode": "मल्टी-डिवाइस मोड",
"scanQrDescription": "ब्लूटूथ/WiFi Direct से गेम में जुड़ने के लिए होस्ट का QR कोड स्कैन करें।", "scanQrDescription": "ब्लूटूथ/WiFi Direct से गेम में जुड़ने के लिए होस्ट का QR कोड स्कैन करें।",
"comingSoon": "जल्द आ रहा है", "comingSoon": "जल्द आ रहा है",
"nearbyNotAvailable": "Nearby Connections से मल्टी-डिवाइस कनेक्शन के लिए असली Android डिवाइस चाहिए।\n\nअभी के लिए, शेयर किए गए डिवाइस पर खेलने के लिए \"एक डिवाइस\" मोड का उपयोग करें।", "nearbyNotAvailable": "Nearby Connections से मल्टी-डिवाइस कनेक्शन के लिए असली Android डिवाइस चाहिए।\n\nअभी के लिए, शेयर किए गए डिवाइस पर खेलने के लिए \"एक डिवाइस\" मोड का उपयोग करें।",
"back": "वापस", "back": "वापस",
"yes": "हाँ", "yes": "हाँ",
"no": "नहीं", "no": "नहीं",
"cancel": "रद्द करें", "cancel": "रद्द करें",
"accept": "स्वीकार करें", "accept": "स्वीकार करें",
"next": "अगला", "next": "अगला",
"settingsTitle": "सेटिंग्स", "settingsTitle": "सेटिंग्स",
"language": "भाषा", "language": "भाषा",
"soundVolume": "साउंड इफ़ेक्ट्स की आवाज़", "soundVolume": "साउंड इफ़ेक्ट्स की आवाज़",
@@ -257,5 +266,10 @@
"defaultPlayerName": "खिलाड़ी", "defaultPlayerName": "खिलाड़ी",
"play": "खेलें", "play": "खेलें",
"history": "इतिहास", "history": "इतिहास",
"mainTagline": "बहुत देर होने से पहले impostor को ढूँढें" "mainTagline": "बहुत देर होने से पहले impostor को ढूँढें",
"deviceProfile": "डिवाइस प्रोफ़ाइल",
"profileName": "नाम",
"profileNick": "निकनेम",
"save": "सहेजें",
"automaticLanguage": "स्वचालित"
} }
+48 -34
View File
@@ -1,20 +1,16 @@
{ {
"@@locale": "it", "@@locale": "it",
"appTitle": "Farolero", "appTitle": "Farolero",
"subtitle": "Gioco di deduzione sociale", "subtitle": "Gioco di deduzione sociale",
"loadingWords": "Caricamento parole...", "loadingWords": "Caricamento parole...",
"playersRange": "3-20 giocatori • Senza internet", "playersRange": "3-20 giocatori • Senza internet",
"createGame": "Crea partita", "createGame": "Crea partita",
"joinGame": "Unisciti alla partita", "joinGame": "Unisciti alla partita",
"howToPlay": "Come giocare", "howToPlay": "Come giocare",
"settings": "Impostazioni", "settings": "Impostazioni",
"gameMode": "Modalità di gioco", "gameMode": "Modalità di gioco",
"singleDevice": "Un solo dispositivo", "singleDevice": "Un solo dispositivo",
"multiDevice": "Multi-dispositivo", "multiDevice": "Multi-dispositivo",
"category": "Categoria", "category": "Categoria",
"categoryAll": "Tutte", "categoryAll": "Tutte",
"categoryAnimals": "Animali", "categoryAnimals": "Animali",
@@ -27,11 +23,12 @@
"categoryMovies": "Film", "categoryMovies": "Film",
"categoryMusic": "Musica", "categoryMusic": "Musica",
"categoryTechnology": "Tecnologia", "categoryTechnology": "Tecnologia",
"playersCount": "Giocatori ({count})", "playersCount": "Giocatori ({count})",
"@playersCount": { "@playersCount": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"playersRangeHint": "3-20", "playersRangeHint": "3-20",
@@ -39,7 +36,6 @@
"playerAlreadyExists": "Esiste già un giocatore con questo nome", "playerAlreadyExists": "Esiste già un giocatore con questo nome",
"maxPlayersReached": "Massimo 20 giocatori", "maxPlayersReached": "Massimo 20 giocatori",
"minPlayersRequired": "Servono almeno 3 giocatori", "minPlayersRequired": "Servono almeno 3 giocatori",
"configuration": "Configurazione", "configuration": "Configurazione",
"impostors": "🎭 Impostori", "impostors": "🎭 Impostori",
"impostorClue": "🔍 Indizio per l'impostore", "impostorClue": "🔍 Indizio per l'impostore",
@@ -50,15 +46,15 @@
"twoMin": "2 min", "twoMin": "2 min",
"threeMin": "3 min", "threeMin": "3 min",
"fiveMin": "5 min", "fiveMin": "5 min",
"startGame": "Inizia partita", "startGame": "Inizia partita",
"seeYourWord": "Vedi la tua parola", "seeYourWord": "Vedi la tua parola",
"eachPlayerMustSee": "Ogni giocatore deve vedere la propria parola in segreto", "eachPlayerMustSee": "Ogni giocatore deve vedere la propria parola in segreto",
"roundNumber": "Round {round}", "roundNumber": "Round {round}",
"@roundNumber": { "@roundNumber": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"alreadySeen": "Ha già visto la sua parola", "alreadySeen": "Ha già visto la sua parola",
@@ -67,16 +63,19 @@
"playersRemaining": "Mancano {count} giocatori", "playersRemaining": "Mancano {count} giocatori",
"@playersRemaining": { "@playersRemaining": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"youAreImpostor": "Sei l'impostore!", "youAreImpostor": "Sei l'impostore!",
"yourWordIs": "La tua parola è:", "yourWordIs": "La tua parola è:",
"clueCategory": "Indizio: {category}", "clueCategory": "Indizio: {category}",
"@clueCategory": { "@clueCategory": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"holdToSeeWord": "Tieni premuto per vedere la tua parola", "holdToSeeWord": "Tieni premuto per vedere la tua parola",
@@ -84,11 +83,12 @@
"showingWord": "👁️ Mostrando...", "showingWord": "👁️ Mostrando...",
"holdToSee": "👆 Tieni premuto per vedere", "holdToSee": "👆 Tieni premuto per vedere",
"seenMyWord": "Ho visto la mia parola", "seenMyWord": "Ho visto la mia parola",
"debateRound": "Discussione - Round {round}", "debateRound": "Discussione - Round {round}",
"@debateRound": { "@debateRound": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"timeUp": "⏰ Tempo scaduto!", "timeUp": "⏰ Tempo scaduto!",
@@ -97,21 +97,28 @@
"activePlayersInfo": "{active} attivi • {impostors} impostore/i nascosti", "activePlayersInfo": "{active} attivi • {impostors} impostore/i nascosti",
"@activePlayersInfo": { "@activePlayersInfo": {
"placeholders": { "placeholders": {
"active": {"type": "int"}, "active": {
"impostors": {"type": "int"} "type": "int"
},
"impostors": {
"type": "int"
}
} }
}, },
"eliminated": "Eliminato", "eliminated": "Eliminato",
"notes": "Note", "notes": "Note",
"goToVoting": "Vai alla votazione", "goToVoting": "Vai alla votazione",
"voting": "🗳️ Votazione", "voting": "🗳️ Votazione",
"turnToVote": "Turno di votare:", "turnToVote": "Turno di votare:",
"votesProgress": "Voti: {current}/{total}", "votesProgress": "Voti: {current}/{total}",
"@votesProgress": { "@votesProgress": {
"placeholders": { "placeholders": {
"current": {"type": "int"}, "current": {
"total": {"type": "int"} "type": "int"
},
"total": {
"type": "int"
}
} }
}, },
"whoIsImpostor": "Chi pensi sia l'impostore?", "whoIsImpostor": "Chi pensi sia l'impostore?",
@@ -120,7 +127,6 @@
"allVoted": "Tutti hanno votato!", "allVoted": "Tutti hanno votato!",
"tapToReveal": "Tocca per rivelare il risultato", "tapToReveal": "Tocca per rivelare il risultato",
"revealResult": "Rivela risultato", "revealResult": "Rivela risultato",
"result": "Risultato", "result": "Risultato",
"revealing": "Rivelando...", "revealing": "Rivelando...",
"wasImpostor": "Era un IMPOSTORE! 🎉", "wasImpostor": "Era un IMPOSTORE! 🎉",
@@ -129,7 +135,6 @@
"seeEndResult": "Vedi risultato finale", "seeEndResult": "Vedi risultato finale",
"impostorGuessWord": "L'impostore indovina la parola?", "impostorGuessWord": "L'impostore indovina la parola?",
"nextRound": "Prossimo round", "nextRound": "Prossimo round",
"impostorGuessTitle": "🎯 Tentativo dell'impostore", "impostorGuessTitle": "🎯 Tentativo dell'impostore",
"impostorCanGuess": "L'impostore eliminato può\nprovare a indovinare la parola", "impostorCanGuess": "L'impostore eliminato può\nprovare a indovinare la parola",
"ifCorrectImpostorsWin": "Se indovina, gli impostori vincono!", "ifCorrectImpostorsWin": "Se indovina, gli impostori vincono!",
@@ -140,20 +145,23 @@
"theWordWas": "La parola era: {word}", "theWordWas": "La parola era: {word}",
"@theWordWas": { "@theWordWas": {
"placeholders": { "placeholders": {
"word": {"type": "String"} "word": {
"type": "String"
}
} }
}, },
"impostorsWin": "Gli impostori vincono!", "impostorsWin": "Gli impostori vincono!",
"wrongGuess": "Non ha indovinato!", "wrongGuess": "Non ha indovinato!",
"gameContinues": "La partita continua...", "gameContinues": "La partita continua...",
"gameOver": "Fine della partita", "gameOver": "Fine della partita",
"playersWin": "I giocatori vincono!", "playersWin": "I giocatori vincono!",
"theSecretWordWas": "🔍 La parola era:", "theSecretWordWas": "🔍 La parola era:",
"categoryLabel": "Categoria: {category}", "categoryLabel": "Categoria: {category}",
"@categoryLabel": { "@categoryLabel": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"theImpostorWas": "🎭 L'impostore era:", "theImpostorWas": "🎭 L'impostore era:",
@@ -162,13 +170,16 @@
"roundElimination": "Round {round}: {name}", "roundElimination": "Round {round}: {name}",
"@roundElimination": { "@roundElimination": {
"placeholders": { "placeholders": {
"round": {"type": "int"}, "round": {
"name": {"type": "String"} "type": "int"
},
"name": {
"type": "String"
}
} }
}, },
"rematch": "Rivincita", "rematch": "Rivincita",
"mainMenu": "Menu principale", "mainMenu": "Menu principale",
"notesTitle": "📝 Note", "notesTitle": "📝 Note",
"notesSaved": "Note salvate", "notesSaved": "Note salvate",
"whoAreYou": "Chi sei?", "whoAreYou": "Chi sei?",
@@ -176,14 +187,15 @@
"notesOf": "Note di {name}", "notesOf": "Note di {name}",
"@notesOf": { "@notesOf": {
"placeholders": { "placeholders": {
"name": {"type": "String"} "name": {
"type": "String"
}
} }
}, },
"notesAboutPlayers": "Appunti su ogni giocatore", "notesAboutPlayers": "Appunti su ogni giocatore",
"playerNoteHint": "Cosa ha detto? Sospetto?", "playerNoteHint": "Cosa ha detto? Sospetto?",
"freeNote": "Nota libera", "freeNote": "Nota libera",
"freeNoteHint": "Appunti personali...", "freeNoteHint": "Appunti personali...",
"rulesTitle": "📖 Come giocare", "rulesTitle": "📖 Come giocare",
"rulesWhatIsTitle": "🎭 Cos'è L'Impostore?", "rulesWhatIsTitle": "🎭 Cos'è L'Impostore?",
"rulesWhatIsBody": "Un gioco di deduzione sociale per 3-20 giocatori. Tutti ricevono una parola segreta... tranne l'impostore! La tua missione: scoprire chi sta fingendo.", "rulesWhatIsBody": "Un gioco di deduzione sociale per 3-20 giocatori. Tutti ricevono una parola segreta... tranne l'impostore! La tua missione: scoprire chi sta fingendo.",
@@ -199,20 +211,17 @@
"rulesModesBody": "• Un solo dispositivo: tutti condividono il dispositivo. Ogni giocatore vede la propria parola tenendo premuto un pulsante.\n\n• Multi-dispositivo: ogni giocatore usa il proprio dispositivo. Si connettono tramite Bluetooth/WiFi Direct senza bisogno di internet.", "rulesModesBody": "• Un solo dispositivo: tutti condividono il dispositivo. Ogni giocatore vede la propria parola tenendo premuto un pulsante.\n\n• Multi-dispositivo: ogni giocatore usa il proprio dispositivo. Si connettono tramite Bluetooth/WiFi Direct senza bisogno di internet.",
"rulesExampleTitle": "✏️ Esempio di partita", "rulesExampleTitle": "✏️ Esempio di partita",
"rulesExampleBody": "Parola segreta: \"Pizza\"\n\n• Marco: \"Si mangia calda\" ✓\n• Giulia: \"Arriva in una scatola\" ✓\n• Luca (impostore): \"È molto popolare\" 🤔\n• Sofia: \"Ha il formaggio\" ✓\n\nLuca ha dato una risposta molto generica... Sospetto!", "rulesExampleBody": "Parola segreta: \"Pizza\"\n\n• Marco: \"Si mangia calda\" ✓\n• Giulia: \"Arriva in una scatola\" ✓\n• Luca (impostore): \"È molto popolare\" 🤔\n• Sofia: \"Ha il formaggio\" ✓\n\nLuca ha dato una risposta molto generica... Sospetto!",
"joinGameTitle": "Unisciti alla partita", "joinGameTitle": "Unisciti alla partita",
"multiDeviceMode": "Modalità multi-dispositivo", "multiDeviceMode": "Modalità multi-dispositivo",
"scanQrDescription": "Scansiona il codice QR mostrato dall'host per connetterti alla partita tramite Bluetooth/WiFi Direct.", "scanQrDescription": "Scansiona il codice QR mostrato dall'host per connetterti alla partita tramite Bluetooth/WiFi Direct.",
"comingSoon": "Prossimamente", "comingSoon": "Prossimamente",
"nearbyNotAvailable": "La connessione multi-dispositivo con Nearby Connections richiede dispositivi Android fisici.\n\nPer ora, usa la modalità \"Un solo dispositivo\" per giocare su un dispositivo condiviso.", "nearbyNotAvailable": "La connessione multi-dispositivo con Nearby Connections richiede dispositivi Android fisici.\n\nPer ora, usa la modalità \"Un solo dispositivo\" per giocare su un dispositivo condiviso.",
"back": "Indietro", "back": "Indietro",
"yes": "Sì", "yes": "Sì",
"no": "No", "no": "No",
"cancel": "Annulla", "cancel": "Annulla",
"accept": "Accetta", "accept": "Accetta",
"next": "Avanti", "next": "Avanti",
"settingsTitle": "Impostazioni", "settingsTitle": "Impostazioni",
"language": "Lingua", "language": "Lingua",
"soundVolume": "Volume effetti", "soundVolume": "Volume effetti",
@@ -257,5 +266,10 @@
"defaultPlayerName": "Giocatore", "defaultPlayerName": "Giocatore",
"play": "Gioca", "play": "Gioca",
"history": "Cronologia", "history": "Cronologia",
"mainTagline": "Scopri limpostore prima che sia troppo tardi" "mainTagline": "Scopri limpostore prima che sia troppo tardi",
"deviceProfile": "Profilo del dispositivo",
"profileName": "Nome",
"profileNick": "Nick",
"save": "Salva",
"automaticLanguage": "Automatico"
} }
+48 -34
View File
@@ -1,20 +1,16 @@
{ {
"@@locale": "ja", "@@locale": "ja",
"appTitle": "インポスター", "appTitle": "インポスター",
"subtitle": "正体推理ゲーム", "subtitle": "正体推理ゲーム",
"loadingWords": "ワードを読み込み中...", "loadingWords": "ワードを読み込み中...",
"playersRange": "3-20人 • インターネット不要", "playersRange": "3-20人 • インターネット不要",
"createGame": "ゲームを作成", "createGame": "ゲームを作成",
"joinGame": "ゲームに参加", "joinGame": "ゲームに参加",
"howToPlay": "遊び方", "howToPlay": "遊び方",
"settings": "設定", "settings": "設定",
"gameMode": "ゲームモード", "gameMode": "ゲームモード",
"singleDevice": "1台で遊ぶ", "singleDevice": "1台で遊ぶ",
"multiDevice": "複数台で遊ぶ", "multiDevice": "複数台で遊ぶ",
"category": "カテゴリー", "category": "カテゴリー",
"categoryAll": "すべて", "categoryAll": "すべて",
"categoryAnimals": "動物", "categoryAnimals": "動物",
@@ -27,11 +23,12 @@
"categoryMovies": "映画", "categoryMovies": "映画",
"categoryMusic": "音楽", "categoryMusic": "音楽",
"categoryTechnology": "テクノロジー", "categoryTechnology": "テクノロジー",
"playersCount": "プレイヤー ({count})", "playersCount": "プレイヤー ({count})",
"@playersCount": { "@playersCount": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"playersRangeHint": "3-20", "playersRangeHint": "3-20",
@@ -39,7 +36,6 @@
"playerAlreadyExists": "同じ名前のプレイヤーがすでにいます", "playerAlreadyExists": "同じ名前のプレイヤーがすでにいます",
"maxPlayersReached": "最大20人までです", "maxPlayersReached": "最大20人までです",
"minPlayersRequired": "最低3人必要です", "minPlayersRequired": "最低3人必要です",
"configuration": "設定", "configuration": "設定",
"impostors": "🎭 インポスター", "impostors": "🎭 インポスター",
"impostorClue": "🔍 インポスターへのヒント", "impostorClue": "🔍 インポスターへのヒント",
@@ -50,15 +46,15 @@
"twoMin": "2分", "twoMin": "2分",
"threeMin": "3分", "threeMin": "3分",
"fiveMin": "5分", "fiveMin": "5分",
"startGame": "ゲーム開始", "startGame": "ゲーム開始",
"seeYourWord": "自分のワードを見る", "seeYourWord": "自分のワードを見る",
"eachPlayerMustSee": "各プレイヤーは秘密にワードを確認してください", "eachPlayerMustSee": "各プレイヤーは秘密にワードを確認してください",
"roundNumber": "ラウンド {round}", "roundNumber": "ラウンド {round}",
"@roundNumber": { "@roundNumber": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"alreadySeen": "ワードを確認済み", "alreadySeen": "ワードを確認済み",
@@ -67,16 +63,19 @@
"playersRemaining": "残り {count} 人", "playersRemaining": "残り {count} 人",
"@playersRemaining": { "@playersRemaining": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"youAreImpostor": "あなたはインポスターです!", "youAreImpostor": "あなたはインポスターです!",
"yourWordIs": "あなたのワード:", "yourWordIs": "あなたのワード:",
"clueCategory": "ヒント: {category}", "clueCategory": "ヒント: {category}",
"@clueCategory": { "@clueCategory": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"holdToSeeWord": "長押しでワードを確認", "holdToSeeWord": "長押しでワードを確認",
@@ -84,11 +83,12 @@
"showingWord": "👁️ 表示中...", "showingWord": "👁️ 表示中...",
"holdToSee": "👆 長押しで確認", "holdToSee": "👆 長押しで確認",
"seenMyWord": "ワードを確認しました", "seenMyWord": "ワードを確認しました",
"debateRound": "議論 - ラウンド {round}", "debateRound": "議論 - ラウンド {round}",
"@debateRound": { "@debateRound": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"timeUp": "⏰ 時間切れ!", "timeUp": "⏰ 時間切れ!",
@@ -97,21 +97,28 @@
"activePlayersInfo": "{active} 人参加中 • {impostors} 人のインポスターが潜伏中", "activePlayersInfo": "{active} 人参加中 • {impostors} 人のインポスターが潜伏中",
"@activePlayersInfo": { "@activePlayersInfo": {
"placeholders": { "placeholders": {
"active": {"type": "int"}, "active": {
"impostors": {"type": "int"} "type": "int"
},
"impostors": {
"type": "int"
}
} }
}, },
"eliminated": "脱落", "eliminated": "脱落",
"notes": "メモ", "notes": "メモ",
"goToVoting": "投票へ進む", "goToVoting": "投票へ進む",
"voting": "🗳️ 投票", "voting": "🗳️ 投票",
"turnToVote": "投票の番:", "turnToVote": "投票の番:",
"votesProgress": "投票: {current}/{total}", "votesProgress": "投票: {current}/{total}",
"@votesProgress": { "@votesProgress": {
"placeholders": { "placeholders": {
"current": {"type": "int"}, "current": {
"total": {"type": "int"} "type": "int"
},
"total": {
"type": "int"
}
} }
}, },
"whoIsImpostor": "誰がインポスターだと思いますか?", "whoIsImpostor": "誰がインポスターだと思いますか?",
@@ -120,7 +127,6 @@
"allVoted": "全員が投票しました!", "allVoted": "全員が投票しました!",
"tapToReveal": "タップして結果を見る", "tapToReveal": "タップして結果を見る",
"revealResult": "結果を発表", "revealResult": "結果を発表",
"result": "結果", "result": "結果",
"revealing": "発表中...", "revealing": "発表中...",
"wasImpostor": "インポスターでした! 🎉", "wasImpostor": "インポスターでした! 🎉",
@@ -129,7 +135,6 @@
"seeEndResult": "最終結果を見る", "seeEndResult": "最終結果を見る",
"impostorGuessWord": "インポスターがワードを当てる?", "impostorGuessWord": "インポスターがワードを当てる?",
"nextRound": "次のラウンドへ", "nextRound": "次のラウンドへ",
"impostorGuessTitle": "🎯 インポスターの推理", "impostorGuessTitle": "🎯 インポスターの推理",
"impostorCanGuess": "脱落したインポスターは\nワードを当てることができます", "impostorCanGuess": "脱落したインポスターは\nワードを当てることができます",
"ifCorrectImpostorsWin": "正解すればインポスターの勝ちです!", "ifCorrectImpostorsWin": "正解すればインポスターの勝ちです!",
@@ -140,20 +145,23 @@
"theWordWas": "ワードは: {word}", "theWordWas": "ワードは: {word}",
"@theWordWas": { "@theWordWas": {
"placeholders": { "placeholders": {
"word": {"type": "String"} "word": {
"type": "String"
}
} }
}, },
"impostorsWin": "インポスターの勝利!", "impostorsWin": "インポスターの勝利!",
"wrongGuess": "不正解!", "wrongGuess": "不正解!",
"gameContinues": "ゲームは続きます...", "gameContinues": "ゲームは続きます...",
"gameOver": "ゲーム終了", "gameOver": "ゲーム終了",
"playersWin": "プレイヤーの勝利!", "playersWin": "プレイヤーの勝利!",
"theSecretWordWas": "🔍 ワードは:", "theSecretWordWas": "🔍 ワードは:",
"categoryLabel": "カテゴリー: {category}", "categoryLabel": "カテゴリー: {category}",
"@categoryLabel": { "@categoryLabel": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"theImpostorWas": "🎭 インポスターは:", "theImpostorWas": "🎭 インポスターは:",
@@ -162,13 +170,16 @@
"roundElimination": "ラウンド {round}: {name}", "roundElimination": "ラウンド {round}: {name}",
"@roundElimination": { "@roundElimination": {
"placeholders": { "placeholders": {
"round": {"type": "int"}, "round": {
"name": {"type": "String"} "type": "int"
},
"name": {
"type": "String"
}
} }
}, },
"rematch": "もう一度", "rematch": "もう一度",
"mainMenu": "メインメニュー", "mainMenu": "メインメニュー",
"notesTitle": "📝 メモ", "notesTitle": "📝 メモ",
"notesSaved": "メモを保存しました", "notesSaved": "メモを保存しました",
"whoAreYou": "あなたは誰?", "whoAreYou": "あなたは誰?",
@@ -176,14 +187,15 @@
"notesOf": "{name}のメモ", "notesOf": "{name}のメモ",
"@notesOf": { "@notesOf": {
"placeholders": { "placeholders": {
"name": {"type": "String"} "name": {
"type": "String"
}
} }
}, },
"notesAboutPlayers": "各プレイヤーについてのメモ", "notesAboutPlayers": "各プレイヤーについてのメモ",
"playerNoteHint": "何を言った?怪しい?", "playerNoteHint": "何を言った?怪しい?",
"freeNote": "フリーメモ", "freeNote": "フリーメモ",
"freeNoteHint": "個人メモ...", "freeNoteHint": "個人メモ...",
"rulesTitle": "📖 遊び方", "rulesTitle": "📖 遊び方",
"rulesWhatIsTitle": "🎭 インポスターとは?", "rulesWhatIsTitle": "🎭 インポスターとは?",
"rulesWhatIsBody": "3〜20人で遊べる正体推理ゲームです。全員にお題のワードが配られますが…インポスターだけは知りません!あなたの使命:誰がなりすましているかを見抜くことです。", "rulesWhatIsBody": "3〜20人で遊べる正体推理ゲームです。全員にお題のワードが配られますが…インポスターだけは知りません!あなたの使命:誰がなりすましているかを見抜くことです。",
@@ -199,20 +211,17 @@
"rulesModesBody": "• 1台で遊ぶ:端末を全員で共有します。各プレイヤーはボタンを長押しして自分のワードを確認します。\n\n• 複数台で遊ぶ:各プレイヤーが自分の端末を使います。Bluetooth/WiFi Directで接続、インターネット不要。", "rulesModesBody": "• 1台で遊ぶ:端末を全員で共有します。各プレイヤーはボタンを長押しして自分のワードを確認します。\n\n• 複数台で遊ぶ:各プレイヤーが自分の端末を使います。Bluetooth/WiFi Directで接続、インターネット不要。",
"rulesExampleTitle": "✏️ ゲームの例", "rulesExampleTitle": "✏️ ゲームの例",
"rulesExampleBody": "お題のワード:「ピザ」\n\n• さくら:「温かいうちに食べる」 ✓\n• たくや:「箱に入って届く」 ✓\n• ゆい(インポスター):「とても人気がある」 🤔\n• けんと:「チーズがのっている」 ✓\n\nゆいの答えはあまりにも曖昧... 怪しい!", "rulesExampleBody": "お題のワード:「ピザ」\n\n• さくら:「温かいうちに食べる」 ✓\n• たくや:「箱に入って届く」 ✓\n• ゆい(インポスター):「とても人気がある」 🤔\n• けんと:「チーズがのっている」 ✓\n\nゆいの答えはあまりにも曖昧... 怪しい!",
"joinGameTitle": "ゲームに参加", "joinGameTitle": "ゲームに参加",
"multiDeviceMode": "複数台モード", "multiDeviceMode": "複数台モード",
"scanQrDescription": "ホストが表示するQRコードをスキャンして、Bluetooth/WiFi Direct経由でゲームに接続します。", "scanQrDescription": "ホストが表示するQRコードをスキャンして、Bluetooth/WiFi Direct経由でゲームに接続します。",
"comingSoon": "近日公開", "comingSoon": "近日公開",
"nearbyNotAvailable": "複数台接続のNearby Connectionsには、物理的なAndroid端末が必要です。\n\n現時点では「1台で遊ぶ」モードをご利用ください。", "nearbyNotAvailable": "複数台接続のNearby Connectionsには、物理的なAndroid端末が必要です。\n\n現時点では「1台で遊ぶ」モードをご利用ください。",
"back": "戻る", "back": "戻る",
"yes": "はい", "yes": "はい",
"no": "いいえ", "no": "いいえ",
"cancel": "キャンセル", "cancel": "キャンセル",
"accept": "OK", "accept": "OK",
"next": "次へ", "next": "次へ",
"settingsTitle": "設定", "settingsTitle": "設定",
"language": "言語", "language": "言語",
"soundVolume": "効果音の音量", "soundVolume": "効果音の音量",
@@ -257,5 +266,10 @@
"defaultPlayerName": "プレイヤー", "defaultPlayerName": "プレイヤー",
"play": "プレイ", "play": "プレイ",
"history": "履歴", "history": "履歴",
"mainTagline": "手遅れになる前にインポスターを見つけよう" "mainTagline": "手遅れになる前にインポスターを見つけよう",
"deviceProfile": "デバイスプロフィール",
"profileName": "名前",
"profileNick": "ニックネーム",
"save": "保存",
"automaticLanguage": "自動"
} }
+48 -34
View File
@@ -1,20 +1,16 @@
{ {
"@@locale": "ko", "@@locale": "ko",
"appTitle": "임포스터", "appTitle": "임포스터",
"subtitle": "사회적 추리 게임", "subtitle": "사회적 추리 게임",
"loadingWords": "단어 불러오는 중...", "loadingWords": "단어 불러오는 중...",
"playersRange": "3-20명 • 인터넷 불필요", "playersRange": "3-20명 • 인터넷 불필요",
"createGame": "게임 만들기", "createGame": "게임 만들기",
"joinGame": "게임 참가", "joinGame": "게임 참가",
"howToPlay": "게임 방법", "howToPlay": "게임 방법",
"settings": "설정", "settings": "설정",
"gameMode": "게임 모드", "gameMode": "게임 모드",
"singleDevice": "기기 하나로", "singleDevice": "기기 하나로",
"multiDevice": "여러 기기로", "multiDevice": "여러 기기로",
"category": "카테고리", "category": "카테고리",
"categoryAll": "전체", "categoryAll": "전체",
"categoryAnimals": "동물", "categoryAnimals": "동물",
@@ -27,11 +23,12 @@
"categoryMovies": "영화", "categoryMovies": "영화",
"categoryMusic": "음악", "categoryMusic": "음악",
"categoryTechnology": "기술", "categoryTechnology": "기술",
"playersCount": "플레이어 ({count})", "playersCount": "플레이어 ({count})",
"@playersCount": { "@playersCount": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"playersRangeHint": "3-20", "playersRangeHint": "3-20",
@@ -39,7 +36,6 @@
"playerAlreadyExists": "같은 이름의 플레이어가 이미 있습니다", "playerAlreadyExists": "같은 이름의 플레이어가 이미 있습니다",
"maxPlayersReached": "최대 20명까지 가능합니다", "maxPlayersReached": "최대 20명까지 가능합니다",
"minPlayersRequired": "최소 3명이 필요합니다", "minPlayersRequired": "최소 3명이 필요합니다",
"configuration": "설정", "configuration": "설정",
"impostors": "🎭 임포스터", "impostors": "🎭 임포스터",
"impostorClue": "🔍 임포스터 힌트", "impostorClue": "🔍 임포스터 힌트",
@@ -50,15 +46,15 @@
"twoMin": "2분", "twoMin": "2분",
"threeMin": "3분", "threeMin": "3분",
"fiveMin": "5분", "fiveMin": "5분",
"startGame": "게임 시작", "startGame": "게임 시작",
"seeYourWord": "내 단어 보기", "seeYourWord": "내 단어 보기",
"eachPlayerMustSee": "각 플레이어는 비밀리에 자신의 단어를 확인하세요", "eachPlayerMustSee": "각 플레이어는 비밀리에 자신의 단어를 확인하세요",
"roundNumber": "라운드 {round}", "roundNumber": "라운드 {round}",
"@roundNumber": { "@roundNumber": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"alreadySeen": "단어를 이미 확인함", "alreadySeen": "단어를 이미 확인함",
@@ -67,16 +63,19 @@
"playersRemaining": "나머지 {count}명", "playersRemaining": "나머지 {count}명",
"@playersRemaining": { "@playersRemaining": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"youAreImpostor": "당신은 임포스터입니다!", "youAreImpostor": "당신은 임포스터입니다!",
"yourWordIs": "당신의 단어:", "yourWordIs": "당신의 단어:",
"clueCategory": "힌트: {category}", "clueCategory": "힌트: {category}",
"@clueCategory": { "@clueCategory": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"holdToSeeWord": "길게 눌러 단어를 확인하세요", "holdToSeeWord": "길게 눌러 단어를 확인하세요",
@@ -84,11 +83,12 @@
"showingWord": "👁️ 표시 중...", "showingWord": "👁️ 표시 중...",
"holdToSee": "👆 길게 눌러 확인", "holdToSee": "👆 길게 눌러 확인",
"seenMyWord": "내 단어를 확인했습니다", "seenMyWord": "내 단어를 확인했습니다",
"debateRound": "토론 - 라운드 {round}", "debateRound": "토론 - 라운드 {round}",
"@debateRound": { "@debateRound": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"timeUp": "⏰ 시간 종료!", "timeUp": "⏰ 시간 종료!",
@@ -97,21 +97,28 @@
"activePlayersInfo": "{active}명 참여 중 • {impostors}명의 임포스터 잠복 중", "activePlayersInfo": "{active}명 참여 중 • {impostors}명의 임포스터 잠복 중",
"@activePlayersInfo": { "@activePlayersInfo": {
"placeholders": { "placeholders": {
"active": {"type": "int"}, "active": {
"impostors": {"type": "int"} "type": "int"
},
"impostors": {
"type": "int"
}
} }
}, },
"eliminated": "탈락", "eliminated": "탈락",
"notes": "메모", "notes": "메모",
"goToVoting": "투표하러 가기", "goToVoting": "투표하러 가기",
"voting": "🗳️ 투표", "voting": "🗳️ 투표",
"turnToVote": "투표할 차례:", "turnToVote": "투표할 차례:",
"votesProgress": "투표: {current}/{total}", "votesProgress": "투표: {current}/{total}",
"@votesProgress": { "@votesProgress": {
"placeholders": { "placeholders": {
"current": {"type": "int"}, "current": {
"total": {"type": "int"} "type": "int"
},
"total": {
"type": "int"
}
} }
}, },
"whoIsImpostor": "누가 임포스터라고 생각하나요?", "whoIsImpostor": "누가 임포스터라고 생각하나요?",
@@ -120,7 +127,6 @@
"allVoted": "모두 투표했습니다!", "allVoted": "모두 투표했습니다!",
"tapToReveal": "탭하여 결과 확인", "tapToReveal": "탭하여 결과 확인",
"revealResult": "결과 공개", "revealResult": "결과 공개",
"result": "결과", "result": "결과",
"revealing": "공개 중...", "revealing": "공개 중...",
"wasImpostor": "임포스터였습니다! 🎉", "wasImpostor": "임포스터였습니다! 🎉",
@@ -129,7 +135,6 @@
"seeEndResult": "최종 결과 보기", "seeEndResult": "최종 결과 보기",
"impostorGuessWord": "임포스터가 단어를 맞출까요?", "impostorGuessWord": "임포스터가 단어를 맞출까요?",
"nextRound": "다음 라운드", "nextRound": "다음 라운드",
"impostorGuessTitle": "🎯 임포스터의 추측", "impostorGuessTitle": "🎯 임포스터의 추측",
"impostorCanGuess": "탈락한 임포스터가\n단어를 맞출 수 있습니다", "impostorCanGuess": "탈락한 임포스터가\n단어를 맞출 수 있습니다",
"ifCorrectImpostorsWin": "정답이면 임포스터의 승리!", "ifCorrectImpostorsWin": "정답이면 임포스터의 승리!",
@@ -140,20 +145,23 @@
"theWordWas": "단어는: {word}", "theWordWas": "단어는: {word}",
"@theWordWas": { "@theWordWas": {
"placeholders": { "placeholders": {
"word": {"type": "String"} "word": {
"type": "String"
}
} }
}, },
"impostorsWin": "임포스터 승리!", "impostorsWin": "임포스터 승리!",
"wrongGuess": "오답입니다!", "wrongGuess": "오답입니다!",
"gameContinues": "게임이 계속됩니다...", "gameContinues": "게임이 계속됩니다...",
"gameOver": "게임 종료", "gameOver": "게임 종료",
"playersWin": "플레이어 승리!", "playersWin": "플레이어 승리!",
"theSecretWordWas": "🔍 단어는:", "theSecretWordWas": "🔍 단어는:",
"categoryLabel": "카테고리: {category}", "categoryLabel": "카테고리: {category}",
"@categoryLabel": { "@categoryLabel": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"theImpostorWas": "🎭 임포스터는:", "theImpostorWas": "🎭 임포스터는:",
@@ -162,13 +170,16 @@
"roundElimination": "라운드 {round}: {name}", "roundElimination": "라운드 {round}: {name}",
"@roundElimination": { "@roundElimination": {
"placeholders": { "placeholders": {
"round": {"type": "int"}, "round": {
"name": {"type": "String"} "type": "int"
},
"name": {
"type": "String"
}
} }
}, },
"rematch": "재대결", "rematch": "재대결",
"mainMenu": "메인 메뉴", "mainMenu": "메인 메뉴",
"notesTitle": "📝 메모", "notesTitle": "📝 메모",
"notesSaved": "메모가 저장되었습니다", "notesSaved": "메모가 저장되었습니다",
"whoAreYou": "당신은 누구인가요?", "whoAreYou": "당신은 누구인가요?",
@@ -176,14 +187,15 @@
"notesOf": "{name}의 메모", "notesOf": "{name}의 메모",
"@notesOf": { "@notesOf": {
"placeholders": { "placeholders": {
"name": {"type": "String"} "name": {
"type": "String"
}
} }
}, },
"notesAboutPlayers": "각 플레이어에 대한 메모", "notesAboutPlayers": "각 플레이어에 대한 메모",
"playerNoteHint": "뭐라고 했나? 수상한가?", "playerNoteHint": "뭐라고 했나? 수상한가?",
"freeNote": "자유 메모", "freeNote": "자유 메모",
"freeNoteHint": "개인 메모...", "freeNoteHint": "개인 메모...",
"rulesTitle": "📖 게임 방법", "rulesTitle": "📖 게임 방법",
"rulesWhatIsTitle": "🎭 임포스터란?", "rulesWhatIsTitle": "🎭 임포스터란?",
"rulesWhatIsBody": "3~20명이 즐기는 사회적 추리 게임입니다. 모두가 비밀 단어를 받지만... 임포스터만 받지 못합니다! 당신의 임무: 누가 아는 척하는지 찾아내세요.", "rulesWhatIsBody": "3~20명이 즐기는 사회적 추리 게임입니다. 모두가 비밀 단어를 받지만... 임포스터만 받지 못합니다! 당신의 임무: 누가 아는 척하는지 찾아내세요.",
@@ -199,20 +211,17 @@
"rulesModesBody": "• 기기 하나로: 모두가 한 기기를 공유합니다. 각 플레이어가 버튼을 길게 눌러 자신의 단어를 확인합니다.\n\n• 여러 기기로: 각 플레이어가 자신의 기기를 사용합니다. Bluetooth/WiFi Direct로 연결하며 인터넷이 필요 없습니다.", "rulesModesBody": "• 기기 하나로: 모두가 한 기기를 공유합니다. 각 플레이어가 버튼을 길게 눌러 자신의 단어를 확인합니다.\n\n• 여러 기기로: 각 플레이어가 자신의 기기를 사용합니다. Bluetooth/WiFi Direct로 연결하며 인터넷이 필요 없습니다.",
"rulesExampleTitle": "✏️ 게임 예시", "rulesExampleTitle": "✏️ 게임 예시",
"rulesExampleBody": "비밀 단어: \"피자\"\n\n• 수진: \"뜨거울 때 먹어요\" ✓\n• 민수: \"상자에 들어 있어요\" ✓\n• 지은 (임포스터): \"아주 인기 있어요\" 🤔\n• 현우: \"치즈가 올려져 있어요\" ✓\n\n지은이 너무 일반적인 답변을 했네요... 수상해요!", "rulesExampleBody": "비밀 단어: \"피자\"\n\n• 수진: \"뜨거울 때 먹어요\" ✓\n• 민수: \"상자에 들어 있어요\" ✓\n• 지은 (임포스터): \"아주 인기 있어요\" 🤔\n• 현우: \"치즈가 올려져 있어요\" ✓\n\n지은이 너무 일반적인 답변을 했네요... 수상해요!",
"joinGameTitle": "게임 참가", "joinGameTitle": "게임 참가",
"multiDeviceMode": "여러 기기 모드", "multiDeviceMode": "여러 기기 모드",
"scanQrDescription": "호스트가 보여주는 QR 코드를 스캔하여 Bluetooth/WiFi Direct로 게임에 접속하세요.", "scanQrDescription": "호스트가 보여주는 QR 코드를 스캔하여 Bluetooth/WiFi Direct로 게임에 접속하세요.",
"comingSoon": "곧 출시", "comingSoon": "곧 출시",
"nearbyNotAvailable": "여러 기기 연결을 위한 Nearby Connections는 실제 Android 기기가 필요합니다.\n\n현재는 \"기기 하나로\" 모드를 사용하여 하나의 기기에서 플레이하세요.", "nearbyNotAvailable": "여러 기기 연결을 위한 Nearby Connections는 실제 Android 기기가 필요합니다.\n\n현재는 \"기기 하나로\" 모드를 사용하여 하나의 기기에서 플레이하세요.",
"back": "뒤로", "back": "뒤로",
"yes": "예", "yes": "예",
"no": "아니오", "no": "아니오",
"cancel": "취소", "cancel": "취소",
"accept": "확인", "accept": "확인",
"next": "다음", "next": "다음",
"settingsTitle": "설정", "settingsTitle": "설정",
"language": "언어", "language": "언어",
"soundVolume": "효과음 볼륨", "soundVolume": "효과음 볼륨",
@@ -257,5 +266,10 @@
"defaultPlayerName": "플레이어", "defaultPlayerName": "플레이어",
"play": "플레이", "play": "플레이",
"history": "기록", "history": "기록",
"mainTagline": "늦기 전에 임포스터를 찾아내세요" "mainTagline": "늦기 전에 임포스터를 찾아내세요",
"deviceProfile": "기기 프로필",
"profileName": "이름",
"profileNick": "닉네임",
"save": "저장",
"automaticLanguage": "자동"
} }
+48 -34
View File
@@ -1,20 +1,16 @@
{ {
"@@locale": "nl", "@@locale": "nl",
"appTitle": "De Bedrieger", "appTitle": "De Bedrieger",
"subtitle": "Sociaal deductiespel", "subtitle": "Sociaal deductiespel",
"loadingWords": "Woorden laden...", "loadingWords": "Woorden laden...",
"playersRange": "3-20 spelers • Zonder internet", "playersRange": "3-20 spelers • Zonder internet",
"createGame": "Spel aanmaken", "createGame": "Spel aanmaken",
"joinGame": "Deelnemen aan spel", "joinGame": "Deelnemen aan spel",
"howToPlay": "Hoe te spelen", "howToPlay": "Hoe te spelen",
"settings": "Instellingen", "settings": "Instellingen",
"gameMode": "Spelmodus", "gameMode": "Spelmodus",
"singleDevice": "Eén toestel", "singleDevice": "Eén toestel",
"multiDevice": "Meerdere toestellen", "multiDevice": "Meerdere toestellen",
"category": "Categorie", "category": "Categorie",
"categoryAll": "Alle", "categoryAll": "Alle",
"categoryAnimals": "Dieren", "categoryAnimals": "Dieren",
@@ -27,11 +23,12 @@
"categoryMovies": "Films", "categoryMovies": "Films",
"categoryMusic": "Muziek", "categoryMusic": "Muziek",
"categoryTechnology": "Technologie", "categoryTechnology": "Technologie",
"playersCount": "Spelers ({count})", "playersCount": "Spelers ({count})",
"@playersCount": { "@playersCount": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"playersRangeHint": "3-20", "playersRangeHint": "3-20",
@@ -39,7 +36,6 @@
"playerAlreadyExists": "Er bestaat al een speler met die naam", "playerAlreadyExists": "Er bestaat al een speler met die naam",
"maxPlayersReached": "Maximaal 20 spelers", "maxPlayersReached": "Maximaal 20 spelers",
"minPlayersRequired": "Er zijn minstens 3 spelers nodig", "minPlayersRequired": "Er zijn minstens 3 spelers nodig",
"configuration": "Configuratie", "configuration": "Configuratie",
"impostors": "🎭 Bedriegers", "impostors": "🎭 Bedriegers",
"impostorClue": "🔍 Aanwijzing voor bedrieger", "impostorClue": "🔍 Aanwijzing voor bedrieger",
@@ -50,15 +46,15 @@
"twoMin": "2 min", "twoMin": "2 min",
"threeMin": "3 min", "threeMin": "3 min",
"fiveMin": "5 min", "fiveMin": "5 min",
"startGame": "Spel starten", "startGame": "Spel starten",
"seeYourWord": "Bekijk je woord", "seeYourWord": "Bekijk je woord",
"eachPlayerMustSee": "Elke speler moet zijn woord in het geheim bekijken", "eachPlayerMustSee": "Elke speler moet zijn woord in het geheim bekijken",
"roundNumber": "Ronde {round}", "roundNumber": "Ronde {round}",
"@roundNumber": { "@roundNumber": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"alreadySeen": "Heeft zijn woord al gezien", "alreadySeen": "Heeft zijn woord al gezien",
@@ -67,16 +63,19 @@
"playersRemaining": "Nog {count} spelers", "playersRemaining": "Nog {count} spelers",
"@playersRemaining": { "@playersRemaining": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"youAreImpostor": "Jij bent de bedrieger!", "youAreImpostor": "Jij bent de bedrieger!",
"yourWordIs": "Jouw woord is:", "yourWordIs": "Jouw woord is:",
"clueCategory": "Aanwijzing: {category}", "clueCategory": "Aanwijzing: {category}",
"@clueCategory": { "@clueCategory": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"holdToSeeWord": "Houd ingedrukt om je woord te zien", "holdToSeeWord": "Houd ingedrukt om je woord te zien",
@@ -84,11 +83,12 @@
"showingWord": "👁️ Wordt getoond...", "showingWord": "👁️ Wordt getoond...",
"holdToSee": "👆 Houd ingedrukt om te zien", "holdToSee": "👆 Houd ingedrukt om te zien",
"seenMyWord": "Ik heb mijn woord gezien", "seenMyWord": "Ik heb mijn woord gezien",
"debateRound": "Debat - Ronde {round}", "debateRound": "Debat - Ronde {round}",
"@debateRound": { "@debateRound": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"timeUp": "⏰ Tijd is om!", "timeUp": "⏰ Tijd is om!",
@@ -97,21 +97,28 @@
"activePlayersInfo": "{active} actief • {impostors} verborgen bedrieger(s)", "activePlayersInfo": "{active} actief • {impostors} verborgen bedrieger(s)",
"@activePlayersInfo": { "@activePlayersInfo": {
"placeholders": { "placeholders": {
"active": {"type": "int"}, "active": {
"impostors": {"type": "int"} "type": "int"
},
"impostors": {
"type": "int"
}
} }
}, },
"eliminated": "Geëlimineerd", "eliminated": "Geëlimineerd",
"notes": "Notities", "notes": "Notities",
"goToVoting": "Naar stemming", "goToVoting": "Naar stemming",
"voting": "🗳️ Stemming", "voting": "🗳️ Stemming",
"turnToVote": "Beurt om te stemmen:", "turnToVote": "Beurt om te stemmen:",
"votesProgress": "Stemmen: {current}/{total}", "votesProgress": "Stemmen: {current}/{total}",
"@votesProgress": { "@votesProgress": {
"placeholders": { "placeholders": {
"current": {"type": "int"}, "current": {
"total": {"type": "int"} "type": "int"
},
"total": {
"type": "int"
}
} }
}, },
"whoIsImpostor": "Wie is volgens jou de bedrieger?", "whoIsImpostor": "Wie is volgens jou de bedrieger?",
@@ -120,7 +127,6 @@
"allVoted": "Iedereen heeft gestemd!", "allVoted": "Iedereen heeft gestemd!",
"tapToReveal": "Tik om het resultaat te onthullen", "tapToReveal": "Tik om het resultaat te onthullen",
"revealResult": "Resultaat onthullen", "revealResult": "Resultaat onthullen",
"result": "Resultaat", "result": "Resultaat",
"revealing": "Onthullen...", "revealing": "Onthullen...",
"wasImpostor": "Was de BEDRIEGER! 🎉", "wasImpostor": "Was de BEDRIEGER! 🎉",
@@ -129,7 +135,6 @@
"seeEndResult": "Eindresultaat bekijken", "seeEndResult": "Eindresultaat bekijken",
"impostorGuessWord": "Raadt de bedrieger het woord?", "impostorGuessWord": "Raadt de bedrieger het woord?",
"nextRound": "Volgende ronde", "nextRound": "Volgende ronde",
"impostorGuessTitle": "🎯 Gok van de bedrieger", "impostorGuessTitle": "🎯 Gok van de bedrieger",
"impostorCanGuess": "De geëlimineerde bedrieger mag\nproberen het woord te raden", "impostorCanGuess": "De geëlimineerde bedrieger mag\nproberen het woord te raden",
"ifCorrectImpostorsWin": "Als het klopt, winnen de bedriegers!", "ifCorrectImpostorsWin": "Als het klopt, winnen de bedriegers!",
@@ -140,20 +145,23 @@
"theWordWas": "Het woord was: {word}", "theWordWas": "Het woord was: {word}",
"@theWordWas": { "@theWordWas": {
"placeholders": { "placeholders": {
"word": {"type": "String"} "word": {
"type": "String"
}
} }
}, },
"impostorsWin": "De bedriegers winnen!", "impostorsWin": "De bedriegers winnen!",
"wrongGuess": "Fout geraden!", "wrongGuess": "Fout geraden!",
"gameContinues": "Het spel gaat verder...", "gameContinues": "Het spel gaat verder...",
"gameOver": "Einde van het spel", "gameOver": "Einde van het spel",
"playersWin": "De spelers winnen!", "playersWin": "De spelers winnen!",
"theSecretWordWas": "🔍 Het woord was:", "theSecretWordWas": "🔍 Het woord was:",
"categoryLabel": "Categorie: {category}", "categoryLabel": "Categorie: {category}",
"@categoryLabel": { "@categoryLabel": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"theImpostorWas": "🎭 De bedrieger was:", "theImpostorWas": "🎭 De bedrieger was:",
@@ -162,13 +170,16 @@
"roundElimination": "Ronde {round}: {name}", "roundElimination": "Ronde {round}: {name}",
"@roundElimination": { "@roundElimination": {
"placeholders": { "placeholders": {
"round": {"type": "int"}, "round": {
"name": {"type": "String"} "type": "int"
},
"name": {
"type": "String"
}
} }
}, },
"rematch": "Herkansing", "rematch": "Herkansing",
"mainMenu": "Hoofdmenu", "mainMenu": "Hoofdmenu",
"notesTitle": "📝 Notities", "notesTitle": "📝 Notities",
"notesSaved": "Notities opgeslagen", "notesSaved": "Notities opgeslagen",
"whoAreYou": "Wie ben je?", "whoAreYou": "Wie ben je?",
@@ -176,14 +187,15 @@
"notesOf": "Notities van {name}", "notesOf": "Notities van {name}",
"@notesOf": { "@notesOf": {
"placeholders": { "placeholders": {
"name": {"type": "String"} "name": {
"type": "String"
}
} }
}, },
"notesAboutPlayers": "Aantekeningen over elke speler", "notesAboutPlayers": "Aantekeningen over elke speler",
"playerNoteHint": "Wat heeft hij gezegd? Verdacht?", "playerNoteHint": "Wat heeft hij gezegd? Verdacht?",
"freeNote": "Vrije notitie", "freeNote": "Vrije notitie",
"freeNoteHint": "Persoonlijke aantekeningen...", "freeNoteHint": "Persoonlijke aantekeningen...",
"rulesTitle": "📖 Hoe te spelen", "rulesTitle": "📖 Hoe te spelen",
"rulesWhatIsTitle": "🎭 Wat is De Bedrieger?", "rulesWhatIsTitle": "🎭 Wat is De Bedrieger?",
"rulesWhatIsBody": "Een sociaal deductiespel voor 3-20 spelers. Iedereen krijgt een geheim woord... behalve de bedrieger! Jouw missie: ontdek wie doet alsof.", "rulesWhatIsBody": "Een sociaal deductiespel voor 3-20 spelers. Iedereen krijgt een geheim woord... behalve de bedrieger! Jouw missie: ontdek wie doet alsof.",
@@ -199,20 +211,17 @@
"rulesModesBody": "• Eén toestel: iedereen deelt hetzelfde apparaat. Elke speler ziet zijn woord door een knop ingedrukt te houden.\n\n• Meerdere toestellen: elke speler gebruikt zijn eigen apparaat. Ze verbinden via Bluetooth/WiFi Direct zonder internet.", "rulesModesBody": "• Eén toestel: iedereen deelt hetzelfde apparaat. Elke speler ziet zijn woord door een knop ingedrukt te houden.\n\n• Meerdere toestellen: elke speler gebruikt zijn eigen apparaat. Ze verbinden via Bluetooth/WiFi Direct zonder internet.",
"rulesExampleTitle": "✏️ Voorbeeldspel", "rulesExampleTitle": "✏️ Voorbeeldspel",
"rulesExampleBody": "Geheim woord: \"Pizza\"\n\n• Jan: \"Je eet het warm\" ✓\n• Sanne: \"Het komt in een doos\" ✓\n• Bram (bedrieger): \"Het is heel populair\" 🤔\n• Lisa: \"Het heeft kaas\" ✓\n\nBram gaf een heel vaag antwoord... Verdacht!", "rulesExampleBody": "Geheim woord: \"Pizza\"\n\n• Jan: \"Je eet het warm\" ✓\n• Sanne: \"Het komt in een doos\" ✓\n• Bram (bedrieger): \"Het is heel populair\" 🤔\n• Lisa: \"Het heeft kaas\" ✓\n\nBram gaf een heel vaag antwoord... Verdacht!",
"joinGameTitle": "Deelnemen aan spel", "joinGameTitle": "Deelnemen aan spel",
"multiDeviceMode": "Modus meerdere toestellen", "multiDeviceMode": "Modus meerdere toestellen",
"scanQrDescription": "Scan de QR-code die de host toont om verbinding te maken met het spel via Bluetooth/WiFi Direct.", "scanQrDescription": "Scan de QR-code die de host toont om verbinding te maken met het spel via Bluetooth/WiFi Direct.",
"comingSoon": "Binnenkort", "comingSoon": "Binnenkort",
"nearbyNotAvailable": "De multitoestelverbinding met Nearby Connections vereist fysieke Android-apparaten.\n\nGebruik voorlopig de modus \"Eén toestel\" om op een gedeeld apparaat te spelen.", "nearbyNotAvailable": "De multitoestelverbinding met Nearby Connections vereist fysieke Android-apparaten.\n\nGebruik voorlopig de modus \"Eén toestel\" om op een gedeeld apparaat te spelen.",
"back": "Terug", "back": "Terug",
"yes": "Ja", "yes": "Ja",
"no": "Nee", "no": "Nee",
"cancel": "Annuleren", "cancel": "Annuleren",
"accept": "Accepteren", "accept": "Accepteren",
"next": "Volgende", "next": "Volgende",
"settingsTitle": "Instellingen", "settingsTitle": "Instellingen",
"language": "Taal", "language": "Taal",
"soundVolume": "Effectvolume", "soundVolume": "Effectvolume",
@@ -257,5 +266,10 @@
"defaultPlayerName": "Speler", "defaultPlayerName": "Speler",
"play": "Spelen", "play": "Spelen",
"history": "Geschiedenis", "history": "Geschiedenis",
"mainTagline": "Vind de bedrieger voordat het te laat is" "mainTagline": "Vind de bedrieger voordat het te laat is",
"deviceProfile": "Apparaatprofiel",
"profileName": "Naam",
"profileNick": "Nickname",
"save": "Opslaan",
"automaticLanguage": "Automatisch"
} }
+48 -34
View File
@@ -1,20 +1,16 @@
{ {
"@@locale": "pl", "@@locale": "pl",
"appTitle": "Oszust", "appTitle": "Oszust",
"subtitle": "Gra dedukcji społecznej", "subtitle": "Gra dedukcji społecznej",
"loadingWords": "Ładowanie słów...", "loadingWords": "Ładowanie słów...",
"playersRange": "3-20 graczy • Bez internetu", "playersRange": "3-20 graczy • Bez internetu",
"createGame": "Utwórz grę", "createGame": "Utwórz grę",
"joinGame": "Dołącz do gry", "joinGame": "Dołącz do gry",
"howToPlay": "Jak grać", "howToPlay": "Jak grać",
"settings": "Ustawienia", "settings": "Ustawienia",
"gameMode": "Tryb gry", "gameMode": "Tryb gry",
"singleDevice": "Jedno urządzenie", "singleDevice": "Jedno urządzenie",
"multiDevice": "Wiele urządzeń", "multiDevice": "Wiele urządzeń",
"category": "Kategoria", "category": "Kategoria",
"categoryAll": "Wszystkie", "categoryAll": "Wszystkie",
"categoryAnimals": "Zwierzęta", "categoryAnimals": "Zwierzęta",
@@ -27,11 +23,12 @@
"categoryMovies": "Filmy", "categoryMovies": "Filmy",
"categoryMusic": "Muzyka", "categoryMusic": "Muzyka",
"categoryTechnology": "Technologia", "categoryTechnology": "Technologia",
"playersCount": "Gracze ({count})", "playersCount": "Gracze ({count})",
"@playersCount": { "@playersCount": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"playersRangeHint": "3-20", "playersRangeHint": "3-20",
@@ -39,7 +36,6 @@
"playerAlreadyExists": "Gracz o takim imieniu już istnieje", "playerAlreadyExists": "Gracz o takim imieniu już istnieje",
"maxPlayersReached": "Maksymalnie 20 graczy", "maxPlayersReached": "Maksymalnie 20 graczy",
"minPlayersRequired": "Potrzeba co najmniej 3 graczy", "minPlayersRequired": "Potrzeba co najmniej 3 graczy",
"configuration": "Konfiguracja", "configuration": "Konfiguracja",
"impostors": "🎭 Oszuści", "impostors": "🎭 Oszuści",
"impostorClue": "🔍 Wskazówka dla oszusta", "impostorClue": "🔍 Wskazówka dla oszusta",
@@ -50,15 +46,15 @@
"twoMin": "2 min", "twoMin": "2 min",
"threeMin": "3 min", "threeMin": "3 min",
"fiveMin": "5 min", "fiveMin": "5 min",
"startGame": "Rozpocznij grę", "startGame": "Rozpocznij grę",
"seeYourWord": "Zobacz swoje słowo", "seeYourWord": "Zobacz swoje słowo",
"eachPlayerMustSee": "Każdy gracz musi zobaczyć swoje słowo w tajemnicy", "eachPlayerMustSee": "Każdy gracz musi zobaczyć swoje słowo w tajemnicy",
"roundNumber": "Runda {round}", "roundNumber": "Runda {round}",
"@roundNumber": { "@roundNumber": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"alreadySeen": "Już widział swoje słowo", "alreadySeen": "Już widział swoje słowo",
@@ -67,16 +63,19 @@
"playersRemaining": "Pozostało {count} graczy", "playersRemaining": "Pozostało {count} graczy",
"@playersRemaining": { "@playersRemaining": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"youAreImpostor": "Jesteś oszustem!", "youAreImpostor": "Jesteś oszustem!",
"yourWordIs": "Twoje słowo to:", "yourWordIs": "Twoje słowo to:",
"clueCategory": "Wskazówka: {category}", "clueCategory": "Wskazówka: {category}",
"@clueCategory": { "@clueCategory": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"holdToSeeWord": "Przytrzymaj, aby zobaczyć swoje słowo", "holdToSeeWord": "Przytrzymaj, aby zobaczyć swoje słowo",
@@ -84,11 +83,12 @@
"showingWord": "👁️ Pokazuję...", "showingWord": "👁️ Pokazuję...",
"holdToSee": "👆 Przytrzymaj, aby zobaczyć", "holdToSee": "👆 Przytrzymaj, aby zobaczyć",
"seenMyWord": "Widziałem swoje słowo", "seenMyWord": "Widziałem swoje słowo",
"debateRound": "Debata - Runda {round}", "debateRound": "Debata - Runda {round}",
"@debateRound": { "@debateRound": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"timeUp": "⏰ Czas minął!", "timeUp": "⏰ Czas minął!",
@@ -97,21 +97,28 @@
"activePlayersInfo": "{active} aktywnych • {impostors} ukrytych oszustów", "activePlayersInfo": "{active} aktywnych • {impostors} ukrytych oszustów",
"@activePlayersInfo": { "@activePlayersInfo": {
"placeholders": { "placeholders": {
"active": {"type": "int"}, "active": {
"impostors": {"type": "int"} "type": "int"
},
"impostors": {
"type": "int"
}
} }
}, },
"eliminated": "Wyeliminowany", "eliminated": "Wyeliminowany",
"notes": "Notatki", "notes": "Notatki",
"goToVoting": "Przejdź do głosowania", "goToVoting": "Przejdź do głosowania",
"voting": "🗳️ Głosowanie", "voting": "🗳️ Głosowanie",
"turnToVote": "Kolej na głosowanie:", "turnToVote": "Kolej na głosowanie:",
"votesProgress": "Głosy: {current}/{total}", "votesProgress": "Głosy: {current}/{total}",
"@votesProgress": { "@votesProgress": {
"placeholders": { "placeholders": {
"current": {"type": "int"}, "current": {
"total": {"type": "int"} "type": "int"
},
"total": {
"type": "int"
}
} }
}, },
"whoIsImpostor": "Kto twoim zdaniem jest oszustem?", "whoIsImpostor": "Kto twoim zdaniem jest oszustem?",
@@ -120,7 +127,6 @@
"allVoted": "Wszyscy zagłosowali!", "allVoted": "Wszyscy zagłosowali!",
"tapToReveal": "Dotknij, aby odkryć wynik", "tapToReveal": "Dotknij, aby odkryć wynik",
"revealResult": "Odkryj wynik", "revealResult": "Odkryj wynik",
"result": "Wynik", "result": "Wynik",
"revealing": "Odkrywam...", "revealing": "Odkrywam...",
"wasImpostor": "To był OSZUST! 🎉", "wasImpostor": "To był OSZUST! 🎉",
@@ -129,7 +135,6 @@
"seeEndResult": "Zobacz wynik końcowy", "seeEndResult": "Zobacz wynik końcowy",
"impostorGuessWord": "Czy oszust odgadnie słowo?", "impostorGuessWord": "Czy oszust odgadnie słowo?",
"nextRound": "Następna runda", "nextRound": "Następna runda",
"impostorGuessTitle": "🎯 Zgadywanie oszusta", "impostorGuessTitle": "🎯 Zgadywanie oszusta",
"impostorCanGuess": "Wyeliminowany oszust może\nspróbować odgadnąć słowo", "impostorCanGuess": "Wyeliminowany oszust może\nspróbować odgadnąć słowo",
"ifCorrectImpostorsWin": "Jeśli trafi, oszuści wygrywają!", "ifCorrectImpostorsWin": "Jeśli trafi, oszuści wygrywają!",
@@ -140,20 +145,23 @@
"theWordWas": "Słowo brzmiało: {word}", "theWordWas": "Słowo brzmiało: {word}",
"@theWordWas": { "@theWordWas": {
"placeholders": { "placeholders": {
"word": {"type": "String"} "word": {
"type": "String"
}
} }
}, },
"impostorsWin": "Oszuści wygrywają!", "impostorsWin": "Oszuści wygrywają!",
"wrongGuess": "Nie trafił!", "wrongGuess": "Nie trafił!",
"gameContinues": "Gra toczy się dalej...", "gameContinues": "Gra toczy się dalej...",
"gameOver": "Koniec gry", "gameOver": "Koniec gry",
"playersWin": "Gracze wygrywają!", "playersWin": "Gracze wygrywają!",
"theSecretWordWas": "🔍 Słowo brzmiało:", "theSecretWordWas": "🔍 Słowo brzmiało:",
"categoryLabel": "Kategoria: {category}", "categoryLabel": "Kategoria: {category}",
"@categoryLabel": { "@categoryLabel": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"theImpostorWas": "🎭 Oszustem był:", "theImpostorWas": "🎭 Oszustem był:",
@@ -162,13 +170,16 @@
"roundElimination": "Runda {round}: {name}", "roundElimination": "Runda {round}: {name}",
"@roundElimination": { "@roundElimination": {
"placeholders": { "placeholders": {
"round": {"type": "int"}, "round": {
"name": {"type": "String"} "type": "int"
},
"name": {
"type": "String"
}
} }
}, },
"rematch": "Rewanż", "rematch": "Rewanż",
"mainMenu": "Menu główne", "mainMenu": "Menu główne",
"notesTitle": "📝 Notatki", "notesTitle": "📝 Notatki",
"notesSaved": "Notatki zapisane", "notesSaved": "Notatki zapisane",
"whoAreYou": "Kim jesteś?", "whoAreYou": "Kim jesteś?",
@@ -176,14 +187,15 @@
"notesOf": "Notatki gracza {name}", "notesOf": "Notatki gracza {name}",
"@notesOf": { "@notesOf": {
"placeholders": { "placeholders": {
"name": {"type": "String"} "name": {
"type": "String"
}
} }
}, },
"notesAboutPlayers": "Zapiski o każdym graczu", "notesAboutPlayers": "Zapiski o każdym graczu",
"playerNoteHint": "Co powiedział? Podejrzany?", "playerNoteHint": "Co powiedział? Podejrzany?",
"freeNote": "Wolna notatka", "freeNote": "Wolna notatka",
"freeNoteHint": "Osobiste zapiski...", "freeNoteHint": "Osobiste zapiski...",
"rulesTitle": "📖 Jak grać", "rulesTitle": "📖 Jak grać",
"rulesWhatIsTitle": "🎭 Czym jest Oszust?", "rulesWhatIsTitle": "🎭 Czym jest Oszust?",
"rulesWhatIsBody": "Gra dedukcji społecznej dla 3-20 graczy. Wszyscy otrzymują tajne słowo... oprócz oszusta! Twoja misja: odkryj, kto udaje.", "rulesWhatIsBody": "Gra dedukcji społecznej dla 3-20 graczy. Wszyscy otrzymują tajne słowo... oprócz oszusta! Twoja misja: odkryj, kto udaje.",
@@ -199,20 +211,17 @@
"rulesModesBody": "• Jedno urządzenie: wszyscy dzielą jedno urządzenie. Każdy gracz widzi swoje słowo, przytrzymując przycisk.\n\n• Wiele urządzeń: każdy gracz używa własnego urządzenia. Łączą się przez Bluetooth/WiFi Direct bez potrzeby internetu.", "rulesModesBody": "• Jedno urządzenie: wszyscy dzielą jedno urządzenie. Każdy gracz widzi swoje słowo, przytrzymując przycisk.\n\n• Wiele urządzeń: każdy gracz używa własnego urządzenia. Łączą się przez Bluetooth/WiFi Direct bez potrzeby internetu.",
"rulesExampleTitle": "✏️ Przykładowa gra", "rulesExampleTitle": "✏️ Przykładowa gra",
"rulesExampleBody": "Tajne słowo: \"Pizza\"\n\n• Kasia: \"Je się na ciepło\" ✓\n• Tomek: \"Przychodzi w pudełku\" ✓\n• Ola (oszust): \"Jest bardzo popularna\" 🤔\n• Marek: \"Ma ser\" ✓\n\nOla dała bardzo ogólnikową odpowiedź... Podejrzana!", "rulesExampleBody": "Tajne słowo: \"Pizza\"\n\n• Kasia: \"Je się na ciepło\" ✓\n• Tomek: \"Przychodzi w pudełku\" ✓\n• Ola (oszust): \"Jest bardzo popularna\" 🤔\n• Marek: \"Ma ser\" ✓\n\nOla dała bardzo ogólnikową odpowiedź... Podejrzana!",
"joinGameTitle": "Dołącz do gry", "joinGameTitle": "Dołącz do gry",
"multiDeviceMode": "Tryb wielu urządzeń", "multiDeviceMode": "Tryb wielu urządzeń",
"scanQrDescription": "Zeskanuj kod QR wyświetlany przez hosta, aby połączyć się z grą przez Bluetooth/WiFi Direct.", "scanQrDescription": "Zeskanuj kod QR wyświetlany przez hosta, aby połączyć się z grą przez Bluetooth/WiFi Direct.",
"comingSoon": "Wkrótce", "comingSoon": "Wkrótce",
"nearbyNotAvailable": "Połączenie wielourządzeniowe z Nearby Connections wymaga fizycznych urządzeń z Androidem.\n\nNa razie użyj trybu \"Jedno urządzenie\", aby grać na wspólnym urządzeniu.", "nearbyNotAvailable": "Połączenie wielourządzeniowe z Nearby Connections wymaga fizycznych urządzeń z Androidem.\n\nNa razie użyj trybu \"Jedno urządzenie\", aby grać na wspólnym urządzeniu.",
"back": "Wstecz", "back": "Wstecz",
"yes": "Tak", "yes": "Tak",
"no": "Nie", "no": "Nie",
"cancel": "Anuluj", "cancel": "Anuluj",
"accept": "Akceptuj", "accept": "Akceptuj",
"next": "Dalej", "next": "Dalej",
"settingsTitle": "Ustawienia", "settingsTitle": "Ustawienia",
"language": "Język", "language": "Język",
"soundVolume": "Głośność efektów", "soundVolume": "Głośność efektów",
@@ -257,5 +266,10 @@
"defaultPlayerName": "Gracz", "defaultPlayerName": "Gracz",
"play": "Graj", "play": "Graj",
"history": "Historia", "history": "Historia",
"mainTagline": "Znajdź oszusta, zanim będzie za późno" "mainTagline": "Znajdź oszusta, zanim będzie za późno",
"deviceProfile": "Profil urządzenia",
"profileName": "Nazwa",
"profileNick": "Nick",
"save": "Zapisz",
"automaticLanguage": "Automatycznie"
} }
+48 -34
View File
@@ -1,20 +1,16 @@
{ {
"@@locale": "pt", "@@locale": "pt",
"appTitle": "O Impostor", "appTitle": "O Impostor",
"subtitle": "Jogo de dedução social", "subtitle": "Jogo de dedução social",
"loadingWords": "Carregando palavras...", "loadingWords": "Carregando palavras...",
"playersRange": "3-20 jogadores • Sem internet", "playersRange": "3-20 jogadores • Sem internet",
"createGame": "Criar partida", "createGame": "Criar partida",
"joinGame": "Entrar na partida", "joinGame": "Entrar na partida",
"howToPlay": "Como jogar", "howToPlay": "Como jogar",
"settings": "Configurações", "settings": "Configurações",
"gameMode": "Modo de jogo", "gameMode": "Modo de jogo",
"singleDevice": "Um só celular", "singleDevice": "Um só celular",
"multiDevice": "Multicelular", "multiDevice": "Multicelular",
"category": "Categoria", "category": "Categoria",
"categoryAll": "Todas", "categoryAll": "Todas",
"categoryAnimals": "Animais", "categoryAnimals": "Animais",
@@ -27,11 +23,12 @@
"categoryMovies": "Filmes", "categoryMovies": "Filmes",
"categoryMusic": "Música", "categoryMusic": "Música",
"categoryTechnology": "Tecnologia", "categoryTechnology": "Tecnologia",
"playersCount": "Jogadores ({count})", "playersCount": "Jogadores ({count})",
"@playersCount": { "@playersCount": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"playersRangeHint": "3-20", "playersRangeHint": "3-20",
@@ -39,7 +36,6 @@
"playerAlreadyExists": "Já existe um jogador com esse nome", "playerAlreadyExists": "Já existe um jogador com esse nome",
"maxPlayersReached": "Máximo de 20 jogadores", "maxPlayersReached": "Máximo de 20 jogadores",
"minPlayersRequired": "São necessários pelo menos 3 jogadores", "minPlayersRequired": "São necessários pelo menos 3 jogadores",
"configuration": "Configuração", "configuration": "Configuração",
"impostors": "🎭 Impostores", "impostors": "🎭 Impostores",
"impostorClue": "🔍 Dica para o impostor", "impostorClue": "🔍 Dica para o impostor",
@@ -50,15 +46,15 @@
"twoMin": "2 min", "twoMin": "2 min",
"threeMin": "3 min", "threeMin": "3 min",
"fiveMin": "5 min", "fiveMin": "5 min",
"startGame": "Iniciar partida", "startGame": "Iniciar partida",
"seeYourWord": "Ver sua palavra", "seeYourWord": "Ver sua palavra",
"eachPlayerMustSee": "Cada jogador deve ver sua palavra em segredo", "eachPlayerMustSee": "Cada jogador deve ver sua palavra em segredo",
"roundNumber": "Rodada {round}", "roundNumber": "Rodada {round}",
"@roundNumber": { "@roundNumber": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"alreadySeen": "Já viu sua palavra", "alreadySeen": "Já viu sua palavra",
@@ -67,16 +63,19 @@
"playersRemaining": "Faltam {count} jogadores", "playersRemaining": "Faltam {count} jogadores",
"@playersRemaining": { "@playersRemaining": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"youAreImpostor": "Você é o impostor!", "youAreImpostor": "Você é o impostor!",
"yourWordIs": "Sua palavra é:", "yourWordIs": "Sua palavra é:",
"clueCategory": "Dica: {category}", "clueCategory": "Dica: {category}",
"@clueCategory": { "@clueCategory": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"holdToSeeWord": "Mantenha pressionado para ver sua palavra", "holdToSeeWord": "Mantenha pressionado para ver sua palavra",
@@ -84,11 +83,12 @@
"showingWord": "👁️ Mostrando...", "showingWord": "👁️ Mostrando...",
"holdToSee": "👆 Mantenha pressionado para ver", "holdToSee": "👆 Mantenha pressionado para ver",
"seenMyWord": "Já vi minha palavra", "seenMyWord": "Já vi minha palavra",
"debateRound": "Debate - Rodada {round}", "debateRound": "Debate - Rodada {round}",
"@debateRound": { "@debateRound": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"timeUp": "⏰ Tempo esgotado!", "timeUp": "⏰ Tempo esgotado!",
@@ -97,21 +97,28 @@
"activePlayersInfo": "{active} ativos • {impostors} impostor(es) ocultos", "activePlayersInfo": "{active} ativos • {impostors} impostor(es) ocultos",
"@activePlayersInfo": { "@activePlayersInfo": {
"placeholders": { "placeholders": {
"active": {"type": "int"}, "active": {
"impostors": {"type": "int"} "type": "int"
},
"impostors": {
"type": "int"
}
} }
}, },
"eliminated": "Eliminado", "eliminated": "Eliminado",
"notes": "Notas", "notes": "Notas",
"goToVoting": "Ir para votação", "goToVoting": "Ir para votação",
"voting": "🗳️ Votação", "voting": "🗳️ Votação",
"turnToVote": "Vez de votar:", "turnToVote": "Vez de votar:",
"votesProgress": "Votos: {current}/{total}", "votesProgress": "Votos: {current}/{total}",
"@votesProgress": { "@votesProgress": {
"placeholders": { "placeholders": {
"current": {"type": "int"}, "current": {
"total": {"type": "int"} "type": "int"
},
"total": {
"type": "int"
}
} }
}, },
"whoIsImpostor": "Quem você acha que é o impostor?", "whoIsImpostor": "Quem você acha que é o impostor?",
@@ -120,7 +127,6 @@
"allVoted": "Todos votaram!", "allVoted": "Todos votaram!",
"tapToReveal": "Toque para revelar o resultado", "tapToReveal": "Toque para revelar o resultado",
"revealResult": "Revelar resultado", "revealResult": "Revelar resultado",
"result": "Resultado", "result": "Resultado",
"revealing": "Revelando...", "revealing": "Revelando...",
"wasImpostor": "Era IMPOSTOR! 🎉", "wasImpostor": "Era IMPOSTOR! 🎉",
@@ -129,7 +135,6 @@
"seeEndResult": "Ver resultado final", "seeEndResult": "Ver resultado final",
"impostorGuessWord": "O impostor adivinha a palavra?", "impostorGuessWord": "O impostor adivinha a palavra?",
"nextRound": "Próxima rodada", "nextRound": "Próxima rodada",
"impostorGuessTitle": "🎯 Palpite do impostor", "impostorGuessTitle": "🎯 Palpite do impostor",
"impostorCanGuess": "O impostor eliminado pode\ntentar adivinhar a palavra", "impostorCanGuess": "O impostor eliminado pode\ntentar adivinhar a palavra",
"ifCorrectImpostorsWin": "Se acertar, os impostores vencem!", "ifCorrectImpostorsWin": "Se acertar, os impostores vencem!",
@@ -140,20 +145,23 @@
"theWordWas": "A palavra era: {word}", "theWordWas": "A palavra era: {word}",
"@theWordWas": { "@theWordWas": {
"placeholders": { "placeholders": {
"word": {"type": "String"} "word": {
"type": "String"
}
} }
}, },
"impostorsWin": "Os impostores vencem!", "impostorsWin": "Os impostores vencem!",
"wrongGuess": "Não acertou!", "wrongGuess": "Não acertou!",
"gameContinues": "A partida continua...", "gameContinues": "A partida continua...",
"gameOver": "Fim de partida", "gameOver": "Fim de partida",
"playersWin": "Os jogadores vencem!", "playersWin": "Os jogadores vencem!",
"theSecretWordWas": "🔍 A palavra era:", "theSecretWordWas": "🔍 A palavra era:",
"categoryLabel": "Categoria: {category}", "categoryLabel": "Categoria: {category}",
"@categoryLabel": { "@categoryLabel": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"theImpostorWas": "🎭 O impostor era:", "theImpostorWas": "🎭 O impostor era:",
@@ -162,13 +170,16 @@
"roundElimination": "Rodada {round}: {name}", "roundElimination": "Rodada {round}: {name}",
"@roundElimination": { "@roundElimination": {
"placeholders": { "placeholders": {
"round": {"type": "int"}, "round": {
"name": {"type": "String"} "type": "int"
},
"name": {
"type": "String"
}
} }
}, },
"rematch": "Revanche", "rematch": "Revanche",
"mainMenu": "Menu principal", "mainMenu": "Menu principal",
"notesTitle": "📝 Notas", "notesTitle": "📝 Notas",
"notesSaved": "Notas salvas", "notesSaved": "Notas salvas",
"whoAreYou": "Quem é você?", "whoAreYou": "Quem é você?",
@@ -176,14 +187,15 @@
"notesOf": "Notas de {name}", "notesOf": "Notas de {name}",
"@notesOf": { "@notesOf": {
"placeholders": { "placeholders": {
"name": {"type": "String"} "name": {
"type": "String"
}
} }
}, },
"notesAboutPlayers": "Anotações sobre cada jogador", "notesAboutPlayers": "Anotações sobre cada jogador",
"playerNoteHint": "O que disse? Suspeito?", "playerNoteHint": "O que disse? Suspeito?",
"freeNote": "Nota livre", "freeNote": "Nota livre",
"freeNoteHint": "Anotações pessoais...", "freeNoteHint": "Anotações pessoais...",
"rulesTitle": "📖 Como jogar", "rulesTitle": "📖 Como jogar",
"rulesWhatIsTitle": "🎭 O que é O Impostor?", "rulesWhatIsTitle": "🎭 O que é O Impostor?",
"rulesWhatIsBody": "Um jogo de dedução social para 3-20 jogadores. Todos recebem uma palavra secreta... exceto o impostor! Sua missão: descobrir quem está fingindo.", "rulesWhatIsBody": "Um jogo de dedução social para 3-20 jogadores. Todos recebem uma palavra secreta... exceto o impostor! Sua missão: descobrir quem está fingindo.",
@@ -199,20 +211,17 @@
"rulesModesBody": "• Um só celular: todos compartilham o dispositivo. Cada jogador vê sua palavra pressionando e segurando um botão.\n\n• Multicelular: cada jogador usa seu próprio dispositivo. Conectam-se por Bluetooth/WiFi Direct sem necessidade de internet.", "rulesModesBody": "• Um só celular: todos compartilham o dispositivo. Cada jogador vê sua palavra pressionando e segurando um botão.\n\n• Multicelular: cada jogador usa seu próprio dispositivo. Conectam-se por Bluetooth/WiFi Direct sem necessidade de internet.",
"rulesExampleTitle": "✏️ Exemplo de partida", "rulesExampleTitle": "✏️ Exemplo de partida",
"rulesExampleBody": "Palavra secreta: \"Pizza\"\n\n• João: \"Se come quente\" ✓\n• Maria: \"Vem numa caixa\" ✓\n• Pedro (impostor): \"É muito popular\" 🤔\n• Ana: \"Tem queijo\" ✓\n\nPedro deu uma resposta muito genérica... Suspeito!", "rulesExampleBody": "Palavra secreta: \"Pizza\"\n\n• João: \"Se come quente\" ✓\n• Maria: \"Vem numa caixa\" ✓\n• Pedro (impostor): \"É muito popular\" 🤔\n• Ana: \"Tem queijo\" ✓\n\nPedro deu uma resposta muito genérica... Suspeito!",
"joinGameTitle": "Entrar na partida", "joinGameTitle": "Entrar na partida",
"multiDeviceMode": "Modo multicelular", "multiDeviceMode": "Modo multicelular",
"scanQrDescription": "Escaneie o código QR exibido pelo anfitrião para se conectar à partida via Bluetooth/WiFi Direct.", "scanQrDescription": "Escaneie o código QR exibido pelo anfitrião para se conectar à partida via Bluetooth/WiFi Direct.",
"comingSoon": "Em breve", "comingSoon": "Em breve",
"nearbyNotAvailable": "A conexão multicelular com Nearby Connections requer dispositivos Android físicos.\n\nPor enquanto, use o modo \"Um só celular\" para jogar em um dispositivo compartilhado.", "nearbyNotAvailable": "A conexão multicelular com Nearby Connections requer dispositivos Android físicos.\n\nPor enquanto, use o modo \"Um só celular\" para jogar em um dispositivo compartilhado.",
"back": "Voltar", "back": "Voltar",
"yes": "Sim", "yes": "Sim",
"no": "Não", "no": "Não",
"cancel": "Cancelar", "cancel": "Cancelar",
"accept": "Aceitar", "accept": "Aceitar",
"next": "Próximo", "next": "Próximo",
"settingsTitle": "Configurações", "settingsTitle": "Configurações",
"language": "Idioma", "language": "Idioma",
"soundVolume": "Volume dos efeitos", "soundVolume": "Volume dos efeitos",
@@ -257,5 +266,10 @@
"defaultPlayerName": "Jogador", "defaultPlayerName": "Jogador",
"play": "Jogar", "play": "Jogar",
"history": "Histórico", "history": "Histórico",
"mainTagline": "Descobre o impostor antes que seja tarde" "mainTagline": "Descobre o impostor antes que seja tarde",
"deviceProfile": "Perfil do dispositivo",
"profileName": "Nome",
"profileNick": "Nick",
"save": "Guardar",
"automaticLanguage": "Automático"
} }
+48 -34
View File
@@ -1,20 +1,16 @@
{ {
"@@locale": "ru", "@@locale": "ru",
"appTitle": "Самозванец", "appTitle": "Самозванец",
"subtitle": "Социальная игра на дедукцию", "subtitle": "Социальная игра на дедукцию",
"loadingWords": "Загрузка слов...", "loadingWords": "Загрузка слов...",
"playersRange": "3-20 игроков • Без интернета", "playersRange": "3-20 игроков • Без интернета",
"createGame": "Создать игру", "createGame": "Создать игру",
"joinGame": "Присоединиться к игре", "joinGame": "Присоединиться к игре",
"howToPlay": "Как играть", "howToPlay": "Как играть",
"settings": "Настройки", "settings": "Настройки",
"gameMode": "Режим игры", "gameMode": "Режим игры",
"singleDevice": "Одно устройство", "singleDevice": "Одно устройство",
"multiDevice": "Несколько устройств", "multiDevice": "Несколько устройств",
"category": "Категория", "category": "Категория",
"categoryAll": "Все", "categoryAll": "Все",
"categoryAnimals": "Животные", "categoryAnimals": "Животные",
@@ -27,11 +23,12 @@
"categoryMovies": "Фильмы", "categoryMovies": "Фильмы",
"categoryMusic": "Музыка", "categoryMusic": "Музыка",
"categoryTechnology": "Технологии", "categoryTechnology": "Технологии",
"playersCount": "Игроки ({count})", "playersCount": "Игроки ({count})",
"@playersCount": { "@playersCount": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"playersRangeHint": "3-20", "playersRangeHint": "3-20",
@@ -39,7 +36,6 @@
"playerAlreadyExists": "Игрок с таким именем уже существует", "playerAlreadyExists": "Игрок с таким именем уже существует",
"maxPlayersReached": "Максимум 20 игроков", "maxPlayersReached": "Максимум 20 игроков",
"minPlayersRequired": "Нужно минимум 3 игрока", "minPlayersRequired": "Нужно минимум 3 игрока",
"configuration": "Конфигурация", "configuration": "Конфигурация",
"impostors": "🎭 Самозванцы", "impostors": "🎭 Самозванцы",
"impostorClue": "🔍 Подсказка для самозванца", "impostorClue": "🔍 Подсказка для самозванца",
@@ -50,15 +46,15 @@
"twoMin": "2 мин", "twoMin": "2 мин",
"threeMin": "3 мин", "threeMin": "3 мин",
"fiveMin": "5 мин", "fiveMin": "5 мин",
"startGame": "Начать игру", "startGame": "Начать игру",
"seeYourWord": "Посмотри своё слово", "seeYourWord": "Посмотри своё слово",
"eachPlayerMustSee": "Каждый игрок должен тайно посмотреть своё слово", "eachPlayerMustSee": "Каждый игрок должен тайно посмотреть своё слово",
"roundNumber": "Раунд {round}", "roundNumber": "Раунд {round}",
"@roundNumber": { "@roundNumber": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"alreadySeen": "Уже видел своё слово", "alreadySeen": "Уже видел своё слово",
@@ -67,16 +63,19 @@
"playersRemaining": "Осталось {count} игроков", "playersRemaining": "Осталось {count} игроков",
"@playersRemaining": { "@playersRemaining": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"youAreImpostor": "Ты самозванец!", "youAreImpostor": "Ты самозванец!",
"yourWordIs": "Твоё слово:", "yourWordIs": "Твоё слово:",
"clueCategory": "Подсказка: {category}", "clueCategory": "Подсказка: {category}",
"@clueCategory": { "@clueCategory": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"holdToSeeWord": "Удерживай, чтобы увидеть своё слово", "holdToSeeWord": "Удерживай, чтобы увидеть своё слово",
@@ -84,11 +83,12 @@
"showingWord": "👁️ Показываю...", "showingWord": "👁️ Показываю...",
"holdToSee": "👆 Удерживай, чтобы увидеть", "holdToSee": "👆 Удерживай, чтобы увидеть",
"seenMyWord": "Я увидел своё слово", "seenMyWord": "Я увидел своё слово",
"debateRound": "Обсуждение - Раунд {round}", "debateRound": "Обсуждение - Раунд {round}",
"@debateRound": { "@debateRound": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"timeUp": "⏰ Время вышло!", "timeUp": "⏰ Время вышло!",
@@ -97,21 +97,28 @@
"activePlayersInfo": "{active} активных • {impostors} скрытый(-х) самозванец(-ев)", "activePlayersInfo": "{active} активных • {impostors} скрытый(-х) самозванец(-ев)",
"@activePlayersInfo": { "@activePlayersInfo": {
"placeholders": { "placeholders": {
"active": {"type": "int"}, "active": {
"impostors": {"type": "int"} "type": "int"
},
"impostors": {
"type": "int"
}
} }
}, },
"eliminated": "Выбыл", "eliminated": "Выбыл",
"notes": "Заметки", "notes": "Заметки",
"goToVoting": "Перейти к голосованию", "goToVoting": "Перейти к голосованию",
"voting": "🗳️ Голосование", "voting": "🗳️ Голосование",
"turnToVote": "Твоя очередь голосовать:", "turnToVote": "Твоя очередь голосовать:",
"votesProgress": "Голоса: {current}/{total}", "votesProgress": "Голоса: {current}/{total}",
"@votesProgress": { "@votesProgress": {
"placeholders": { "placeholders": {
"current": {"type": "int"}, "current": {
"total": {"type": "int"} "type": "int"
},
"total": {
"type": "int"
}
} }
}, },
"whoIsImpostor": "Кто, по-твоему, самозванец?", "whoIsImpostor": "Кто, по-твоему, самозванец?",
@@ -120,7 +127,6 @@
"allVoted": "Все проголосовали!", "allVoted": "Все проголосовали!",
"tapToReveal": "Нажми, чтобы узнать результат", "tapToReveal": "Нажми, чтобы узнать результат",
"revealResult": "Показать результат", "revealResult": "Показать результат",
"result": "Результат", "result": "Результат",
"revealing": "Раскрываем...", "revealing": "Раскрываем...",
"wasImpostor": "Был САМОЗВАНЦЕМ! 🎉", "wasImpostor": "Был САМОЗВАНЦЕМ! 🎉",
@@ -129,7 +135,6 @@
"seeEndResult": "Увидеть итоговый результат", "seeEndResult": "Увидеть итоговый результат",
"impostorGuessWord": "Самозванец угадает слово?", "impostorGuessWord": "Самозванец угадает слово?",
"nextRound": "Следующий раунд", "nextRound": "Следующий раунд",
"impostorGuessTitle": "🎯 Догадка самозванца", "impostorGuessTitle": "🎯 Догадка самозванца",
"impostorCanGuess": "Выбывший самозванец может\nпопытаться угадать слово", "impostorCanGuess": "Выбывший самозванец может\nпопытаться угадать слово",
"ifCorrectImpostorsWin": "Если угадает — самозванцы побеждают!", "ifCorrectImpostorsWin": "Если угадает — самозванцы побеждают!",
@@ -140,20 +145,23 @@
"theWordWas": "Слово было: {word}", "theWordWas": "Слово было: {word}",
"@theWordWas": { "@theWordWas": {
"placeholders": { "placeholders": {
"word": {"type": "String"} "word": {
"type": "String"
}
} }
}, },
"impostorsWin": "Самозванцы побеждают!", "impostorsWin": "Самозванцы побеждают!",
"wrongGuess": "Не угадал!", "wrongGuess": "Не угадал!",
"gameContinues": "Игра продолжается...", "gameContinues": "Игра продолжается...",
"gameOver": "Конец игры", "gameOver": "Конец игры",
"playersWin": "Игроки побеждают!", "playersWin": "Игроки побеждают!",
"theSecretWordWas": "🔍 Загаданное слово:", "theSecretWordWas": "🔍 Загаданное слово:",
"categoryLabel": "Категория: {category}", "categoryLabel": "Категория: {category}",
"@categoryLabel": { "@categoryLabel": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"theImpostorWas": "🎭 Самозванцем был:", "theImpostorWas": "🎭 Самозванцем был:",
@@ -162,13 +170,16 @@
"roundElimination": "Раунд {round}: {name}", "roundElimination": "Раунд {round}: {name}",
"@roundElimination": { "@roundElimination": {
"placeholders": { "placeholders": {
"round": {"type": "int"}, "round": {
"name": {"type": "String"} "type": "int"
},
"name": {
"type": "String"
}
} }
}, },
"rematch": "Реванш", "rematch": "Реванш",
"mainMenu": "Главное меню", "mainMenu": "Главное меню",
"notesTitle": "📝 Заметки", "notesTitle": "📝 Заметки",
"notesSaved": "Заметки сохранены", "notesSaved": "Заметки сохранены",
"whoAreYou": "Кто ты?", "whoAreYou": "Кто ты?",
@@ -176,14 +187,15 @@
"notesOf": "Заметки {name}", "notesOf": "Заметки {name}",
"@notesOf": { "@notesOf": {
"placeholders": { "placeholders": {
"name": {"type": "String"} "name": {
"type": "String"
}
} }
}, },
"notesAboutPlayers": "Записи о каждом игроке", "notesAboutPlayers": "Записи о каждом игроке",
"playerNoteHint": "Что он сказал? Подозрительно?", "playerNoteHint": "Что он сказал? Подозрительно?",
"freeNote": "Свободная заметка", "freeNote": "Свободная заметка",
"freeNoteHint": "Личные записи...", "freeNoteHint": "Личные записи...",
"rulesTitle": "📖 Как играть", "rulesTitle": "📖 Как играть",
"rulesWhatIsTitle": "🎭 Что такое «Самозванец»?", "rulesWhatIsTitle": "🎭 Что такое «Самозванец»?",
"rulesWhatIsBody": "Социальная игра на дедукцию для 3-20 игроков. Все получают секретное слово... кроме самозванца! Твоя задача: вычислить, кто притворяется.", "rulesWhatIsBody": "Социальная игра на дедукцию для 3-20 игроков. Все получают секретное слово... кроме самозванца! Твоя задача: вычислить, кто притворяется.",
@@ -199,20 +211,17 @@
"rulesModesBody": "• Одно устройство: все передают телефон по кругу. Каждый игрок видит своё слово, нажав и удерживая кнопку.\n\n• Несколько устройств: каждый игрок использует собственное устройство. Подключение через Bluetooth/WiFi Direct без интернета.", "rulesModesBody": "• Одно устройство: все передают телефон по кругу. Каждый игрок видит своё слово, нажав и удерживая кнопку.\n\n• Несколько устройств: каждый игрок использует собственное устройство. Подключение через Bluetooth/WiFi Direct без интернета.",
"rulesExampleTitle": "✏️ Пример раунда", "rulesExampleTitle": "✏️ Пример раунда",
"rulesExampleBody": "Секретное слово: «Пицца»\n\n• Аня: «Её едят горячей» ✓\n• Кирилл: «Приходит в коробке» ✓\n• Лена (самозванец): «Очень популярная» 🤔\n• Дима: «С сыром» ✓\n\nЛена дала слишком общий ответ... Подозрительно!", "rulesExampleBody": "Секретное слово: «Пицца»\n\n• Аня: «Её едят горячей» ✓\n• Кирилл: «Приходит в коробке» ✓\n• Лена (самозванец): «Очень популярная» 🤔\n• Дима: «С сыром» ✓\n\nЛена дала слишком общий ответ... Подозрительно!",
"joinGameTitle": "Присоединиться к игре", "joinGameTitle": "Присоединиться к игре",
"multiDeviceMode": "Режим нескольких устройств", "multiDeviceMode": "Режим нескольких устройств",
"scanQrDescription": "Отсканируй QR-код, который показывает хост, чтобы подключиться к игре через Bluetooth/WiFi Direct.", "scanQrDescription": "Отсканируй QR-код, который показывает хост, чтобы подключиться к игре через Bluetooth/WiFi Direct.",
"comingSoon": "Скоро", "comingSoon": "Скоро",
"nearbyNotAvailable": "Подключение нескольких устройств через Nearby Connections требует физических Android-устройств.\n\nПока что используй режим «Одно устройство» для игры на общем телефоне.", "nearbyNotAvailable": "Подключение нескольких устройств через Nearby Connections требует физических Android-устройств.\n\nПока что используй режим «Одно устройство» для игры на общем телефоне.",
"back": "Назад", "back": "Назад",
"yes": "Да", "yes": "Да",
"no": "Нет", "no": "Нет",
"cancel": "Отмена", "cancel": "Отмена",
"accept": "Принять", "accept": "Принять",
"next": "Далее", "next": "Далее",
"settingsTitle": "Настройки", "settingsTitle": "Настройки",
"language": "Язык", "language": "Язык",
"soundVolume": "Громкость эффектов", "soundVolume": "Громкость эффектов",
@@ -257,5 +266,10 @@
"defaultPlayerName": "Игрок", "defaultPlayerName": "Игрок",
"play": "Играть", "play": "Играть",
"history": "История", "history": "История",
"mainTagline": "Найди самозванца, пока не стало слишком поздно" "mainTagline": "Найди самозванца, пока не стало слишком поздно",
"deviceProfile": "Профиль устройства",
"profileName": "Имя",
"profileNick": "Ник",
"save": "Сохранить",
"automaticLanguage": "Автоматически"
} }
+48 -34
View File
@@ -1,20 +1,16 @@
{ {
"@@locale": "tr", "@@locale": "tr",
"appTitle": "Sahtekar", "appTitle": "Sahtekar",
"subtitle": "Sosyal çıkarım oyunu", "subtitle": "Sosyal çıkarım oyunu",
"loadingWords": "Kelimeler yükleniyor...", "loadingWords": "Kelimeler yükleniyor...",
"playersRange": "3-20 oyuncu • İnternet gerektirmez", "playersRange": "3-20 oyuncu • İnternet gerektirmez",
"createGame": "Oyun oluştur", "createGame": "Oyun oluştur",
"joinGame": "Oyuna katıl", "joinGame": "Oyuna katıl",
"howToPlay": "Nasıl oynanır", "howToPlay": "Nasıl oynanır",
"settings": "Ayarlar", "settings": "Ayarlar",
"gameMode": "Oyun modu", "gameMode": "Oyun modu",
"singleDevice": "Tek cihaz", "singleDevice": "Tek cihaz",
"multiDevice": "Çoklu cihaz", "multiDevice": "Çoklu cihaz",
"category": "Kategori", "category": "Kategori",
"categoryAll": "Tümü", "categoryAll": "Tümü",
"categoryAnimals": "Hayvanlar", "categoryAnimals": "Hayvanlar",
@@ -27,11 +23,12 @@
"categoryMovies": "Filmler", "categoryMovies": "Filmler",
"categoryMusic": "Müzik", "categoryMusic": "Müzik",
"categoryTechnology": "Teknoloji", "categoryTechnology": "Teknoloji",
"playersCount": "Oyuncular ({count})", "playersCount": "Oyuncular ({count})",
"@playersCount": { "@playersCount": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"playersRangeHint": "3-20", "playersRangeHint": "3-20",
@@ -39,7 +36,6 @@
"playerAlreadyExists": "Bu isimde bir oyuncu zaten var", "playerAlreadyExists": "Bu isimde bir oyuncu zaten var",
"maxPlayersReached": "En fazla 20 oyuncu", "maxPlayersReached": "En fazla 20 oyuncu",
"minPlayersRequired": "En az 3 oyuncu gerekli", "minPlayersRequired": "En az 3 oyuncu gerekli",
"configuration": "Yapılandırma", "configuration": "Yapılandırma",
"impostors": "🎭 Sahtekarlar", "impostors": "🎭 Sahtekarlar",
"impostorClue": "🔍 Sahtekar için ipucu", "impostorClue": "🔍 Sahtekar için ipucu",
@@ -50,15 +46,15 @@
"twoMin": "2 dk", "twoMin": "2 dk",
"threeMin": "3 dk", "threeMin": "3 dk",
"fiveMin": "5 dk", "fiveMin": "5 dk",
"startGame": "Oyunu başlat", "startGame": "Oyunu başlat",
"seeYourWord": "Kelimeni gör", "seeYourWord": "Kelimeni gör",
"eachPlayerMustSee": "Her oyuncu kelimesini gizlice görmelidir", "eachPlayerMustSee": "Her oyuncu kelimesini gizlice görmelidir",
"roundNumber": "Tur {round}", "roundNumber": "Tur {round}",
"@roundNumber": { "@roundNumber": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"alreadySeen": "Kelimesini zaten gördü", "alreadySeen": "Kelimesini zaten gördü",
@@ -67,16 +63,19 @@
"playersRemaining": "{count} oyuncu kaldı", "playersRemaining": "{count} oyuncu kaldı",
"@playersRemaining": { "@playersRemaining": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"youAreImpostor": "Sen sahtekarsın!", "youAreImpostor": "Sen sahtekarsın!",
"yourWordIs": "Kelimen:", "yourWordIs": "Kelimen:",
"clueCategory": "İpucu: {category}", "clueCategory": "İpucu: {category}",
"@clueCategory": { "@clueCategory": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"holdToSeeWord": "Kelimeni görmek için basılı tut", "holdToSeeWord": "Kelimeni görmek için basılı tut",
@@ -84,11 +83,12 @@
"showingWord": "👁️ Gösteriliyor...", "showingWord": "👁️ Gösteriliyor...",
"holdToSee": "👆 Görmek için basılı tut", "holdToSee": "👆 Görmek için basılı tut",
"seenMyWord": "Kelimemi gördüm", "seenMyWord": "Kelimemi gördüm",
"debateRound": "Tartışma - Tur {round}", "debateRound": "Tartışma - Tur {round}",
"@debateRound": { "@debateRound": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"timeUp": "⏰ Süre doldu!", "timeUp": "⏰ Süre doldu!",
@@ -97,21 +97,28 @@
"activePlayersInfo": "{active} aktif • {impostors} gizli sahtekar", "activePlayersInfo": "{active} aktif • {impostors} gizli sahtekar",
"@activePlayersInfo": { "@activePlayersInfo": {
"placeholders": { "placeholders": {
"active": {"type": "int"}, "active": {
"impostors": {"type": "int"} "type": "int"
},
"impostors": {
"type": "int"
}
} }
}, },
"eliminated": "Elendi", "eliminated": "Elendi",
"notes": "Notlar", "notes": "Notlar",
"goToVoting": "Oylamaya geç", "goToVoting": "Oylamaya geç",
"voting": "🗳️ Oylama", "voting": "🗳️ Oylama",
"turnToVote": "Oy verme sırası:", "turnToVote": "Oy verme sırası:",
"votesProgress": "Oylar: {current}/{total}", "votesProgress": "Oylar: {current}/{total}",
"@votesProgress": { "@votesProgress": {
"placeholders": { "placeholders": {
"current": {"type": "int"}, "current": {
"total": {"type": "int"} "type": "int"
},
"total": {
"type": "int"
}
} }
}, },
"whoIsImpostor": "Sahtekarın kim olduğunu düşünüyorsun?", "whoIsImpostor": "Sahtekarın kim olduğunu düşünüyorsun?",
@@ -120,7 +127,6 @@
"allVoted": "Herkes oy verdi!", "allVoted": "Herkes oy verdi!",
"tapToReveal": "Sonucu görmek için dokun", "tapToReveal": "Sonucu görmek için dokun",
"revealResult": "Sonucu göster", "revealResult": "Sonucu göster",
"result": "Sonuç", "result": "Sonuç",
"revealing": "Gösteriliyor...", "revealing": "Gösteriliyor...",
"wasImpostor": "SAHTEKAR'dı! 🎉", "wasImpostor": "SAHTEKAR'dı! 🎉",
@@ -129,7 +135,6 @@
"seeEndResult": "Nihai sonucu gör", "seeEndResult": "Nihai sonucu gör",
"impostorGuessWord": "Sahtekar kelimeyi tahmin edecek mi?", "impostorGuessWord": "Sahtekar kelimeyi tahmin edecek mi?",
"nextRound": "Sonraki tur", "nextRound": "Sonraki tur",
"impostorGuessTitle": "🎯 Sahtekarın tahmini", "impostorGuessTitle": "🎯 Sahtekarın tahmini",
"impostorCanGuess": "Elenen sahtekar\nkelimeyi tahmin etmeyi deneyebilir", "impostorCanGuess": "Elenen sahtekar\nkelimeyi tahmin etmeyi deneyebilir",
"ifCorrectImpostorsWin": "Doğru tahmin ederse sahtekarlar kazanır!", "ifCorrectImpostorsWin": "Doğru tahmin ederse sahtekarlar kazanır!",
@@ -140,20 +145,23 @@
"theWordWas": "Kelime şuydu: {word}", "theWordWas": "Kelime şuydu: {word}",
"@theWordWas": { "@theWordWas": {
"placeholders": { "placeholders": {
"word": {"type": "String"} "word": {
"type": "String"
}
} }
}, },
"impostorsWin": "Sahtekarlar kazandı!", "impostorsWin": "Sahtekarlar kazandı!",
"wrongGuess": "Yanlış tahmin!", "wrongGuess": "Yanlış tahmin!",
"gameContinues": "Oyun devam ediyor...", "gameContinues": "Oyun devam ediyor...",
"gameOver": "Oyun bitti", "gameOver": "Oyun bitti",
"playersWin": "Oyuncular kazandı!", "playersWin": "Oyuncular kazandı!",
"theSecretWordWas": "🔍 Kelime şuydu:", "theSecretWordWas": "🔍 Kelime şuydu:",
"categoryLabel": "Kategori: {category}", "categoryLabel": "Kategori: {category}",
"@categoryLabel": { "@categoryLabel": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"theImpostorWas": "🎭 Sahtekar şuydu:", "theImpostorWas": "🎭 Sahtekar şuydu:",
@@ -162,13 +170,16 @@
"roundElimination": "Tur {round}: {name}", "roundElimination": "Tur {round}: {name}",
"@roundElimination": { "@roundElimination": {
"placeholders": { "placeholders": {
"round": {"type": "int"}, "round": {
"name": {"type": "String"} "type": "int"
},
"name": {
"type": "String"
}
} }
}, },
"rematch": "Rövanş", "rematch": "Rövanş",
"mainMenu": "Ana menü", "mainMenu": "Ana menü",
"notesTitle": "📝 Notlar", "notesTitle": "📝 Notlar",
"notesSaved": "Notlar kaydedildi", "notesSaved": "Notlar kaydedildi",
"whoAreYou": "Sen kimsin?", "whoAreYou": "Sen kimsin?",
@@ -176,14 +187,15 @@
"notesOf": "{name} adlı oyuncunun notları", "notesOf": "{name} adlı oyuncunun notları",
"@notesOf": { "@notesOf": {
"placeholders": { "placeholders": {
"name": {"type": "String"} "name": {
"type": "String"
}
} }
}, },
"notesAboutPlayers": "Her oyuncu hakkında notlar", "notesAboutPlayers": "Her oyuncu hakkında notlar",
"playerNoteHint": "Ne dedi? Şüpheli mi?", "playerNoteHint": "Ne dedi? Şüpheli mi?",
"freeNote": "Serbest not", "freeNote": "Serbest not",
"freeNoteHint": "Kişisel notlar...", "freeNoteHint": "Kişisel notlar...",
"rulesTitle": "📖 Nasıl oynanır", "rulesTitle": "📖 Nasıl oynanır",
"rulesWhatIsTitle": "🎭 Sahtekar nedir?", "rulesWhatIsTitle": "🎭 Sahtekar nedir?",
"rulesWhatIsBody": "3-20 oyuncu için sosyal bir çıkarım oyunu. Herkes gizli bir kelime alır... sahtekar hariç! Görevin: kimin numaraya yattığını bul.", "rulesWhatIsBody": "3-20 oyuncu için sosyal bir çıkarım oyunu. Herkes gizli bir kelime alır... sahtekar hariç! Görevin: kimin numaraya yattığını bul.",
@@ -199,20 +211,17 @@
"rulesModesBody": "• Tek cihaz: herkes aynı cihazı paylaşır. Her oyuncu bir düğmeye basılı tutarak kelimesini görür.\n\n• Çoklu cihaz: her oyuncu kendi cihazını kullanır. Bluetooth/WiFi Direct ile bağlanılır, internet gerekmez.", "rulesModesBody": "• Tek cihaz: herkes aynı cihazı paylaşır. Her oyuncu bir düğmeye basılı tutarak kelimesini görür.\n\n• Çoklu cihaz: her oyuncu kendi cihazını kullanır. Bluetooth/WiFi Direct ile bağlanılır, internet gerekmez.",
"rulesExampleTitle": "✏️ Örnek oyun", "rulesExampleTitle": "✏️ Örnek oyun",
"rulesExampleBody": "Gizli kelime: \"Pizza\"\n\n• Ali: \"Sıcak yenir\" ✓\n• Ayşe: \"Kutu içinde gelir\" ✓\n• Zeynep (sahtekar): \"Çok popüler\" 🤔\n• Mehmet: \"Üstünde peynir var\" ✓\n\nZeynep çok genel bir cevap verdi... Şüpheli!", "rulesExampleBody": "Gizli kelime: \"Pizza\"\n\n• Ali: \"Sıcak yenir\" ✓\n• Ayşe: \"Kutu içinde gelir\" ✓\n• Zeynep (sahtekar): \"Çok popüler\" 🤔\n• Mehmet: \"Üstünde peynir var\" ✓\n\nZeynep çok genel bir cevap verdi... Şüpheli!",
"joinGameTitle": "Oyuna katıl", "joinGameTitle": "Oyuna katıl",
"multiDeviceMode": "Çoklu cihaz modu", "multiDeviceMode": "Çoklu cihaz modu",
"scanQrDescription": "Bluetooth/WiFi Direct ile oyuna bağlanmak için sunucunun gösterdiği QR kodunu tara.", "scanQrDescription": "Bluetooth/WiFi Direct ile oyuna bağlanmak için sunucunun gösterdiği QR kodunu tara.",
"comingSoon": "Yakında", "comingSoon": "Yakında",
"nearbyNotAvailable": "Nearby Connections ile çoklu cihaz bağlantısı fiziksel Android cihazları gerektirir.\n\nŞimdilik paylaşılan bir cihazda oynamak için \"Tek cihaz\" modunu kullanın.", "nearbyNotAvailable": "Nearby Connections ile çoklu cihaz bağlantısı fiziksel Android cihazları gerektirir.\n\nŞimdilik paylaşılan bir cihazda oynamak için \"Tek cihaz\" modunu kullanın.",
"back": "Geri", "back": "Geri",
"yes": "Evet", "yes": "Evet",
"no": "Hayır", "no": "Hayır",
"cancel": "İptal", "cancel": "İptal",
"accept": "Kabul et", "accept": "Kabul et",
"next": "Sonraki", "next": "Sonraki",
"settingsTitle": "Ayarlar", "settingsTitle": "Ayarlar",
"language": "Dil", "language": "Dil",
"soundVolume": "Efekt ses düzeyi", "soundVolume": "Efekt ses düzeyi",
@@ -257,5 +266,10 @@
"defaultPlayerName": "Oyuncu", "defaultPlayerName": "Oyuncu",
"play": "Oyna", "play": "Oyna",
"history": "Geçmiş", "history": "Geçmiş",
"mainTagline": "Çok geç olmadan sahtekârı bul" "mainTagline": "Çok geç olmadan sahtekârı bul",
"deviceProfile": "Cihaz profili",
"profileName": "Ad",
"profileNick": "Takma ad",
"save": "Kaydet",
"automaticLanguage": "Otomatik"
} }
+48 -34
View File
@@ -1,20 +1,16 @@
{ {
"@@locale": "zh", "@@locale": "zh",
"appTitle": "冒牌者", "appTitle": "冒牌者",
"subtitle": "社交推理游戏", "subtitle": "社交推理游戏",
"loadingWords": "正在加载词汇...", "loadingWords": "正在加载词汇...",
"playersRange": "3-20名玩家 • 无需联网", "playersRange": "3-20名玩家 • 无需联网",
"createGame": "创建游戏", "createGame": "创建游戏",
"joinGame": "加入游戏", "joinGame": "加入游戏",
"howToPlay": "玩法介绍", "howToPlay": "玩法介绍",
"settings": "设置", "settings": "设置",
"gameMode": "游戏模式", "gameMode": "游戏模式",
"singleDevice": "单设备", "singleDevice": "单设备",
"multiDevice": "多设备", "multiDevice": "多设备",
"category": "分类", "category": "分类",
"categoryAll": "全部", "categoryAll": "全部",
"categoryAnimals": "动物", "categoryAnimals": "动物",
@@ -27,11 +23,12 @@
"categoryMovies": "电影", "categoryMovies": "电影",
"categoryMusic": "音乐", "categoryMusic": "音乐",
"categoryTechnology": "科技", "categoryTechnology": "科技",
"playersCount": "玩家 ({count})", "playersCount": "玩家 ({count})",
"@playersCount": { "@playersCount": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"playersRangeHint": "3-20", "playersRangeHint": "3-20",
@@ -39,7 +36,6 @@
"playerAlreadyExists": "已存在同名玩家", "playerAlreadyExists": "已存在同名玩家",
"maxPlayersReached": "最多20名玩家", "maxPlayersReached": "最多20名玩家",
"minPlayersRequired": "至少需要3名玩家", "minPlayersRequired": "至少需要3名玩家",
"configuration": "配置", "configuration": "配置",
"impostors": "🎭 冒牌者", "impostors": "🎭 冒牌者",
"impostorClue": "🔍 给冒牌者的提示", "impostorClue": "🔍 给冒牌者的提示",
@@ -50,15 +46,15 @@
"twoMin": "2分钟", "twoMin": "2分钟",
"threeMin": "3分钟", "threeMin": "3分钟",
"fiveMin": "5分钟", "fiveMin": "5分钟",
"startGame": "开始游戏", "startGame": "开始游戏",
"seeYourWord": "查看你的词语", "seeYourWord": "查看你的词语",
"eachPlayerMustSee": "每位玩家需要秘密查看自己的词语", "eachPlayerMustSee": "每位玩家需要秘密查看自己的词语",
"roundNumber": "第 {round} 轮", "roundNumber": "第 {round} 轮",
"@roundNumber": { "@roundNumber": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"alreadySeen": "已查看词语", "alreadySeen": "已查看词语",
@@ -67,16 +63,19 @@
"playersRemaining": "还剩 {count} 位玩家", "playersRemaining": "还剩 {count} 位玩家",
"@playersRemaining": { "@playersRemaining": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"youAreImpostor": "你是冒牌者!", "youAreImpostor": "你是冒牌者!",
"yourWordIs": "你的词语是:", "yourWordIs": "你的词语是:",
"clueCategory": "提示:{category}", "clueCategory": "提示:{category}",
"@clueCategory": { "@clueCategory": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"holdToSeeWord": "长按查看你的词语", "holdToSeeWord": "长按查看你的词语",
@@ -84,11 +83,12 @@
"showingWord": "👁️ 显示中...", "showingWord": "👁️ 显示中...",
"holdToSee": "👆 长按查看", "holdToSee": "👆 长按查看",
"seenMyWord": "我已看过词语", "seenMyWord": "我已看过词语",
"debateRound": "讨论 - 第 {round} 轮", "debateRound": "讨论 - 第 {round} 轮",
"@debateRound": { "@debateRound": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"timeUp": "⏰ 时间到!", "timeUp": "⏰ 时间到!",
@@ -97,21 +97,28 @@
"activePlayersInfo": "{active} 名在场 • {impostors} 名冒牌者潜伏中", "activePlayersInfo": "{active} 名在场 • {impostors} 名冒牌者潜伏中",
"@activePlayersInfo": { "@activePlayersInfo": {
"placeholders": { "placeholders": {
"active": {"type": "int"}, "active": {
"impostors": {"type": "int"} "type": "int"
},
"impostors": {
"type": "int"
}
} }
}, },
"eliminated": "已淘汰", "eliminated": "已淘汰",
"notes": "笔记", "notes": "笔记",
"goToVoting": "前往投票", "goToVoting": "前往投票",
"voting": "🗳️ 投票", "voting": "🗳️ 投票",
"turnToVote": "轮到你投票:", "turnToVote": "轮到你投票:",
"votesProgress": "投票:{current}/{total}", "votesProgress": "投票:{current}/{total}",
"@votesProgress": { "@votesProgress": {
"placeholders": { "placeholders": {
"current": {"type": "int"}, "current": {
"total": {"type": "int"} "type": "int"
},
"total": {
"type": "int"
}
} }
}, },
"whoIsImpostor": "你认为谁是冒牌者?", "whoIsImpostor": "你认为谁是冒牌者?",
@@ -120,7 +127,6 @@
"allVoted": "所有人已投票!", "allVoted": "所有人已投票!",
"tapToReveal": "点击揭晓结果", "tapToReveal": "点击揭晓结果",
"revealResult": "揭晓结果", "revealResult": "揭晓结果",
"result": "结果", "result": "结果",
"revealing": "揭晓中...", "revealing": "揭晓中...",
"wasImpostor": "是冒牌者! 🎉", "wasImpostor": "是冒牌者! 🎉",
@@ -129,7 +135,6 @@
"seeEndResult": "查看最终结果", "seeEndResult": "查看最终结果",
"impostorGuessWord": "冒牌者要猜词吗?", "impostorGuessWord": "冒牌者要猜词吗?",
"nextRound": "下一轮", "nextRound": "下一轮",
"impostorGuessTitle": "🎯 冒牌者猜词", "impostorGuessTitle": "🎯 冒牌者猜词",
"impostorCanGuess": "被淘汰的冒牌者可以\n尝试猜出词语", "impostorCanGuess": "被淘汰的冒牌者可以\n尝试猜出词语",
"ifCorrectImpostorsWin": "如果猜对,冒牌者获胜!", "ifCorrectImpostorsWin": "如果猜对,冒牌者获胜!",
@@ -140,20 +145,23 @@
"theWordWas": "词语是:{word}", "theWordWas": "词语是:{word}",
"@theWordWas": { "@theWordWas": {
"placeholders": { "placeholders": {
"word": {"type": "String"} "word": {
"type": "String"
}
} }
}, },
"impostorsWin": "冒牌者获胜!", "impostorsWin": "冒牌者获胜!",
"wrongGuess": "猜错了!", "wrongGuess": "猜错了!",
"gameContinues": "游戏继续...", "gameContinues": "游戏继续...",
"gameOver": "游戏结束", "gameOver": "游戏结束",
"playersWin": "玩家获胜!", "playersWin": "玩家获胜!",
"theSecretWordWas": "🔍 词语是:", "theSecretWordWas": "🔍 词语是:",
"categoryLabel": "分类:{category}", "categoryLabel": "分类:{category}",
"@categoryLabel": { "@categoryLabel": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"theImpostorWas": "🎭 冒牌者是:", "theImpostorWas": "🎭 冒牌者是:",
@@ -162,13 +170,16 @@
"roundElimination": "第 {round} 轮:{name}", "roundElimination": "第 {round} 轮:{name}",
"@roundElimination": { "@roundElimination": {
"placeholders": { "placeholders": {
"round": {"type": "int"}, "round": {
"name": {"type": "String"} "type": "int"
},
"name": {
"type": "String"
}
} }
}, },
"rematch": "再来一局", "rematch": "再来一局",
"mainMenu": "主菜单", "mainMenu": "主菜单",
"notesTitle": "📝 笔记", "notesTitle": "📝 笔记",
"notesSaved": "笔记已保存", "notesSaved": "笔记已保存",
"whoAreYou": "你是谁?", "whoAreYou": "你是谁?",
@@ -176,14 +187,15 @@
"notesOf": "{name}的笔记", "notesOf": "{name}的笔记",
"@notesOf": { "@notesOf": {
"placeholders": { "placeholders": {
"name": {"type": "String"} "name": {
"type": "String"
}
} }
}, },
"notesAboutPlayers": "关于每位玩家的记录", "notesAboutPlayers": "关于每位玩家的记录",
"playerNoteHint": "他说了什么?可疑吗?", "playerNoteHint": "他说了什么?可疑吗?",
"freeNote": "自由笔记", "freeNote": "自由笔记",
"freeNoteHint": "个人记录...", "freeNoteHint": "个人记录...",
"rulesTitle": "📖 玩法介绍", "rulesTitle": "📖 玩法介绍",
"rulesWhatIsTitle": "🎭 什么是冒牌者?", "rulesWhatIsTitle": "🎭 什么是冒牌者?",
"rulesWhatIsBody": "一款3-20人的社交推理游戏。每个人都会收到一个秘密词语......除了冒牌者!你的任务:找出谁在假装。", "rulesWhatIsBody": "一款3-20人的社交推理游戏。每个人都会收到一个秘密词语......除了冒牌者!你的任务:找出谁在假装。",
@@ -199,20 +211,17 @@
"rulesModesBody": "• 单设备:所有人共享一台设备。每位玩家通过长按按钮查看自己的词语。\n\n• 多设备:每位玩家使用自己的设备。通过蓝牙/WiFi Direct连接,无需联网。", "rulesModesBody": "• 单设备:所有人共享一台设备。每位玩家通过长按按钮查看自己的词语。\n\n• 多设备:每位玩家使用自己的设备。通过蓝牙/WiFi Direct连接,无需联网。",
"rulesExampleTitle": "✏️ 游戏示例", "rulesExampleTitle": "✏️ 游戏示例",
"rulesExampleBody": "秘密词语:\"披萨\"\n\n• 小明:\"趁热吃的\" ✓\n• 小红:\"装在盒子里的\" ✓\n• 小丽(冒牌者):\"非常受欢迎\" 🤔\n• 小刚:\"上面有芝士\" ✓\n\n小丽的回答太笼统了......可疑!", "rulesExampleBody": "秘密词语:\"披萨\"\n\n• 小明:\"趁热吃的\" ✓\n• 小红:\"装在盒子里的\" ✓\n• 小丽(冒牌者):\"非常受欢迎\" 🤔\n• 小刚:\"上面有芝士\" ✓\n\n小丽的回答太笼统了......可疑!",
"joinGameTitle": "加入游戏", "joinGameTitle": "加入游戏",
"multiDeviceMode": "多设备模式", "multiDeviceMode": "多设备模式",
"scanQrDescription": "扫描房主显示的二维码,通过蓝牙/WiFi Direct连接到游戏。", "scanQrDescription": "扫描房主显示的二维码,通过蓝牙/WiFi Direct连接到游戏。",
"comingSoon": "即将推出", "comingSoon": "即将推出",
"nearbyNotAvailable": "多设备连接的Nearby Connections功能需要实体Android设备。\n\n目前请使用\"单设备\"模式,在一台共享设备上进行游戏。", "nearbyNotAvailable": "多设备连接的Nearby Connections功能需要实体Android设备。\n\n目前请使用\"单设备\"模式,在一台共享设备上进行游戏。",
"back": "返回", "back": "返回",
"yes": "是", "yes": "是",
"no": "否", "no": "否",
"cancel": "取消", "cancel": "取消",
"accept": "确定", "accept": "确定",
"next": "下一步", "next": "下一步",
"settingsTitle": "设置", "settingsTitle": "设置",
"language": "语言", "language": "语言",
"soundVolume": "音效音量", "soundVolume": "音效音量",
@@ -257,5 +266,10 @@
"defaultPlayerName": "玩家", "defaultPlayerName": "玩家",
"play": "开始", "play": "开始",
"history": "历史", "history": "历史",
"mainTagline": "在太晚之前找出冒牌者" "mainTagline": "在太晚之前找出冒牌者",
"deviceProfile": "设备档案",
"profileName": "名称",
"profileNick": "昵称",
"save": "保存",
"automaticLanguage": "自动"
} }
+48 -34
View File
@@ -1,20 +1,16 @@
{ {
"@@locale": "zh_TW", "@@locale": "zh_TW",
"appTitle": "冒牌者", "appTitle": "冒牌者",
"subtitle": "社交推理遊戲", "subtitle": "社交推理遊戲",
"loadingWords": "正在載入詞彙...", "loadingWords": "正在載入詞彙...",
"playersRange": "3-20 位玩家 • 無需網路", "playersRange": "3-20 位玩家 • 無需網路",
"createGame": "建立遊戲", "createGame": "建立遊戲",
"joinGame": "加入遊戲", "joinGame": "加入遊戲",
"howToPlay": "遊戲規則", "howToPlay": "遊戲規則",
"settings": "設定", "settings": "設定",
"gameMode": "遊戲模式", "gameMode": "遊戲模式",
"singleDevice": "單機模式", "singleDevice": "單機模式",
"multiDevice": "多機模式", "multiDevice": "多機模式",
"category": "類別", "category": "類別",
"categoryAll": "全部", "categoryAll": "全部",
"categoryAnimals": "動物", "categoryAnimals": "動物",
@@ -27,11 +23,12 @@
"categoryMovies": "電影", "categoryMovies": "電影",
"categoryMusic": "音樂", "categoryMusic": "音樂",
"categoryTechnology": "科技", "categoryTechnology": "科技",
"playersCount": "玩家 ({count})", "playersCount": "玩家 ({count})",
"@playersCount": { "@playersCount": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"playersRangeHint": "3-20", "playersRangeHint": "3-20",
@@ -39,7 +36,6 @@
"playerAlreadyExists": "已有同名玩家", "playerAlreadyExists": "已有同名玩家",
"maxPlayersReached": "最多 20 位玩家", "maxPlayersReached": "最多 20 位玩家",
"minPlayersRequired": "至少需要 3 位玩家", "minPlayersRequired": "至少需要 3 位玩家",
"configuration": "設定", "configuration": "設定",
"impostors": "🎭 冒牌者", "impostors": "🎭 冒牌者",
"impostorClue": "🔍 冒牌者提示", "impostorClue": "🔍 冒牌者提示",
@@ -50,15 +46,15 @@
"twoMin": "2 分鐘", "twoMin": "2 分鐘",
"threeMin": "3 分鐘", "threeMin": "3 分鐘",
"fiveMin": "5 分鐘", "fiveMin": "5 分鐘",
"startGame": "開始遊戲", "startGame": "開始遊戲",
"seeYourWord": "查看你的詞彙", "seeYourWord": "查看你的詞彙",
"eachPlayerMustSee": "每位玩家必須私下查看自己的詞彙", "eachPlayerMustSee": "每位玩家必須私下查看自己的詞彙",
"roundNumber": "第 {round} 回合", "roundNumber": "第 {round} 回合",
"@roundNumber": { "@roundNumber": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"alreadySeen": "已查看過詞彙", "alreadySeen": "已查看過詞彙",
@@ -67,16 +63,19 @@
"playersRemaining": "還有 {count} 位玩家未查看", "playersRemaining": "還有 {count} 位玩家未查看",
"@playersRemaining": { "@playersRemaining": {
"placeholders": { "placeholders": {
"count": {"type": "int"} "count": {
"type": "int"
}
} }
}, },
"youAreImpostor": "你是冒牌者!", "youAreImpostor": "你是冒牌者!",
"yourWordIs": "你的詞彙是:", "yourWordIs": "你的詞彙是:",
"clueCategory": "提示:{category}", "clueCategory": "提示:{category}",
"@clueCategory": { "@clueCategory": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"holdToSeeWord": "長按查看你的詞彙", "holdToSeeWord": "長按查看你的詞彙",
@@ -84,11 +83,12 @@
"showingWord": "👁️ 顯示中...", "showingWord": "👁️ 顯示中...",
"holdToSee": "👆 長按查看", "holdToSee": "👆 長按查看",
"seenMyWord": "我已看過詞彙", "seenMyWord": "我已看過詞彙",
"debateRound": "討論 - 第 {round} 回合", "debateRound": "討論 - 第 {round} 回合",
"@debateRound": { "@debateRound": {
"placeholders": { "placeholders": {
"round": {"type": "int"} "round": {
"type": "int"
}
} }
}, },
"timeUp": "⏰ 時間到!", "timeUp": "⏰ 時間到!",
@@ -97,21 +97,28 @@
"activePlayersInfo": "{active} 位在場 • {impostors} 位冒牌者潛伏中", "activePlayersInfo": "{active} 位在場 • {impostors} 位冒牌者潛伏中",
"@activePlayersInfo": { "@activePlayersInfo": {
"placeholders": { "placeholders": {
"active": {"type": "int"}, "active": {
"impostors": {"type": "int"} "type": "int"
},
"impostors": {
"type": "int"
}
} }
}, },
"eliminated": "已淘汰", "eliminated": "已淘汰",
"notes": "筆記", "notes": "筆記",
"goToVoting": "前往投票", "goToVoting": "前往投票",
"voting": "🗳️ 投票", "voting": "🗳️ 投票",
"turnToVote": "輪到你投票:", "turnToVote": "輪到你投票:",
"votesProgress": "票數:{current}/{total}", "votesProgress": "票數:{current}/{total}",
"@votesProgress": { "@votesProgress": {
"placeholders": { "placeholders": {
"current": {"type": "int"}, "current": {
"total": {"type": "int"} "type": "int"
},
"total": {
"type": "int"
}
} }
}, },
"whoIsImpostor": "你認為誰是冒牌者?", "whoIsImpostor": "你認為誰是冒牌者?",
@@ -120,7 +127,6 @@
"allVoted": "所有人都已投票!", "allVoted": "所有人都已投票!",
"tapToReveal": "點擊揭曉結果", "tapToReveal": "點擊揭曉結果",
"revealResult": "揭曉結果", "revealResult": "揭曉結果",
"result": "結果", "result": "結果",
"revealing": "揭曉中...", "revealing": "揭曉中...",
"wasImpostor": "是冒牌者! 🎉", "wasImpostor": "是冒牌者! 🎉",
@@ -129,7 +135,6 @@
"seeEndResult": "查看最終結果", "seeEndResult": "查看最終結果",
"impostorGuessWord": "冒牌者要猜詞彙嗎?", "impostorGuessWord": "冒牌者要猜詞彙嗎?",
"nextRound": "下一回合", "nextRound": "下一回合",
"impostorGuessTitle": "🎯 冒牌者猜詞", "impostorGuessTitle": "🎯 冒牌者猜詞",
"impostorCanGuess": "被淘汰的冒牌者可以\n嘗試猜出正確詞彙", "impostorCanGuess": "被淘汰的冒牌者可以\n嘗試猜出正確詞彙",
"ifCorrectImpostorsWin": "猜對的話,冒牌者就贏了!", "ifCorrectImpostorsWin": "猜對的話,冒牌者就贏了!",
@@ -140,20 +145,23 @@
"theWordWas": "正確詞彙是:{word}", "theWordWas": "正確詞彙是:{word}",
"@theWordWas": { "@theWordWas": {
"placeholders": { "placeholders": {
"word": {"type": "String"} "word": {
"type": "String"
}
} }
}, },
"impostorsWin": "冒牌者獲勝!", "impostorsWin": "冒牌者獲勝!",
"wrongGuess": "猜錯了!", "wrongGuess": "猜錯了!",
"gameContinues": "遊戲繼續...", "gameContinues": "遊戲繼續...",
"gameOver": "遊戲結束", "gameOver": "遊戲結束",
"playersWin": "玩家們獲勝!", "playersWin": "玩家們獲勝!",
"theSecretWordWas": "🔍 正確詞彙是:", "theSecretWordWas": "🔍 正確詞彙是:",
"categoryLabel": "類別:{category}", "categoryLabel": "類別:{category}",
"@categoryLabel": { "@categoryLabel": {
"placeholders": { "placeholders": {
"category": {"type": "String"} "category": {
"type": "String"
}
} }
}, },
"theImpostorWas": "🎭 冒牌者是:", "theImpostorWas": "🎭 冒牌者是:",
@@ -162,13 +170,16 @@
"roundElimination": "第 {round} 回合:{name}", "roundElimination": "第 {round} 回合:{name}",
"@roundElimination": { "@roundElimination": {
"placeholders": { "placeholders": {
"round": {"type": "int"}, "round": {
"name": {"type": "String"} "type": "int"
},
"name": {
"type": "String"
}
} }
}, },
"rematch": "再來一局", "rematch": "再來一局",
"mainMenu": "主選單", "mainMenu": "主選單",
"notesTitle": "📝 筆記", "notesTitle": "📝 筆記",
"notesSaved": "筆記已儲存", "notesSaved": "筆記已儲存",
"whoAreYou": "你是誰?", "whoAreYou": "你是誰?",
@@ -176,14 +187,15 @@
"notesOf": "{name} 的筆記", "notesOf": "{name} 的筆記",
"@notesOf": { "@notesOf": {
"placeholders": { "placeholders": {
"name": {"type": "String"} "name": {
"type": "String"
}
} }
}, },
"notesAboutPlayers": "關於每位玩家的紀錄", "notesAboutPlayers": "關於每位玩家的紀錄",
"playerNoteHint": "他說了什麼?可疑嗎?", "playerNoteHint": "他說了什麼?可疑嗎?",
"freeNote": "自由筆記", "freeNote": "自由筆記",
"freeNoteHint": "個人筆記...", "freeNoteHint": "個人筆記...",
"rulesTitle": "📖 遊戲規則", "rulesTitle": "📖 遊戲規則",
"rulesWhatIsTitle": "🎭 什麼是冒牌者?", "rulesWhatIsTitle": "🎭 什麼是冒牌者?",
"rulesWhatIsBody": "一款適合 3-20 位玩家的社交推理遊戲。每個人都會收到一個秘密詞彙……除了冒牌者!你的任務:找出誰在假裝。", "rulesWhatIsBody": "一款適合 3-20 位玩家的社交推理遊戲。每個人都會收到一個秘密詞彙……除了冒牌者!你的任務:找出誰在假裝。",
@@ -199,20 +211,17 @@
"rulesModesBody": "• 單機模式:所有人共用一台裝置。每位玩家長按按鈕查看自己的詞彙。\n\n• 多機模式:每位玩家使用自己的裝置,透過藍牙/WiFi Direct 連線,無需網路。", "rulesModesBody": "• 單機模式:所有人共用一台裝置。每位玩家長按按鈕查看自己的詞彙。\n\n• 多機模式:每位玩家使用自己的裝置,透過藍牙/WiFi Direct 連線,無需網路。",
"rulesExampleTitle": "✏️ 遊戲範例", "rulesExampleTitle": "✏️ 遊戲範例",
"rulesExampleBody": "秘密詞彙:「披薩」\n\n• 小明:「要趁熱吃」 ✓\n• 小華:「裝在盒子裡」 ✓\n• 小美(冒牌者):「很受歡迎」 🤔\n• 小強:「上面有起司」 ✓\n\n小美的回答太籠統了……有嫌疑!", "rulesExampleBody": "秘密詞彙:「披薩」\n\n• 小明:「要趁熱吃」 ✓\n• 小華:「裝在盒子裡」 ✓\n• 小美(冒牌者):「很受歡迎」 🤔\n• 小強:「上面有起司」 ✓\n\n小美的回答太籠統了……有嫌疑!",
"joinGameTitle": "加入遊戲", "joinGameTitle": "加入遊戲",
"multiDeviceMode": "多機模式", "multiDeviceMode": "多機模式",
"scanQrDescription": "掃描主機顯示的 QR 碼,透過藍牙/WiFi Direct 加入遊戲。", "scanQrDescription": "掃描主機顯示的 QR 碼,透過藍牙/WiFi Direct 加入遊戲。",
"comingSoon": "即將推出", "comingSoon": "即將推出",
"nearbyNotAvailable": "多機連線功能需要 Android 實體裝置搭配 Nearby Connections。\n\n目前請使用「單機模式」在共用裝置上進行遊戲。", "nearbyNotAvailable": "多機連線功能需要 Android 實體裝置搭配 Nearby Connections。\n\n目前請使用「單機模式」在共用裝置上進行遊戲。",
"back": "返回", "back": "返回",
"yes": "是", "yes": "是",
"no": "否", "no": "否",
"cancel": "取消", "cancel": "取消",
"accept": "確定", "accept": "確定",
"next": "下一步", "next": "下一步",
"settingsTitle": "設定", "settingsTitle": "設定",
"language": "語言", "language": "語言",
"soundVolume": "音效音量", "soundVolume": "音效音量",
@@ -257,5 +266,10 @@
"defaultPlayerName": "玩家", "defaultPlayerName": "玩家",
"play": "開始", "play": "開始",
"history": "紀錄", "history": "紀錄",
"mainTagline": "在太晚之前找出冒牌者" "mainTagline": "在太晚之前找出冒牌者",
"deviceProfile": "裝置個人檔案",
"profileName": "名稱",
"profileNick": "暱稱",
"save": "儲存",
"automaticLanguage": "自動"
} }
+11 -1
View File
@@ -1399,4 +1399,14 @@ AppLocalizations lookupAppLocalizations(Locale locale) {
'on GitHub with a reproducible sample app and the gen-l10n configuration ' 'on GitHub with a reproducible sample app and the gen-l10n configuration '
'that was used.', 'that was used.',
); );
}
String get deviceProfile;
String get profileName;
String get profileNick;
String get save;
String get automaticLanguage;
}
@@ -712,4 +712,19 @@ class AppLocalizationsAr extends AppLocalizations {
@override @override
String get mainTagline => 'اكتشف المنتحل قبل فوات الأوان'; String get mainTagline => 'اكتشف المنتحل قبل فوات الأوان';
@override
String get deviceProfile => 'الملف الشخصي للجهاز';
@override
String get profileName => 'الاسم';
@override
String get profileNick => 'اللقب';
@override
String get save => 'حفظ';
@override
String get automaticLanguage => 'تلقائي';
} }
@@ -715,4 +715,19 @@ class AppLocalizationsCa extends AppLocalizations {
@override @override
String get mainTagline => 'Descobreix limpostor abans que siga massa tard'; String get mainTagline => 'Descobreix limpostor abans que siga massa tard';
@override
String get deviceProfile => 'Perfil del dispositiu';
@override
String get profileName => 'Nom';
@override
String get profileNick => 'Àlies';
@override
String get save => 'Desa';
@override
String get automaticLanguage => 'Automàtic';
} }
@@ -718,4 +718,19 @@ class AppLocalizationsDe extends AppLocalizations {
@override @override
String get mainTagline => 'Finde den Hochstapler, bevor es zu spät ist'; String get mainTagline => 'Finde den Hochstapler, bevor es zu spät ist';
@override
String get deviceProfile => 'Geräteprofil';
@override
String get profileName => 'Name';
@override
String get profileNick => 'Nickname';
@override
String get save => 'Speichern';
@override
String get automaticLanguage => 'Automatisch';
} }
@@ -712,4 +712,19 @@ class AppLocalizationsEn extends AppLocalizations {
@override @override
String get mainTagline => 'Find the impostor before it is too late'; String get mainTagline => 'Find the impostor before it is too late';
@override
String get deviceProfile => 'Device profile';
@override
String get profileName => 'Name';
@override
String get profileNick => 'Nick';
@override
String get save => 'Save';
@override
String get automaticLanguage => 'Automatic';
} }
@@ -714,4 +714,19 @@ class AppLocalizationsEs extends AppLocalizations {
@override @override
String get mainTagline => 'Descubre al impostor antes de que sea tarde'; String get mainTagline => 'Descubre al impostor antes de que sea tarde';
@override
String get deviceProfile => 'Perfil del dispositivo';
@override
String get profileName => 'Nombre';
@override
String get profileNick => 'Nick';
@override
String get save => 'Guardar';
@override
String get automaticLanguage => 'Automático';
} }
@@ -717,4 +717,19 @@ class AppLocalizationsEu extends AppLocalizations {
@override @override
String get mainTagline => 'Aurkitu iruzurtia berandu baino lehen'; String get mainTagline => 'Aurkitu iruzurtia berandu baino lehen';
@override
String get deviceProfile => 'Gailuaren profila';
@override
String get profileName => 'Izena';
@override
String get profileNick => 'Ezizena';
@override
String get save => 'Gorde';
@override
String get automaticLanguage => 'Automatikoa';
} }
@@ -715,4 +715,19 @@ class AppLocalizationsFr extends AppLocalizations {
@override @override
String get mainTagline => 'Découvre limposteur avant quil ne soit trop tard'; String get mainTagline => 'Découvre limposteur avant quil ne soit trop tard';
@override
String get deviceProfile => 'Profil de lappareil';
@override
String get profileName => 'Nom';
@override
String get profileNick => 'Pseudo';
@override
String get save => 'Enregistrer';
@override
String get automaticLanguage => 'Automatique';
} }
@@ -714,4 +714,19 @@ class AppLocalizationsHi extends AppLocalizations {
@override @override
String get mainTagline => 'बहुत देर होने से पहले impostor को ढूँढें'; String get mainTagline => 'बहुत देर होने से पहले impostor को ढूँढें';
@override
String get deviceProfile => 'डिवाइस प्रोफ़ाइल';
@override
String get profileName => 'नाम';
@override
String get profileNick => 'निकनेम';
@override
String get save => 'सहेजें';
@override
String get automaticLanguage => 'स्वचालित';
} }
@@ -715,4 +715,19 @@ class AppLocalizationsIt extends AppLocalizations {
@override @override
String get mainTagline => 'Scopri limpostore prima che sia troppo tardi'; String get mainTagline => 'Scopri limpostore prima che sia troppo tardi';
@override
String get deviceProfile => 'Profilo del dispositivo';
@override
String get profileName => 'Nome';
@override
String get profileNick => 'Nick';
@override
String get save => 'Salva';
@override
String get automaticLanguage => 'Automatico';
} }
@@ -712,4 +712,19 @@ class AppLocalizationsJa extends AppLocalizations {
@override @override
String get mainTagline => '手遅れになる前にインポスターを見つけよう'; String get mainTagline => '手遅れになる前にインポスターを見つけよう';
@override
String get deviceProfile => 'デバイスプロフィール';
@override
String get profileName => '名前';
@override
String get profileNick => 'ニックネーム';
@override
String get save => '保存';
@override
String get automaticLanguage => '自動';
} }
@@ -712,4 +712,19 @@ class AppLocalizationsKo extends AppLocalizations {
@override @override
String get mainTagline => '늦기 전에 임포스터를 찾아내세요'; String get mainTagline => '늦기 전에 임포스터를 찾아내세요';
@override
String get deviceProfile => '기기 프로필';
@override
String get profileName => '이름';
@override
String get profileNick => '닉네임';
@override
String get save => '저장';
@override
String get automaticLanguage => '자동';
} }
@@ -715,4 +715,19 @@ class AppLocalizationsNl extends AppLocalizations {
@override @override
String get mainTagline => 'Vind de bedrieger voordat het te laat is'; String get mainTagline => 'Vind de bedrieger voordat het te laat is';
@override
String get deviceProfile => 'Apparaatprofiel';
@override
String get profileName => 'Naam';
@override
String get profileNick => 'Nickname';
@override
String get save => 'Opslaan';
@override
String get automaticLanguage => 'Automatisch';
} }
@@ -715,4 +715,19 @@ class AppLocalizationsPl extends AppLocalizations {
@override @override
String get mainTagline => 'Znajdź oszusta, zanim będzie za późno'; String get mainTagline => 'Znajdź oszusta, zanim będzie za późno';
@override
String get deviceProfile => 'Profil urządzenia';
@override
String get profileName => 'Nazwa';
@override
String get profileNick => 'Nick';
@override
String get save => 'Zapisz';
@override
String get automaticLanguage => 'Automatycznie';
} }
@@ -716,4 +716,19 @@ class AppLocalizationsPt extends AppLocalizations {
@override @override
String get mainTagline => 'Descobre o impostor antes que seja tarde'; String get mainTagline => 'Descobre o impostor antes que seja tarde';
@override
String get deviceProfile => 'Perfil do dispositivo';
@override
String get profileName => 'Nome';
@override
String get profileNick => 'Nick';
@override
String get save => 'Guardar';
@override
String get automaticLanguage => 'Automático';
} }
@@ -715,4 +715,19 @@ class AppLocalizationsRu extends AppLocalizations {
@override @override
String get mainTagline => 'Найди самозванца, пока не стало слишком поздно'; String get mainTagline => 'Найди самозванца, пока не стало слишком поздно';
@override
String get deviceProfile => 'Профиль устройства';
@override
String get profileName => 'Имя';
@override
String get profileNick => 'Ник';
@override
String get save => 'Сохранить';
@override
String get automaticLanguage => 'Автоматически';
} }
@@ -714,4 +714,19 @@ class AppLocalizationsTr extends AppLocalizations {
@override @override
String get mainTagline => 'Çok geç olmadan sahtekârı bul'; String get mainTagline => 'Çok geç olmadan sahtekârı bul';
@override
String get deviceProfile => 'Cihaz profili';
@override
String get profileName => 'Ad';
@override
String get profileNick => 'Takma ad';
@override
String get save => 'Kaydet';
@override
String get automaticLanguage => 'Otomatik';
} }
+31 -1
View File
@@ -711,6 +711,21 @@ class AppLocalizationsZh extends AppLocalizations {
@override @override
String get mainTagline => '在太晚之前找出冒牌者'; String get mainTagline => '在太晚之前找出冒牌者';
@override
String get deviceProfile => '设备档案';
@override
String get profileName => '名称';
@override
String get profileNick => '昵称';
@override
String get save => '保存';
@override
String get automaticLanguage => '自动';
} }
/// The translations for Chinese, as used in Taiwan (`zh_TW`). /// The translations for Chinese, as used in Taiwan (`zh_TW`).
@@ -1292,4 +1307,19 @@ class AppLocalizationsZhTw extends AppLocalizationsZh {
@override @override
String get mainTagline => '在太晚之前找出冒牌者'; String get mainTagline => '在太晚之前找出冒牌者';
} @override
String get deviceProfile => '裝置個人檔案';
@override
String get profileName => '名稱';
@override
String get profileNick => '暱稱';
@override
String get save => '儲存';
@override
String get automaticLanguage => '自動';
}
+129 -95
View File
@@ -19,6 +19,10 @@ class _PantallaAjustesState extends State<PantallaAjustes> {
final l10n = AppLocalizations.of(context)!; final l10n = AppLocalizations.of(context)!;
final servicioIdioma = context.watch<ServicioIdioma>(); final servicioIdioma = context.watch<ServicioIdioma>();
final perfil = context.watch<ServicioPerfilUsuario>().perfil; final perfil = context.watch<ServicioPerfilUsuario>().perfil;
final nombrePerfil = perfil.nombre.trim().isEmpty
? l10n.defaultPlayerName
: perfil.nombre.trim();
final inicialPerfil = nombrePerfil.substring(0, 1).toUpperCase();
return Scaffold( return Scaffold(
appBar: AppBar(title: Text(l10n.settingsTitle)), appBar: AppBar(title: Text(l10n.settingsTitle)),
@@ -27,62 +31,85 @@ class _PantallaAjustesState extends State<PantallaAjustes> {
child: SingleChildScrollView( child: SingleChildScrollView(
padding: const EdgeInsets.all(16), padding: const EdgeInsets.all(16),
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Card( Card(
child: ListTile( child: InkWell(
leading: AvatarFarolero( borderRadius: BorderRadius.circular(12),
texto: perfil.nombre.substring(0, 1).toUpperCase(), onTap: () => _editarPerfil(context),
assetPath: perfil.avatarAsset, child: Padding(
size: 128, padding: const EdgeInsets.all(16),
), child: Row(
title: Text(perfil.nombre), children: [
subtitle: Text('@${perfil.nick}'), AvatarFarolero(
trailing: const Icon(Icons.edit), texto: inicialPerfil,
onTap: () => _editarPerfil(context), assetPath: perfil.avatarAsset,
), size: 96,
), ),
const SizedBox(height: 12), const SizedBox(width: 16),
Expanded(
// Selector de idioma child: Column(
Card( crossAxisAlignment: CrossAxisAlignment.start,
child: Padding( children: [
padding: const EdgeInsets.all(16), Text(
child: Column( nombrePerfil,
crossAxisAlignment: CrossAxisAlignment.start, maxLines: 1,
children: [ overflow: TextOverflow.ellipsis,
Text(l10n.language, style: Theme.of(context).textTheme.titleLarge,
style: Theme.of(context).textTheme.titleLarge), ),
const SizedBox(height: 12), Text(
// Opción automática (sistema) '@${perfil.nick}',
_opcionIdioma( maxLines: 1,
context, overflow: TextOverflow.ellipsis,
bandera: '🌐', style: Theme.of(context).textTheme.bodyMedium,
nombre: 'Auto (${_nombreIdiomaDelSistema()})', ),
codigo: 'sistema', ],
seleccionado: servicioIdioma.codigoActual == 'sistema', ),
onTap: () => servicioIdioma.cambiarIdioma('sistema'), ),
const SizedBox(width: 12),
const Icon(Icons.edit),
],
), ),
const Divider(height: 1), ),
// Lista de idiomas
...ServicioIdioma.idiomasSoportados.entries.map((entrada) {
return _opcionIdioma(
context,
bandera: entrada.value.bandera,
nombre: entrada.value.nombre,
codigo: entrada.key,
seleccionado:
servicioIdioma.codigoActual == entrada.key,
onTap: () =>
servicioIdioma.cambiarIdioma(entrada.key),
);
}),
],
), ),
), ),
), const SizedBox(height: 12),
const SizedBox(height: 12), Card(
], child: Padding(
padding: const EdgeInsets.all(16),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
l10n.language,
style: Theme.of(context).textTheme.titleLarge,
),
const SizedBox(height: 12),
_opcionIdioma(
context,
bandera: '\u{1F310}',
nombre: '${l10n.automaticLanguage} (${_nombreIdiomaDelSistema()})',
codigo: 'sistema',
seleccionado: servicioIdioma.codigoActual == 'sistema',
onTap: () => servicioIdioma.cambiarIdioma('sistema'),
),
const Divider(height: 1),
...ServicioIdioma.idiomasSoportados.entries.map((entrada) {
return _opcionIdioma(
context,
bandera: entrada.value.bandera,
nombre: entrada.value.nombre,
codigo: entrada.key,
seleccionado: servicioIdioma.codigoActual == entrada.key,
onTap: () => servicioIdioma.cambiarIdioma(entrada.key),
);
}),
],
),
),
),
const SizedBox(height: 12),
],
), ),
), ),
), ),
@@ -112,6 +139,7 @@ class _PantallaAjustesState extends State<PantallaAjustes> {
} }
Future<void> _editarPerfil(BuildContext context) async { Future<void> _editarPerfil(BuildContext context) async {
final l10n = AppLocalizations.of(context)!;
final servicioPerfil = context.read<ServicioPerfilUsuario>(); final servicioPerfil = context.read<ServicioPerfilUsuario>();
final actual = servicioPerfil.perfil; final actual = servicioPerfil.perfil;
final nombreController = TextEditingController(text: actual.nombre); final nombreController = TextEditingController(text: actual.nombre);
@@ -122,7 +150,7 @@ class _PantallaAjustesState extends State<PantallaAjustes> {
context: context, context: context,
builder: (ctx) => StatefulBuilder( builder: (ctx) => StatefulBuilder(
builder: (ctx, setDialogState) => AlertDialog( builder: (ctx, setDialogState) => AlertDialog(
title: const Text('Perfil del dispositivo'), title: Text(l10n.deviceProfile),
content: SizedBox( content: SizedBox(
width: 520, width: 520,
child: SingleChildScrollView( child: SingleChildScrollView(
@@ -133,17 +161,17 @@ class _PantallaAjustesState extends State<PantallaAjustes> {
controller: nombreController, controller: nombreController,
textCapitalization: TextCapitalization.words, textCapitalization: TextCapitalization.words,
onChanged: (_) => setDialogState(() {}), onChanged: (_) => setDialogState(() {}),
decoration: const InputDecoration( decoration: InputDecoration(
labelText: 'Nombre', labelText: l10n.profileName,
prefixIcon: Icon(Icons.person), prefixIcon: const Icon(Icons.person),
), ),
), ),
const SizedBox(height: 12), const SizedBox(height: 12),
TextField( TextField(
controller: nickController, controller: nickController,
decoration: const InputDecoration( decoration: InputDecoration(
labelText: 'Nick', labelText: l10n.profileNick,
prefixIcon: Icon(Icons.alternate_email), prefixIcon: const Icon(Icons.alternate_email),
), ),
), ),
const SizedBox(height: 18), const SizedBox(height: 18),
@@ -152,43 +180,49 @@ class _PantallaAjustesState extends State<PantallaAjustes> {
? '?' ? '?'
: nombreController.text.substring(0, 1).toUpperCase(), : nombreController.text.substring(0, 1).toUpperCase(),
assetPath: avatarSeleccionado, assetPath: avatarSeleccionado,
size: 90, size: 112,
), ),
const SizedBox(height: 18), const SizedBox(height: 18),
GridView.builder( LayoutBuilder(
shrinkWrap: true, builder: (context, constraints) {
physics: const NeverScrollableScrollPhysics(), final columnas = constraints.maxWidth >= 420 ? 4 : 3;
gridDelegate: return GridView.builder(
const SliverGridDelegateWithFixedCrossAxisCount( shrinkWrap: true,
crossAxisCount: 4, physics: const NeverScrollableScrollPhysics(),
mainAxisSpacing: 12, gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisSpacing: 12, crossAxisCount: columnas,
), mainAxisSpacing: 14,
itemCount: ServicioPerfilUsuario.avatares.length, crossAxisSpacing: 14,
itemBuilder: (context, index) {
final avatar = ServicioPerfilUsuario.avatares[index];
final seleccionado = avatar == avatarSeleccionado;
return InkWell(
borderRadius: BorderRadius.circular(999),
onTap: () => setDialogState(
() => avatarSeleccionado = avatar,
), ),
child: Container( itemCount: ServicioPerfilUsuario.avatares.length,
decoration: BoxDecoration( itemBuilder: (context, index) {
shape: BoxShape.circle, final avatar = ServicioPerfilUsuario.avatares[index];
border: Border.all( final seleccionado = avatar == avatarSeleccionado;
color: seleccionado return InkWell(
? TemaApp.colorNaranja borderRadius: BorderRadius.circular(999),
: Colors.transparent, onTap: () => setDialogState(
width: 3, () => avatarSeleccionado = avatar,
), ),
), child: DecoratedBox(
child: AvatarFarolero( decoration: BoxDecoration(
texto: '', shape: BoxShape.circle,
assetPath: avatar, border: Border.all(
size: 72, color: seleccionado
), ? TemaApp.colorNaranja
), : Colors.transparent,
width: 3,
),
),
child: Center(
child: AvatarFarolero(
texto: '',
assetPath: avatar,
size: 86,
),
),
),
);
},
); );
}, },
), ),
@@ -199,7 +233,7 @@ class _PantallaAjustesState extends State<PantallaAjustes> {
actions: [ actions: [
TextButton( TextButton(
onPressed: () => Navigator.pop(ctx), onPressed: () => Navigator.pop(ctx),
child: const Text('Cancelar'), child: Text(l10n.cancel),
), ),
TextButton( TextButton(
onPressed: () async { onPressed: () async {
@@ -210,7 +244,7 @@ class _PantallaAjustesState extends State<PantallaAjustes> {
); );
if (ctx.mounted) Navigator.pop(ctx); if (ctx.mounted) Navigator.pop(ctx);
}, },
child: const Text('Guardar'), child: Text(l10n.save),
), ),
], ],
), ),
+9 -5
View File
@@ -490,11 +490,16 @@ class _PantallaCrearPartidaState extends State<PantallaCrearPartida> {
final esPerfilLocal = final esPerfilLocal =
e.key == 0 && e.value == nombrePerfil; e.key == 0 && e.value == nombrePerfil;
return ListTile( return ListTile(
minLeadingWidth: 62,
leading: esPerfilLocal leading: esPerfilLocal
? AvatarFarolero( ? SizedBox(
texto: inicialPerfil, width: 62,
assetPath: perfil.avatarAsset, height: 62,
size: 54, child: AvatarFarolero(
texto: inicialPerfil,
assetPath: perfil.avatarAsset,
size: 52,
),
) )
: CircleAvatar( : CircleAvatar(
backgroundColor: TemaApp.colorTarjeta, backgroundColor: TemaApp.colorTarjeta,
@@ -516,7 +521,6 @@ class _PantallaCrearPartidaState extends State<PantallaCrearPartida> {
), ),
onPressed: () => _eliminarJugador(e.key), onPressed: () => _eliminarJugador(e.key),
), ),
dense: true,
); );
}), }),
], ],
+141 -127
View File
@@ -49,142 +49,154 @@ class _PantallaLobbyHostState extends State<PantallaLobbyHost> {
), ),
body: FondoFarolero( body: FondoFarolero(
intenso: true, intenso: true,
child: Padding( child: SafeArea(
padding: const EdgeInsets.all(24), top: false,
child: Column( child: SingleChildScrollView(
children: [ padding: const EdgeInsets.fromLTRB(20, 20, 20, 24),
const _LobbySignalArt(), child: Center(
const SizedBox(height: 12), child: ConstrainedBox(
EncabezadoFarolero( constraints: const BoxConstraints(maxWidth: 480),
icono: Icons.wifi_tethering, child: Column(
titulo: widget.nombreSala, crossAxisAlignment: CrossAxisAlignment.stretch,
subtitulo: l10n.scanToJoin, children: [
), const _LobbySignalArt(),
const SizedBox(height: 14), const SizedBox(height: 12),
PanelFarolero( EncabezadoFarolero(
padding: const EdgeInsets.fromLTRB(16, 18, 16, 16), icono: Icons.wifi_tethering,
child: Column( titulo: widget.nombreSala,
children: [ subtitulo: l10n.scanToJoin,
SizedBox( ),
width: 236, const SizedBox(height: 14),
height: 236, PanelFarolero(
child: Stack( padding: const EdgeInsets.fromLTRB(18, 20, 18, 18),
alignment: Alignment.center, child: Column(
children: [ children: [
Positioned.fill( SizedBox(
child: IgnorePointer( width: 268,
child: Image.asset( height: 268,
'assets/ui/generated/join_lobby/qr_frame.png', child: Stack(
fit: BoxFit.contain, alignment: Alignment.center,
), children: [
), Positioned.fill(
), child: IgnorePointer(
Container( child: Image.asset(
width: 178, 'assets/ui/generated/join_lobby/qr_frame.png',
height: 178, fit: BoxFit.contain,
padding: const EdgeInsets.all(8), ),
decoration: BoxDecoration( ),
color: Colors.white, ),
borderRadius: BorderRadius.circular(12), Container(
boxShadow: [ width: 210,
BoxShadow( height: 210,
color: TemaApp.colorNaranja.withValues(alpha: 0.18), padding: const EdgeInsets.all(14),
blurRadius: 24, decoration: BoxDecoration(
color: Colors.white,
borderRadius: BorderRadius.circular(16),
border: Border.all(
color: TemaApp.colorDorado.withValues(alpha: 0.42),
width: 2,
),
boxShadow: [
BoxShadow(
color: TemaApp.colorNaranja.withValues(alpha: 0.20),
blurRadius: 24,
),
],
),
child: QrImageView(
data: nearby.generarDatosQR(widget.nombreSala),
version: QrVersions.auto,
size: 182,
backgroundColor: Colors.white,
),
), ),
], ],
), ),
child: QrImageView( ),
data: nearby.generarDatosQR(widget.nombreSala), const SizedBox(height: 10),
version: QrVersions.auto, Text(
size: 162, l10n.scanThisCodeFromAnotherPhone,
backgroundColor: Colors.white, style: Theme.of(context).textTheme.bodyMedium,
), textAlign: TextAlign.center,
), ),
], ],
), ),
), ),
const SizedBox(height: 10), const SizedBox(height: 16),
Text( _buildResumenSala(
l10n.scanThisCodeFromAnotherPhone, context,
style: Theme.of(context).textTheme.bodyMedium, l10n,
textAlign: TextAlign.center, seleccionados,
nearby.jugadores.length,
),
const SizedBox(height: 12),
Card(
child: Padding(
padding: const EdgeInsets.all(12),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
mainAxisSize: MainAxisSize.min,
children: [
Row(
children: [
Expanded(
child: Text(
l10n.gameUsers,
style: Theme.of(context).textTheme.titleLarge,
),
),
IconButton.filledTonal(
onPressed: () => _crearNuevoUsuario(context),
icon: const Icon(Icons.person_add),
),
],
),
const SizedBox(height: 8),
if (usuarios.isEmpty)
SizedBox(
height: 96,
child: Center(child: Text(l10n.waitingForPlayers)),
)
else
ListView.builder(
shrinkWrap: true,
physics: const NeverScrollableScrollPhysics(),
itemCount: usuarios.length,
itemBuilder: (context, index) => _buildUsuarioTile(
context,
l10n,
usuarios[index],
),
),
],
),
),
),
const SizedBox(height: 12),
if (!puedeIniciar)
Text(
_mensajeValidacion(validacionInicio?.codigo, l10n),
style: Theme.of(context)
.textTheme
.bodyMedium
?.copyWith(color: TemaApp.colorNaranja),
textAlign: TextAlign.center,
),
const SizedBox(height: 12),
BotonFarolero(
texto: _iniciando ? l10n.starting : l10n.startGame,
icono: Icons.play_arrow,
onPressed: puedeIniciar && !_iniciando
? () {
setState(() => _iniciando = true);
widget.onIniciar();
}
: null,
), ),
], ],
), ),
), ),
const SizedBox(height: 16), ),
_buildResumenSala(
context,
l10n,
seleccionados,
nearby.jugadores.length,
),
const SizedBox(height: 12),
Expanded(
child: Card(
child: Padding(
padding: const EdgeInsets.all(12),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Row(
children: [
Expanded(
child: Text(
l10n.gameUsers,
style: Theme.of(context).textTheme.titleLarge,
),
),
IconButton.filledTonal(
onPressed: () => _crearNuevoUsuario(context),
icon: const Icon(Icons.person_add),
),
],
),
const SizedBox(height: 8),
Expanded(
child: usuarios.isEmpty
? Center(child: Text(l10n.waitingForPlayers))
: ListView.builder(
itemCount: usuarios.length,
itemBuilder: (context, index) =>
_buildUsuarioTile(
context,
l10n,
usuarios[index],
),
),
),
],
),
),
),
),
const SizedBox(height: 12),
if (!puedeIniciar)
Text(
_mensajeValidacion(validacionInicio?.codigo, l10n),
style: Theme.of(context)
.textTheme
.bodyMedium
?.copyWith(color: TemaApp.colorNaranja),
textAlign: TextAlign.center,
),
const SizedBox(height: 12),
SizedBox(
width: double.infinity,
child: BotonFarolero(
texto: _iniciando ? l10n.starting : l10n.startGame,
icono: Icons.play_arrow,
onPressed: puedeIniciar && !_iniciando
? () {
setState(() => _iniciando = true);
widget.onIniciar();
}
: null,
),
),
],
), ),
), ),
), ),
@@ -276,8 +288,10 @@ class _PantallaLobbyHostState extends State<PantallaLobbyHost> {
usuario.estaSeleccionado && usuario.clienteIdSeleccionado != miClientId; usuario.estaSeleccionado && usuario.clienteIdSeleccionado != miClientId;
return ListTile( return ListTile(
leading: CircleAvatar( minLeadingWidth: 58,
backgroundColor: Colors.transparent, leading: SizedBox(
width: 58,
height: 58,
child: AvatarFarolero( child: AvatarFarolero(
texto: usuario.nombre.isEmpty ? '?' : usuario.nombre[0], texto: usuario.nombre.isEmpty ? '?' : usuario.nombre[0],
assetPath: usuario.avatar, assetPath: usuario.avatar,
@@ -286,7 +300,7 @@ class _PantallaLobbyHostState extends State<PantallaLobbyHost> {
: seleccionadoPorOtro : seleccionadoPorOtro
? TemaApp.colorNaranja ? TemaApp.colorNaranja
: TemaApp.colorAzul, : TemaApp.colorAzul,
size: 38, size: 48,
fuego: usuario.fuego, fuego: usuario.fuego,
medallas: usuario.medallas, medallas: usuario.medallas,
), ),
+11 -6
View File
@@ -866,12 +866,17 @@ class _PantallaUnirseState extends State<PantallaUnirse> {
usuario.estaSeleccionado && usuario.clienteIdSeleccionado != miClientId; usuario.estaSeleccionado && usuario.clienteIdSeleccionado != miClientId;
return ListTile( return ListTile(
leading: AvatarFarolero( minLeadingWidth: 58,
texto: usuario.nombre.isEmpty ? '?' : usuario.nombre[0], leading: SizedBox(
assetPath: usuario.avatar, width: 58,
size: 38, height: 58,
fuego: usuario.fuego, child: AvatarFarolero(
medallas: usuario.medallas, texto: usuario.nombre.isEmpty ? '?' : usuario.nombre[0],
assetPath: usuario.avatar,
size: 48,
fuego: usuario.fuego,
medallas: usuario.medallas,
),
), ),
title: Text(usuario.nombre), title: Text(usuario.nombre),
subtitle: Column( subtitle: Column(
+2 -1
View File
@@ -532,7 +532,8 @@ class AvatarFarolero extends StatelessWidget {
assetPath!, assetPath!,
width: size, width: size,
height: size, height: size,
fit: BoxFit.cover, fit: BoxFit.contain,
filterQuality: FilterQuality.high,
), ),
), ),
), ),
+5
View File
@@ -33,6 +33,11 @@ metadata:
8. **Avoid expensive composition.** Do not wrap large areas in `Opacity` when a semitransparent color/image or pre-baked alpha asset works. 8. **Avoid expensive composition.** Do not wrap large areas in `Opacity` when a semitransparent color/image or pre-baked alpha asset works.
9. **Plan before generating.** First write the layer list: filename, role, size, alpha requirement, anchor, and Flutter usage. 9. **Plan before generating.** First write the layer list: filename, role, size, alpha requirement, anchor, and Flutter usage.
10. **No placeholders in final premium work.** Generic icons, basic circles, simple radial glows, plain gradients, and procedural sparkles are acceptable only as temporary scaffolding. Replace them with generated art assets before claiming the screen is done. 10. **No placeholders in final premium work.** Generic icons, basic circles, simple radial glows, plain gradients, and procedural sparkles are acceptable only as temporary scaffolding. Replace them with generated art assets before claiming the screen is done.
11. **Generated frames are decoration, not layout.** Never stretch ornate button/card frames as functional backgrounds when they contain rails, gems, or ornaments that can cross text. Keep labels, icons, hit states, disabled states, and alignment in reusable Flutter components; put generated art behind or around them as a non-blocking layer.
12. **Preserve scrollability on mobile.** Any premium screen with variable content (users, avatars, settings, QR plus lists) must remain inside a `SingleChildScrollView` or have an explicit bounded internal scroll. Do not remove scroll by introducing full-height `Column` + `Expanded` layouts unless the content is guaranteed to fit.
13. **QR codes are functional, not decorative.** A QR must have a clean white quiet zone, enough padding, and no decorative overlay above the scannable pixels. Frames can sit behind or outside the white QR card, never over finder patterns.
14. **Avatars must not be clipped or tiny.** Do not place large avatars in `ListTile.leading` without explicit leading width/height. Use `BoxFit.contain` for generated avatar art, reserve enough tile height, and prefer visibly useful sizes (roughly 48-96 px in lists/cards, 86-112 px in pickers/previews).
15. **Localization is part of premium UI.** User-visible copy must go through the app localization system. For Spanish, use Spanish from Spain; avoid Rioplatense/Argentinian phrasing in app strings.
## Mandatory Image Generation Rule ## Mandatory Image Generation Rule