- Discovery: busca hosts cercanos automáticamente y los muestra en lista - Cada host aparece como tile tocable con nombre de la sala - QR fallback: botón 'Escanear QR' debajo de la lista - ServicioNearby: hostsEncontrados map, pararBusqueda(), no auto-connect - Flujo: nombre → buscar → lista de salas (o QR) → conectar → espera - l10n: searchGames, searchingGames, noGamesFound, orScanQR (es/en)
535 lines
14 KiB
Dart
535 lines
14 KiB
Dart
// ignore: unused_import
|
||
import 'package:intl/intl.dart' as intl;
|
||
import 'app_localizations.dart';
|
||
|
||
// ignore_for_file: type=lint
|
||
|
||
/// The translations for Japanese (`ja`).
|
||
class AppLocalizationsJa extends AppLocalizations {
|
||
AppLocalizationsJa([String locale = 'ja']) : super(locale);
|
||
|
||
@override
|
||
String get appTitle => 'インポスター';
|
||
|
||
@override
|
||
String get subtitle => '正体推理ゲーム';
|
||
|
||
@override
|
||
String get loadingWords => 'ワードを読み込み中...';
|
||
|
||
@override
|
||
String get playersRange => '3-20人 • インターネット不要';
|
||
|
||
@override
|
||
String get createGame => 'ゲームを作成';
|
||
|
||
@override
|
||
String get joinGame => 'ゲームに参加';
|
||
|
||
@override
|
||
String get howToPlay => '遊び方';
|
||
|
||
@override
|
||
String get settings => '設定';
|
||
|
||
@override
|
||
String get gameMode => 'ゲームモード';
|
||
|
||
@override
|
||
String get singleDevice => '1台で遊ぶ';
|
||
|
||
@override
|
||
String get multiDevice => '複数台で遊ぶ';
|
||
|
||
@override
|
||
String get category => 'カテゴリー';
|
||
|
||
@override
|
||
String get categoryAll => 'すべて';
|
||
|
||
@override
|
||
String get categoryAnimals => '動物';
|
||
|
||
@override
|
||
String get categoryFood => '食べ物';
|
||
|
||
@override
|
||
String get categoryCountries => '国';
|
||
|
||
@override
|
||
String get categorySports => 'スポーツ';
|
||
|
||
@override
|
||
String get categoryProfessions => '職業';
|
||
|
||
@override
|
||
String get categoryObjects => '物';
|
||
|
||
@override
|
||
String get categoryPlaces => '場所';
|
||
|
||
@override
|
||
String get categoryMovies => '映画';
|
||
|
||
@override
|
||
String get categoryMusic => '音楽';
|
||
|
||
@override
|
||
String get categoryTechnology => 'テクノロジー';
|
||
|
||
@override
|
||
String playersCount(int count) {
|
||
return 'プレイヤー ($count)';
|
||
}
|
||
|
||
@override
|
||
String get playersRangeHint => '3-20';
|
||
|
||
@override
|
||
String get playerNameHint => 'プレイヤー名';
|
||
|
||
@override
|
||
String get playerAlreadyExists => '同じ名前のプレイヤーがすでにいます';
|
||
|
||
@override
|
||
String get maxPlayersReached => '最大20人までです';
|
||
|
||
@override
|
||
String get minPlayersRequired => '最低3人必要です';
|
||
|
||
@override
|
||
String get configuration => '設定';
|
||
|
||
@override
|
||
String get impostors => '🎭 インポスター';
|
||
|
||
@override
|
||
String get impostorClue => '🔍 インポスターへのヒント';
|
||
|
||
@override
|
||
String get impostorClueDescription => 'インポスターにカテゴリーが表示されます';
|
||
|
||
@override
|
||
String get debateTime => '⏱️ 議論の時間';
|
||
|
||
@override
|
||
String get noLimit => '制限なし';
|
||
|
||
@override
|
||
String get oneMin => '1分';
|
||
|
||
@override
|
||
String get twoMin => '2分';
|
||
|
||
@override
|
||
String get threeMin => '3分';
|
||
|
||
@override
|
||
String get fiveMin => '5分';
|
||
|
||
@override
|
||
String get startGame => 'ゲーム開始';
|
||
|
||
@override
|
||
String get seeYourWord => '自分のワードを見る';
|
||
|
||
@override
|
||
String get eachPlayerMustSee => '各プレイヤーは秘密にワードを確認してください';
|
||
|
||
@override
|
||
String roundNumber(int round) {
|
||
return 'ラウンド $round';
|
||
}
|
||
|
||
@override
|
||
String get alreadySeen => 'ワードを確認済み';
|
||
|
||
@override
|
||
String get tapToSee => 'タップして確認';
|
||
|
||
@override
|
||
String get allSeenStartDebate => '全員確認済み → 議論を開始';
|
||
|
||
@override
|
||
String playersRemaining(int count) {
|
||
return '残り $count 人';
|
||
}
|
||
|
||
@override
|
||
String get youAreImpostor => 'あなたはインポスターです!';
|
||
|
||
@override
|
||
String get yourWordIs => 'あなたのワード:';
|
||
|
||
@override
|
||
String clueCategory(String category) {
|
||
return 'ヒント: $category';
|
||
}
|
||
|
||
@override
|
||
String get holdToSeeWord => '長押しでワードを確認';
|
||
|
||
@override
|
||
String get makeSureNoOneLooks => '他の人に見られないようにしてください';
|
||
|
||
@override
|
||
String get showingWord => '👁️ 表示中...';
|
||
|
||
@override
|
||
String get holdToSee => '👆 長押しで確認';
|
||
|
||
@override
|
||
String get seenMyWord => 'ワードを確認しました';
|
||
|
||
@override
|
||
String debateRound(int round) {
|
||
return '議論 - ラウンド $round';
|
||
}
|
||
|
||
@override
|
||
String get timeUp => '⏰ 時間切れ!';
|
||
|
||
@override
|
||
String get timeRemaining => '⏱️ 残り時間';
|
||
|
||
@override
|
||
String get playersInDebate => '議論中のプレイヤー';
|
||
|
||
@override
|
||
String activePlayersInfo(int active, int impostors) {
|
||
return '$active 人参加中 • $impostors 人のインポスターが潜伏中';
|
||
}
|
||
|
||
@override
|
||
String get eliminated => '脱落';
|
||
|
||
@override
|
||
String get notes => 'メモ';
|
||
|
||
@override
|
||
String get goToVoting => '投票へ進む';
|
||
|
||
@override
|
||
String get voting => '🗳️ 投票';
|
||
|
||
@override
|
||
String get turnToVote => '投票の番:';
|
||
|
||
@override
|
||
String votesProgress(int current, int total) {
|
||
return '投票: $current/$total';
|
||
}
|
||
|
||
@override
|
||
String get whoIsImpostor => '誰がインポスターだと思いますか?';
|
||
|
||
@override
|
||
String get confirmVote => '投票を確定';
|
||
|
||
@override
|
||
String get votingComplete => '🗳️ 投票完了';
|
||
|
||
@override
|
||
String get allVoted => '全員が投票しました!';
|
||
|
||
@override
|
||
String get tapToReveal => 'タップして結果を見る';
|
||
|
||
@override
|
||
String get revealResult => '結果を発表';
|
||
|
||
@override
|
||
String get result => '結果';
|
||
|
||
@override
|
||
String get revealing => '発表中...';
|
||
|
||
@override
|
||
String get wasImpostor => 'インポスターでした! 🎉';
|
||
|
||
@override
|
||
String get wasInnocent => '一般市民でした 😱';
|
||
|
||
@override
|
||
String get votesThisRound => 'このラウンドの投票';
|
||
|
||
@override
|
||
String get seeEndResult => '最終結果を見る';
|
||
|
||
@override
|
||
String get impostorGuessWord => 'インポスターがワードを当てる?';
|
||
|
||
@override
|
||
String get nextRound => '次のラウンドへ';
|
||
|
||
@override
|
||
String get impostorGuessTitle => '🎯 インポスターの推理';
|
||
|
||
@override
|
||
String get impostorCanGuess => '脱落したインポスターは\nワードを当てることができます';
|
||
|
||
@override
|
||
String get ifCorrectImpostorsWin => '正解すればインポスターの勝ちです!';
|
||
|
||
@override
|
||
String get guessWordHint => 'ワードは何だと思いますか?';
|
||
|
||
@override
|
||
String get dontGuess => '推理しない';
|
||
|
||
@override
|
||
String get guess => '当てる';
|
||
|
||
@override
|
||
String get correctGuess => '正解!';
|
||
|
||
@override
|
||
String theWordWas(String word) {
|
||
return 'ワードは: $word';
|
||
}
|
||
|
||
@override
|
||
String get impostorsWin => 'インポスターの勝利!';
|
||
|
||
@override
|
||
String get wrongGuess => '不正解!';
|
||
|
||
@override
|
||
String get gameContinues => 'ゲームは続きます...';
|
||
|
||
@override
|
||
String get gameOver => 'ゲーム終了';
|
||
|
||
@override
|
||
String get playersWin => 'プレイヤーの勝利!';
|
||
|
||
@override
|
||
String get theSecretWordWas => '🔍 ワードは:';
|
||
|
||
@override
|
||
String categoryLabel(String category) {
|
||
return 'カテゴリー: $category';
|
||
}
|
||
|
||
@override
|
||
String get theImpostorWas => '🎭 インポスターは:';
|
||
|
||
@override
|
||
String get theImpostorsWere => '🎭 インポスターたちは:';
|
||
|
||
@override
|
||
String get votingHistory => '📊 投票の履歴';
|
||
|
||
@override
|
||
String roundElimination(int round, String name) {
|
||
return 'ラウンド $round: $name';
|
||
}
|
||
|
||
@override
|
||
String get rematch => 'もう一度';
|
||
|
||
@override
|
||
String get mainMenu => 'メインメニュー';
|
||
|
||
@override
|
||
String get notesTitle => '📝 メモ';
|
||
|
||
@override
|
||
String get notesSaved => 'メモを保存しました';
|
||
|
||
@override
|
||
String get whoAreYou => 'あなたは誰?';
|
||
|
||
@override
|
||
String get selectYourName => '名前を選んで自分のメモを見る';
|
||
|
||
@override
|
||
String notesOf(String name) {
|
||
return '$nameのメモ';
|
||
}
|
||
|
||
@override
|
||
String get notesAboutPlayers => '各プレイヤーについてのメモ';
|
||
|
||
@override
|
||
String get playerNoteHint => '何を言った?怪しい?';
|
||
|
||
@override
|
||
String get freeNote => 'フリーメモ';
|
||
|
||
@override
|
||
String get freeNoteHint => '個人メモ...';
|
||
|
||
@override
|
||
String get rulesTitle => '📖 遊び方';
|
||
|
||
@override
|
||
String get rulesWhatIsTitle => '🎭 インポスターとは?';
|
||
|
||
@override
|
||
String get rulesWhatIsBody =>
|
||
'3〜20人で遊べる正体推理ゲームです。全員にお題のワードが配られますが…インポスターだけは知りません!あなたの使命:誰がなりすましているかを見抜くことです。';
|
||
|
||
@override
|
||
String get rulesHowToPlayTitle => '🔍 遊び方は?';
|
||
|
||
@override
|
||
String get rulesHowToPlayBody =>
|
||
'1. 役割の配布:全員に同じワードが配られますが、インポスターには配られません。\n\n2. 議論:順番に、各プレイヤーがワードを直接言わずに説明します。インポスターは知っているフリをしなければなりません。\n\n3. 投票:議論が終わったら、全員がインポスターだと思う人に投票します。\n\n4. 脱落:最も票を集めた人が脱落し、インポスターかどうかが明かされます。\n\n5. インポスターだった場合、ワードを当てるチャンスがあります。当たればインポスターの勝ち!';
|
||
|
||
@override
|
||
String get rulesWhoWinsTitle => '🏆 誰が勝つ?';
|
||
|
||
@override
|
||
String get rulesWhoWinsBody =>
|
||
'• プレイヤー:すべてのインポスターを脱落させれば勝利。\n• インポスター:正体がバレずに一般プレイヤーと同数以下になるまで残れば勝利。また、脱落時にワードを当てても勝利。';
|
||
|
||
@override
|
||
String get rulesTipsPlayersTitle => '💡 プレイヤーへのアドバイス';
|
||
|
||
@override
|
||
String get rulesTipsPlayersBody =>
|
||
'• ワードを知っていると証明できるさりげないヒントを出しましょう。ただし、インポスターに利用されるほど分かりやすくしないこと。\n• 曖昧で抽象的な回答をする人に注目しましょう。\n• メモを活用して各自の発言を記録しましょう。\n• ワードを直接言ってはいけません。インポスターを助けることになります!';
|
||
|
||
@override
|
||
String get rulesTipsImpostorTitle => '🎭 インポスターへのアドバイス';
|
||
|
||
@override
|
||
String get rulesTipsImpostorBody =>
|
||
'• 他のプレイヤーのヒントをよく聞きましょう。\n• ワードを推測して、もっともらしいヒントを出しましょう。\n• 自信がなければ最初に話さないようにしましょう。\n• カテゴリーがヒントとして出されたら、それを利用しましょう。\n• 他の人を疑って注意をそらしましょう。';
|
||
|
||
@override
|
||
String get rulesModesTitle => '📱 ゲームモード';
|
||
|
||
@override
|
||
String get rulesModesBody =>
|
||
'• 1台で遊ぶ:端末を全員で共有します。各プレイヤーはボタンを長押しして自分のワードを確認します。\n\n• 複数台で遊ぶ:各プレイヤーが自分の端末を使います。Bluetooth/WiFi Directで接続、インターネット不要。';
|
||
|
||
@override
|
||
String get rulesExampleTitle => '✏️ ゲームの例';
|
||
|
||
@override
|
||
String get rulesExampleBody =>
|
||
'お題のワード:「ピザ」\n\n• さくら:「温かいうちに食べる」 ✓\n• たくや:「箱に入って届く」 ✓\n• ゆい(インポスター):「とても人気がある」 🤔\n• けんと:「チーズがのっている」 ✓\n\nゆいの答えはあまりにも曖昧... 怪しい!';
|
||
|
||
@override
|
||
String get joinGameTitle => 'ゲームに参加';
|
||
|
||
@override
|
||
String get multiDeviceMode => '複数台モード';
|
||
|
||
@override
|
||
String get scanQrDescription =>
|
||
'ホストが表示するQRコードをスキャンして、Bluetooth/WiFi Direct経由でゲームに接続します。';
|
||
|
||
@override
|
||
String get comingSoon => '近日公開';
|
||
|
||
@override
|
||
String get nearbyNotAvailable =>
|
||
'複数台接続のNearby Connectionsには、物理的なAndroid端末が必要です。\n\n現時点では「1台で遊ぶ」モードをご利用ください。';
|
||
|
||
@override
|
||
String get back => '戻る';
|
||
|
||
@override
|
||
String get yes => 'はい';
|
||
|
||
@override
|
||
String get no => 'いいえ';
|
||
|
||
@override
|
||
String get cancel => 'キャンセル';
|
||
|
||
@override
|
||
String get accept => 'OK';
|
||
|
||
@override
|
||
String get next => '次へ';
|
||
|
||
@override
|
||
String get settingsTitle => '設定';
|
||
|
||
@override
|
||
String get language => '言語';
|
||
|
||
@override
|
||
String get soundVolume => '効果音の音量';
|
||
|
||
@override
|
||
String get vibration => 'バイブレーション';
|
||
|
||
@override
|
||
String get about => 'アプリについて';
|
||
|
||
@override
|
||
String get version => 'バージョン';
|
||
|
||
@override
|
||
String get developer => '開発者';
|
||
|
||
@override
|
||
String get licenses => 'ライセンス';
|
||
|
||
@override
|
||
String get scanToJoin => 'Escanea el QR para unirte';
|
||
|
||
@override
|
||
String get connectedPlayers => 'Jugadores conectados';
|
||
|
||
@override
|
||
String get waitingForPlayers => 'Esperando jugadores...';
|
||
|
||
@override
|
||
String needMorePlayers(int count) {
|
||
return 'Faltan $count jugadores más';
|
||
}
|
||
|
||
@override
|
||
String get starting => 'Iniciando...';
|
||
|
||
@override
|
||
String get enterNameAndScan => 'Escribe tu nombre y escanea el QR del host';
|
||
|
||
@override
|
||
String get yourName => 'Tu nombre';
|
||
|
||
@override
|
||
String get nameRequired => 'Escribe tu nombre';
|
||
|
||
@override
|
||
String get connectingTo => 'Conectando a';
|
||
|
||
@override
|
||
String get scanQR => 'Escanear QR';
|
||
|
||
@override
|
||
String get scanHostQR => 'Apunta al QR del host';
|
||
|
||
@override
|
||
String get connectedWaiting => '¡Conectado!';
|
||
|
||
@override
|
||
String get waitingForHost => 'Esperando a que el host inicie la partida...';
|
||
|
||
@override
|
||
String get enterNameToSearch =>
|
||
'Escribe tu nombre para buscar partidas cercanas';
|
||
|
||
@override
|
||
String get searchGames => 'Buscar partidas';
|
||
|
||
@override
|
||
String get searchingGames => 'Buscando partidas cercanas...';
|
||
|
||
@override
|
||
String get noGamesFound => 'No se encontraron partidas';
|
||
|
||
@override
|
||
String get noGamesFoundHint =>
|
||
'Asegúrate de que el host tiene la sala abierta y estáis cerca';
|
||
|
||
@override
|
||
String get orScanQR => '¿No aparece? Escanea el QR del host';
|
||
}
|