Exit confirmation - A dialog in the app's own style now guards every in-game screen. The safe action is the prominent one, so a stray tap keeps you in the game. - Eleven screens covered, against both the system back gesture and the close buttons. The message adapts: a single-device game is lost, a host ends it for everyone, a client can rejoin. - The two screens the host also opens from the manager take a flag so that back there just closes them instead of offering to quit. Translations - 21 keys were still holding the English text in Arabic, Basque, Hindi, Japanese, Korean, Dutch, Polish, Russian, Turkish and both Chinese variants: 231 strings, covering the whole multi-device flow, permissions and the mode picker. Nothing failed, the app just showed English. - The permissions dialog was hardcoded in Spanish; it is localized now. - Portuguese used Spanish gerunds where pt-PT takes "a + infinitive". Checked what looked untranslated but is not: Animals and Notes are correct Catalan, Configuration and Vibration correct French, Version correct German. Those are whitelisted in the new test rather than silently rewritten. l10n_cobertura_test guards all of it: no missing or orphan keys, no empty values, no English left outside the whitelist, and placeholders preserved.
387 lines
18 KiB
Plaintext
387 lines
18 KiB
Plaintext
{
|
|
"@@locale": "ja",
|
|
"appTitle": "インポスター",
|
|
"subtitle": "正体推理ゲーム",
|
|
"loadingWords": "ワードを読み込み中...",
|
|
"matchRewards": "ゲーム報酬",
|
|
"newMedals": "新しいメダル",
|
|
"noNewMedalsKeepFire": "今回は新しいメダルはありません。炎を積み上げ続けましょう。",
|
|
"calculatingRewards": "報酬を計算中...",
|
|
"fireLabel": "炎",
|
|
"playersRange": "3-20人 • インターネット不要",
|
|
"createGame": "ゲームを作成",
|
|
"joinGame": "ゲームに参加",
|
|
"howToPlay": "遊び方",
|
|
"settings": "設定",
|
|
"gameMode": "ゲームモード",
|
|
"singleDevice": "1台で遊ぶ",
|
|
"multiDevice": "複数台で遊ぶ",
|
|
"category": "カテゴリー",
|
|
"categoryAll": "すべて",
|
|
"categoryAnimals": "動物",
|
|
"categoryFood": "食べ物",
|
|
"categoryCountries": "国",
|
|
"categorySports": "スポーツ",
|
|
"categoryProfessions": "職業",
|
|
"categoryObjects": "物",
|
|
"categoryPlaces": "場所",
|
|
"categoryMovies": "映画",
|
|
"categoryMusic": "音楽",
|
|
"categoryTechnology": "テクノロジー",
|
|
"playersCount": "プレイヤー ({count})",
|
|
"@playersCount": {
|
|
"placeholders": {
|
|
"count": {
|
|
"type": "int"
|
|
}
|
|
}
|
|
},
|
|
"playersRangeHint": "3-20",
|
|
"playerNameHint": "プレイヤー名",
|
|
"playerAlreadyExists": "同じ名前のプレイヤーがすでにいます",
|
|
"maxPlayersReached": "最大20人までです",
|
|
"minPlayersRequired": "最低3人必要です",
|
|
"configuration": "設定",
|
|
"impostors": "🎭 インポスター",
|
|
"impostorClue": "🔍 インポスターへのヒント",
|
|
"impostorClueDescription": "インポスターにカテゴリーが表示されます",
|
|
"debateTime": "⏱️ 議論の時間",
|
|
"noLimit": "制限なし",
|
|
"oneMin": "1分",
|
|
"twoMin": "2分",
|
|
"threeMin": "3分",
|
|
"fiveMin": "5分",
|
|
"startGame": "ゲーム開始",
|
|
"seeYourWord": "自分のワードを見る",
|
|
"eachPlayerMustSee": "各プレイヤーは秘密にワードを確認してください",
|
|
"roundNumber": "ラウンド {round}",
|
|
"@roundNumber": {
|
|
"placeholders": {
|
|
"round": {
|
|
"type": "int"
|
|
}
|
|
}
|
|
},
|
|
"alreadySeen": "ワードを確認済み",
|
|
"tapToSee": "タップして確認",
|
|
"allSeenStartDebate": "全員確認済み → 議論を開始",
|
|
"playersRemaining": "残り {count} 人",
|
|
"@playersRemaining": {
|
|
"placeholders": {
|
|
"count": {
|
|
"type": "int"
|
|
}
|
|
}
|
|
},
|
|
"youAreImpostor": "あなたはインポスターです!",
|
|
"yourWordIs": "あなたのワード:",
|
|
"clueCategory": "ヒント: {category}",
|
|
"@clueCategory": {
|
|
"placeholders": {
|
|
"category": {
|
|
"type": "String"
|
|
}
|
|
}
|
|
},
|
|
"holdToSeeWord": "長押しでワードを確認",
|
|
"makeSureNoOneLooks": "他の人に見られないようにしてください",
|
|
"showingWord": "👁️ 表示中...",
|
|
"holdToSee": "👆 長押しで確認",
|
|
"seenMyWord": "ワードを確認しました",
|
|
"debateRound": "議論 - ラウンド {round}",
|
|
"@debateRound": {
|
|
"placeholders": {
|
|
"round": {
|
|
"type": "int"
|
|
}
|
|
}
|
|
},
|
|
"timeUp": "⏰ 時間切れ!",
|
|
"timeRemaining": "⏱️ 残り時間",
|
|
"playersInDebate": "議論中のプレイヤー",
|
|
"activePlayersInfo": "{active} 人参加中 • {impostors} 人のインポスターが潜伏中",
|
|
"@activePlayersInfo": {
|
|
"placeholders": {
|
|
"active": {
|
|
"type": "int"
|
|
},
|
|
"impostors": {
|
|
"type": "int"
|
|
}
|
|
}
|
|
},
|
|
"eliminated": "脱落",
|
|
"notes": "メモ",
|
|
"goToVoting": "投票へ進む",
|
|
"voting": "🗳️ 投票",
|
|
"turnToVote": "投票の番:",
|
|
"votesProgress": "投票: {current}/{total}",
|
|
"@votesProgress": {
|
|
"placeholders": {
|
|
"current": {
|
|
"type": "int"
|
|
},
|
|
"total": {
|
|
"type": "int"
|
|
}
|
|
}
|
|
},
|
|
"whoIsImpostor": "誰がインポスターだと思いますか?",
|
|
"confirmVote": "投票を確定",
|
|
"votingComplete": "🗳️ 投票完了",
|
|
"allVoted": "全員が投票しました!",
|
|
"tapToReveal": "タップして結果を見る",
|
|
"revealResult": "結果を発表",
|
|
"result": "結果",
|
|
"revealing": "発表中...",
|
|
"wasImpostor": "インポスターでした! 🎉",
|
|
"wasInnocent": "一般市民でした 😱",
|
|
"votesThisRound": "このラウンドの投票",
|
|
"seeEndResult": "最終結果を見る",
|
|
"impostorGuessWord": "インポスターがワードを当てる?",
|
|
"nextRound": "次のラウンドへ",
|
|
"impostorGuessTitle": "🎯 インポスターの推理",
|
|
"impostorCanGuess": "脱落したインポスターは\nワードを当てることができます",
|
|
"ifCorrectImpostorsWin": "正解すればインポスターの勝ちです!",
|
|
"guessWordHint": "ワードは何だと思いますか?",
|
|
"dontGuess": "推理しない",
|
|
"guess": "当てる",
|
|
"correctGuess": "正解!",
|
|
"theWordWas": "ワードは: {word}",
|
|
"@theWordWas": {
|
|
"placeholders": {
|
|
"word": {
|
|
"type": "String"
|
|
}
|
|
}
|
|
},
|
|
"impostorsWin": "インポスターの勝利!",
|
|
"wrongGuess": "不正解!",
|
|
"gameContinues": "ゲームは続きます...",
|
|
"gameOver": "ゲーム終了",
|
|
"playersWin": "プレイヤーの勝利!",
|
|
"theSecretWordWas": "🔍 ワードは:",
|
|
"categoryLabel": "カテゴリー: {category}",
|
|
"@categoryLabel": {
|
|
"placeholders": {
|
|
"category": {
|
|
"type": "String"
|
|
}
|
|
}
|
|
},
|
|
"theImpostorWas": "🎭 インポスターは:",
|
|
"theImpostorsWere": "🎭 インポスターたちは:",
|
|
"votingHistory": "📊 投票の履歴",
|
|
"roundElimination": "ラウンド {round}: {name}",
|
|
"@roundElimination": {
|
|
"placeholders": {
|
|
"round": {
|
|
"type": "int"
|
|
},
|
|
"name": {
|
|
"type": "String"
|
|
}
|
|
}
|
|
},
|
|
"rematch": "もう一度",
|
|
"mainMenu": "メインメニュー",
|
|
"notesTitle": "📝 メモ",
|
|
"notesSaved": "メモを保存しました",
|
|
"whoAreYou": "あなたは誰?",
|
|
"selectYourName": "名前を選んで自分のメモを見る",
|
|
"notesOf": "{name}のメモ",
|
|
"@notesOf": {
|
|
"placeholders": {
|
|
"name": {
|
|
"type": "String"
|
|
}
|
|
}
|
|
},
|
|
"notesAboutPlayers": "各プレイヤーについてのメモ",
|
|
"playerNoteHint": "何を言った?怪しい?",
|
|
"freeNote": "フリーメモ",
|
|
"freeNoteHint": "個人メモ...",
|
|
"rulesTitle": "📖 遊び方",
|
|
"rulesWhatIsTitle": "🎭 インポスターとは?",
|
|
"rulesWhatIsBody": "3〜20人で遊べる正体推理ゲームです。全員にお題のワードが配られますが…インポスターだけは知りません!あなたの使命:誰がなりすましているかを見抜くことです。",
|
|
"rulesHowToPlayTitle": "🔍 遊び方は?",
|
|
"rulesHowToPlayBody": "1. 役割の配布:全員に同じワードが配られますが、インポスターには配られません。\n\n2. 議論:順番に、各プレイヤーがワードを直接言わずに説明します。インポスターは知っているフリをしなければなりません。\n\n3. 投票:議論が終わったら、全員がインポスターだと思う人に投票します。\n\n4. 脱落:最も票を集めた人が脱落し、インポスターかどうかが明かされます。\n\n5. インポスターだった場合、ワードを当てるチャンスがあります。当たればインポスターの勝ち!",
|
|
"rulesWhoWinsTitle": "🏆 誰が勝つ?",
|
|
"rulesWhoWinsBody": "• プレイヤー:すべてのインポスターを脱落させれば勝利。\n• インポスター:正体がバレずに一般プレイヤーと同数以下になるまで残れば勝利。また、脱落時にワードを当てても勝利。",
|
|
"rulesTipsPlayersTitle": "💡 プレイヤーへのアドバイス",
|
|
"rulesTipsPlayersBody": "• ワードを知っていると証明できるさりげないヒントを出しましょう。ただし、インポスターに利用されるほど分かりやすくしないこと。\n• 曖昧で抽象的な回答をする人に注目しましょう。\n• メモを活用して各自の発言を記録しましょう。\n• ワードを直接言ってはいけません。インポスターを助けることになります!",
|
|
"rulesTipsImpostorTitle": "🎭 インポスターへのアドバイス",
|
|
"rulesTipsImpostorBody": "• 他のプレイヤーのヒントをよく聞きましょう。\n• ワードを推測して、もっともらしいヒントを出しましょう。\n• 自信がなければ最初に話さないようにしましょう。\n• カテゴリーがヒントとして出されたら、それを利用しましょう。\n• 他の人を疑って注意をそらしましょう。",
|
|
"rulesModesTitle": "📱 ゲームモード",
|
|
"rulesModesBody": "• 1台で遊ぶ:端末を全員で共有します。各プレイヤーはボタンを長押しして自分のワードを確認します。\n\n• 複数台で遊ぶ:各プレイヤーが自分の端末を使います。Bluetooth/WiFi Directで接続、インターネット不要。",
|
|
"rulesExampleTitle": "✏️ ゲームの例",
|
|
"rulesExampleBody": "お題のワード:「ピザ」\n\n• さくら:「温かいうちに食べる」 ✓\n• たくや:「箱に入って届く」 ✓\n• ゆい(インポスター):「とても人気がある」 🤔\n• けんと:「チーズがのっている」 ✓\n\nゆいの答えはあまりにも曖昧... 怪しい!",
|
|
"joinGameTitle": "ゲームに参加",
|
|
"multiDeviceMode": "複数台モード",
|
|
"scanQrDescription": "ホストが表示するQRコードをスキャンして、Bluetooth/WiFi Direct経由でゲームに接続します。",
|
|
"comingSoon": "近日公開",
|
|
"nearbyNotAvailable": "複数台接続のNearby Connectionsには、物理的なAndroid端末が必要です。\n\n現時点では「1台で遊ぶ」モードをご利用ください。",
|
|
"back": "戻る",
|
|
"yes": "はい",
|
|
"no": "いいえ",
|
|
"cancel": "キャンセル",
|
|
"accept": "OK",
|
|
"next": "次へ",
|
|
"settingsTitle": "設定",
|
|
"language": "言語",
|
|
"soundVolume": "効果音の音量",
|
|
"vibration": "バイブレーション",
|
|
"about": "アプリについて",
|
|
"version": "バージョン",
|
|
"developer": "開発者",
|
|
"licenses": "ライセンス",
|
|
"scanThisCodeFromAnotherPhone": "別のスマートフォンでこのコードをスキャン",
|
|
"gameUsers": "ゲームのユーザー",
|
|
"selectedPlayers": "選択済みプレイヤー",
|
|
"connectedPhones": "接続中のスマートフォン",
|
|
"selectedOnThisPhone": "このスマートフォンで選択済み",
|
|
"selectedByAnotherDevice": "別の端末で選択済み",
|
|
"available": "利用可能",
|
|
"notAvailable": "利用不可",
|
|
"release": "解除",
|
|
"select": "選択",
|
|
"delete": "削除",
|
|
"selectAtLeastThreeUsersToStart": "開始するには3人以上のユーザーを選んでください。",
|
|
"hostPhoneMustSelectUser": "ホストの端末は少なくとも1人のユーザーを選ぶ必要があります。",
|
|
"roomNoLongerInLobby": "ルームはすでにロビーにありません。",
|
|
"completeUserSelectionToStart": "開始するにはユーザーの選択を完了してください。",
|
|
"preparingSecureRoom": "安全なルームを準備しています",
|
|
"searchingNearbyBluetoothGames": "Bluetoothで近くのゲームを検索しています",
|
|
"tapToJoin": "タップして参加",
|
|
"bluetoothLocationPermissionsRequired": "ゲームを検索するにはBluetoothと位置情報の許可が必要です。",
|
|
"bluetoothLocationPermissionsShort": "Bluetoothと位置情報の許可が必要です",
|
|
"couldNotStartSearch": "検索を開始できませんでした。Bluetoothと位置情報を確認してください。",
|
|
"couldNotConnectToHost": "{host} に接続できませんでした",
|
|
"room": "ルーム",
|
|
"singleDeviceSubtitle": "この端末でプレイ",
|
|
"singleDeviceDescription": "端末を回しながらみんなで遊ぶのに最適。設定はすばやく簡単。",
|
|
"multiDeviceSubtitle": "プレイヤーごとに自分の端末で",
|
|
"multiDeviceDescription": "プレミアムなルームを作り、QRコードを共有し、ロビーからユーザーを管理します。",
|
|
"singleDeviceGameLabel": "この端末でのゲーム",
|
|
"multiDeviceGameLabel": "マルチデバイスのゲーム",
|
|
"mainDeviceUser": "この端末のメインユーザー",
|
|
"couldNotCreateRoom": "ルームを作成できませんでした。Bluetoothを確認してください。",
|
|
"cannotStartWithReason": "開始できません: {reason}",
|
|
"invalidRoom": "無効なルーム",
|
|
"defaultPlayerName": "プレイヤー",
|
|
"play": "プレイ",
|
|
"history": "履歴",
|
|
"mainTagline": "手遅れになる前にインポスターを見つけよう",
|
|
"deviceProfile": "デバイスプロフィール",
|
|
"profileName": "名前",
|
|
"profileNick": "ニックネーム",
|
|
"save": "保存",
|
|
"automaticLanguage": "自動",
|
|
"noSavedGames": "保存されたゲームはまだありません。",
|
|
"errorNoGame": "エラー: ゲームがありません",
|
|
"disconnectedPlayersWarning": "接続が切れた端末のプレイヤーがいます。",
|
|
"assumeOnThisPhone": "このスマホで引き継ぐ",
|
|
"noResult": "結果なし",
|
|
"historyGameSummary": "$players人 • インポスター$impostors人 • $roundsラウンド\n$word • $category",
|
|
"@historyGameSummary": {
|
|
"placeholders": {
|
|
"players": {
|
|
"type": "int"
|
|
},
|
|
"impostors": {
|
|
"type": "int"
|
|
},
|
|
"rounds": {
|
|
"type": "int"
|
|
},
|
|
"word": {
|
|
"type": "String"
|
|
},
|
|
"category": {
|
|
"type": "String"
|
|
}
|
|
}
|
|
},
|
|
"voteOf": "{name} の投票",
|
|
"@voteOf": {
|
|
"placeholders": {
|
|
"name": {
|
|
"type": "String"
|
|
}
|
|
}
|
|
},
|
|
"firstTurnInstruction": "{name} が自分のワードを言って始めます。",
|
|
"@firstTurnInstruction": {
|
|
"placeholders": {
|
|
"name": {
|
|
"type": "String"
|
|
}
|
|
}
|
|
},
|
|
"debate": "🗣️ 議論",
|
|
"scanToJoin": "QRコードをスキャンして参加",
|
|
"connectedPlayers": "接続中のプレイヤー",
|
|
"hostGame": "ゲーム管理",
|
|
"waitingPlayersSeeWord": "全員が単語を確認するのを待っています...",
|
|
"activePlayers": "参加中のプレイヤー",
|
|
"playersVoted": "投票済み",
|
|
"waitingVoting": "投票を待っています...",
|
|
"waitingForPlayers": "プレイヤーを待っています...",
|
|
"needMorePlayers": "あと{count}人のプレイヤーが必要です",
|
|
"starting": "開始しています...",
|
|
"enterNameAndScan": "名前を入力してホストのQRコードをスキャン",
|
|
"yourName": "あなたの名前",
|
|
"nameRequired": "名前を入力してください",
|
|
"connectingTo": "接続中:",
|
|
"scanQR": "QRコードをスキャン",
|
|
"scanHostQR": "ホストのQRコードにかざしてください",
|
|
"connectedWaiting": "接続しました!",
|
|
"waitingForHost": "ホストがゲームを開始するのを待っています...",
|
|
"enterNameToSearch": "名前を入力して近くのゲームを検索",
|
|
"searchGames": "ゲームを検索",
|
|
"searchingGames": "近くのゲームを検索しています...",
|
|
"noGamesFound": "ゲームが見つかりません",
|
|
"noGamesFoundHint": "ホストがルームを開いていて、近くにいることを確認してください",
|
|
"orScanQR": "表示されませんか?ホストのQRコードをスキャン",
|
|
"iveSeenIt": "確認しました",
|
|
"clueIs": "ヒント:{category}",
|
|
"debatePhaseActive": "議論フェーズ進行中",
|
|
"debateInstructions": "お互いに話し合い、誰がインポスターだと思うか伝えましょう。準備ができたら投票を要求してください。",
|
|
"solicitarVotacion": "投票を要求",
|
|
"votacionSolicitada": "投票をリクエストしました",
|
|
"whoDoYouThinkIsTheImpostor": "インポスターは誰?",
|
|
"selectOnePlayer": "投票するプレイヤーを選択",
|
|
"votar": "投票する",
|
|
"selectYourProfile": "あなたのプロフィール",
|
|
"selectProfile": "プロフィールを選択",
|
|
"createNewUser": "新しいユーザーを作成",
|
|
"userNameRequired": "名前は空にできません",
|
|
"profileSelected": "プロフィールを選択しました",
|
|
"availableProfiles": "利用可能なプロフィール",
|
|
"impostorsKnowEachOther": "🎭 インポスター同士が分かる",
|
|
"impostorsKnowEachOtherDescription": "各インポスターに他のインポスターの名前が表示されます",
|
|
"impostorsKnowEachOtherNeedsTwo": "インポスターが2人以上のときのみ有効",
|
|
"otherImpostorsTitle": "{count, plural, =1{他のインポスター} other{他のインポスター}}",
|
|
"youAreTheOnlyImpostor": "あなたが唯一のインポスターです",
|
|
"impostorsAdjusted": "プレイヤー数に合わせてインポスターを{count}人に調整しました",
|
|
"eliminatedCannotVote": "あなたは脱落しました。投票はできません",
|
|
"reconnecting": "再接続しています...",
|
|
"reconnectingHint": "ホストとの接続が切れました。ゲーム内のあなたの席は確保されています。",
|
|
"leaveGame": "ゲームから退出",
|
|
"playerRejoined": "{name} がゲームに復帰しました",
|
|
"leaveGameTitle": "ゲームから退出しますか?",
|
|
"leaveGameSingleDevice": "進行中のゲームは失われ、元に戻せません。",
|
|
"leaveGameHost": "あなたはホストです。退出すると全員のゲームが終了します。",
|
|
"leaveGameClient": "ゲームから退出します。ホストが開いている間は戻れます。",
|
|
"stayInGame": "ゲームを続ける",
|
|
"permissionsNeededTitle": "必要な権限",
|
|
"permissionsNeededBody": "マルチプレイには次の権限が必要です:",
|
|
"openAppSettingsQuestion": "アプリの設定を開きますか?",
|
|
"openSettings": "設定を開く",
|
|
"permissionLocation": "位置情報",
|
|
"permissionBluetoothAdvertise": "Bluetooth(アドバタイズ)",
|
|
"permissionBluetoothConnect": "Bluetooth(接続)",
|
|
"permissionBluetoothScan": "Bluetooth(スキャン)",
|
|
"permissionNearbyWifi": "近くのWi-Fi"
|
|
}
|