From 8ca7f52d19ca4c24aaffbb02ca1156825a1b308f Mon Sep 17 00:00:00 2001 From: German Khokhlov Date: Wed, 28 Oct 2026 16:43:48 +0400 Subject: [PATCH] i18n(ja): apply review round 1 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Three-model review (astra, sol, Fable), round 1: - Meaning fixes: post-tropical cyclone, partly cloudy, upload-date basis, ground track (対地針路), spec FOV, voice credentials, Activate → 押す, bikeshare counts, NHC/CPHC empty state, absence caveat, regional-news empty state, route steps (件の案内), minimum fuel, microphone access. - Consistent terms: 範囲 for WINDOW, カバー範囲 for coverage, 封じ込め率 for fire containment, サイクロン for storms, 交通流 for TomTom flow, シグナル tab, インポート / エクスポート for projects and presets, 射撃場 for the RANGE class, か所 for sites, full-width colons. - Short forms where the re-shoot showed a wrap: エクスポート (Scenes), 提供元で操作 (embeds), 該当施設 (Contacts). - cjk.css: the Recent Imagery slot line wraps at its separators in Japanese, never inside プレビュー. - Glossary in docs/translations/ja.md updated to match. Co-Authored-By: Claude Opus 5.5 --- docs/translations/ja.md | 13 ++- src/i18n/locales/ja.json | 192 +++++++++++++++++++-------------------- src/ui/styles/cjk.css | 7 ++ 3 files changed, 114 insertions(+), 98 deletions(-) diff --git a/docs/translations/ja.md b/docs/translations/ja.md index 11ff3b541..0f94a6b08 100644 --- a/docs/translations/ja.md +++ b/docs/translations/ja.md @@ -50,7 +50,7 @@ Translation source: abiyeenzo (#913). | installation, site | 施設 | | camera / CCTV camera | カメラ / CCTVカメラ | | earthquake / active fire / fire perimeter | 地震 / 火災検知 / 延焼範囲 | -| contained (fire) | 鎮圧 | +| contained / containment (fire) | 封じ込め / 封じ込め率 | | scene / shot | シーン / ショット | | briefing / panel / dock | ブリーフィング / パネル / ドック | | preset / visual preset | プリセット / ビジュアルプリセット | @@ -59,6 +59,7 @@ Translation source: abiyeenzo (#913). | Clean UI | クリーンUI | | cockpit | コックピット | | heading / altitude / ground speed | 機首方位 / 高度 / 対地速度 | +| track (TRK, direction over the ground) | 対地針路 | | HDG / BRG / CRS / FOV | そのまま(HUDコード) | | squawk | スコーク | | map heading / North up | 方位 / 北を上に | @@ -67,20 +68,28 @@ Translation source: abiyeenzo (#913). | Global Context / Context (panel) | グローバルコンテキスト / コンテキスト | | radio (station) / tune / seek | ラジオ(局)/ 選局・同調 / シーク | | transit / bikeshare | 公共交通 / シェアサイクル | +| traffic flow (TomTom) | 交通流 | | Previous / Next | 前へ / 次へ | +| SIG / NEWS / LOCAL (briefing tabs) | シグナル / ニュース / ローカル | | compass points (N, NNE, NE, ENE, …) | 北, 北北東, 北東, 東北東, … | | weather field / FIELD (selector) | 要素 | | weather model / forecast lead hours | モデル / 予報時間 | | valid (forecast time) / issued | 対象時刻 / 発表 | | radar reflectivity / lightning density | レーダー反射強度 / 雷密度 | -| cyclone / advisory (NHC/CPHC) | サイクロン / 情報(第N報) | +| cyclone, storm (NHC/CPHC) / advisory | サイクロン / 情報(第N報) | | forecast uncertainty cone | 予報円 | | tropical storm / tropical depression | 熱帯暴風雨 / 熱帯低気圧 | | scene cloud / mosaic / daily overview | シーン雲量 / モザイク / 日次概観 | | box (Recent Imagery area) | 範囲 | +| WINDOW (search radius around a subject) | 範囲 | +| coverage / coverage % / full, partial | カバー範囲 / カバー率(%のみ)/ 全体, 一部 | | pin (Recent Imagery) | 固定 | | outline / mark (map annotation) | 輪郭 / マーク | | share (a view or link) | 共有 | +| import / export (project, presets) | インポート / エクスポート | +| EXPORT (image, PNG) | 書き出し | +| voice (the voice assistant) | 音声アシスタント / 音声機能 | +| activate (a control, screen-reader text) | 押す(「押すと…」) | | AI agent | AIエージェント | | frame (bring into view) | 視野に収める | | story beat / evidence beat | ストーリー区切り / 証拠の区切り | diff --git a/src/i18n/locales/ja.json b/src/i18n/locales/ja.json index 19069f601..b2f22124b 100644 --- a/src/i18n/locales/ja.json +++ b/src/i18n/locales/ja.json @@ -42,7 +42,7 @@ "Unlawful interference": "不法妨害", "Radio failure": "無線故障", "Downed aircraft": "墜落機", - "Minimum fuel": "最低燃料", + "Minimum fuel": "ミニマムフューエル", "Lifeguard (medical priority)": "救急飛行(医療優先)", "Rasuwagadhi witness video": "Rasuwagadhiの目撃映像", "Bhote Koshi valley footage": "Bhote Koshi渓谷の映像", @@ -82,19 +82,19 @@ "Preloading {provider} media": "{provider}のメディアを事前読み込み中", "LOADING X POST…": "Xの投稿を読み込み中…", "The X post is unavailable or cannot be embedded.": "このXの投稿は利用できないか、埋め込みできません。", - "X POST · PROVIDER CONTROLS": "Xの投稿 · 提供元の操作", + "X POST · PROVIDER CONTROLS": "Xの投稿 · 提供元で操作", "{reason} OPEN ORIGINAL.": "{reason}元の投稿を開いてください。", - "X embed unavailable": "X埋め込みを利用できません。", - "FACEBOOK · PROVIDER CONTROLS": "FACEBOOK · 提供元の操作", + "X embed unavailable": "Xの埋め込みを利用できません。", + "FACEBOOK · PROVIDER CONTROLS": "FACEBOOK · 提供元で操作", "Facebook embed unavailable": "Facebookの埋め込みを利用できません。", - "AUTOPLAY BLOCKED · USE PROVIDER CONTROLS": "自動再生ブロック · 提供元の操作を使用", + "AUTOPLAY BLOCKED · USE PROVIDER CONTROLS": "自動再生ブロック · 提供元で操作", "Embedded {provider} media for {source}": "{source}の埋め込み{provider}メディア", "witness source": "目撃ソース", "Witness source": "目撃ソース", "{provider} · EMBEDDED SOURCE": "{provider} · 埋め込みソース", "OPEN ORIGINAL ↗": "元の投稿を開く ↗", "{provider} media: {source}": "{provider}メディア:{source}", - "{provider} · PROVIDER CONTROLS": "{provider} · 提供元の操作", + "{provider} · PROVIDER CONTROLS": "{provider} · 提供元で操作", "YOUTUBE {state} · OPEN ORIGINAL": "YOUTUBE {state} · 元の投稿を開く", "INITIATION": "発生", "DAMMING": "せき止め", @@ -261,7 +261,7 @@ "Directions": "ルート案内", "Recent imagery": "最近の衛星画像", "STATION": "宇宙ステーション", - "Crewed stations and their visiting vehicles": "有人宇宙ステーションと来訪機", + "Crewed stations and their visiting vehicles": "有人宇宙ステーションと結合中の宇宙機", "NAV": "測位", "GNSS navigation — GPS, GLONASS, Galileo": "GNSS測位(GPS、GLONASS、Galileo)", "GEO": "GEO", @@ -294,7 +294,7 @@ "Source configured; file checked when loaded": "ソース設定済み。ファイルは読み込み時に確認します", "Source unavailable": "ソースを利用できません", "ENVIRONMENTAL": "環境", - "EARTH WATCH": "地球ウォッチ", + "EARTH WATCH": "地球監視", "ACTIVE EVENTS": "発生中のイベント", "Starting live contacts…": "ライブコンタクトを開始中…", "Opening space missions…": "宇宙ミッションを開いています…", @@ -375,8 +375,8 @@ "Save failed ({status}).": "保存に失敗しました({status})。", "OAuth check failed: {detail}": "OAuthの確認に失敗しました:{detail}", "Could not check ChatGPT sign-in. Try again.": "ChatGPTのサインイン状態を確認できませんでした。もう一度お試しください。", - "VOICE AUTH · CHATGPT OAUTH": "音声認証 · CHATGPT OAUTH", - "VOICE AUTH · API KEY": "音声認証 · APIキー", + "VOICE AUTH · CHATGPT OAUTH": "音声機能の認証 · CHATGPT OAUTH", + "VOICE AUTH · API KEY": "音声機能の認証 · APIキー", "USE API KEY": "APIキーを使用", "USE CHATGPT OAUTH": "CHATGPT OAUTHを使用", "Use OPENAI_API_KEY for the next cloud voice session": "次回のクラウド音声セッションでOPENAI_API_KEYを使用", @@ -410,7 +410,7 @@ "Opening ChatGPT sign-in in your browser…": "ブラウザーでChatGPTのサインインを開いています…", "Could not start ChatGPT sign-in on this machine.": "このマシンでChatGPTのサインインを開始できませんでした。", "Finish ChatGPT sign-in in the browser. Waiting for it to complete…": "ブラウザーでChatGPTのサインインを完了してください。完了を待っています…", - "ChatGPT sign-in timed out. Click {button} to try again.": "ChatGPTのサインインがタイムアウトしました。「{button}」をクリックしてもう一度お試しください。", + "ChatGPT sign-in timed out. Click {button} to try again.": "ChatGPTのサインインがタイムアウトしました。[{button}]をクリックしてもう一度お試しください。", "ChatGPT sign-in complete. OAuth will be used for the next cloud voice session.": "ChatGPTのサインインが完了しました。次回のクラウド音声セッションではOAuthを使用します。", "Remove this key from your saved configuration?": "このキーを保存済みの設定から削除しますか?", "Removed from {store}. Restarting — this page reloads itself.": "{store}から削除しました。再起動中です。このページは自動で再読み込みされます。", @@ -422,8 +422,8 @@ "Live active-fire detections": "火災のライブ検知", "Real live traffic (keyless runs a simulation)": "実際のライブ交通情報(キーなしはシミュレーション)", "Bing imagery map stacks + world terrain": "Bing画像のマップスタック + 全球地形", - "More flight-polling credits (anonymous works without)": "航空機ポーリングのクレジット増加(匿名でも利用可)", - "Street-level imagery and coverage in the Street Level layer. Free: register an app in the Mapillary developer dashboard and paste its Client Token": "ストリートレベルレイヤーのストリートレベル画像とカバレッジ。無料:Mapillary開発者ダッシュボードでアプリを登録し、そのClient Tokenを貼り付けてください", + "More flight-polling credits (anonymous works without)": "航空機データの取得枠を拡大(認証なしでも利用可)", + "Street-level imagery and coverage in the Street Level layer. Free: register an app in the Mapillary developer dashboard and paste its Client Token": "ストリートレベルレイヤーのストリートレベル画像とカバー範囲。無料:Mapillary開発者ダッシュボードでアプリを登録し、そのClient Tokenを貼り付けてください", "Public space-missions access needs no key. Leave blank for standard use; paid tokens only raise request limits.": "公開の宇宙ミッションデータにキーは不要です。通常の利用では空欄のままにしてください。有料トークンはリクエスト上限を引き上げるだけです。", "Air quality request failed": "大気質のリクエストに失敗しました", "No readings available": "測定値がありません", @@ -433,13 +433,13 @@ }, "Highest air-quality readings in view": "表示範囲内で大気質の値が最も高い局", "Low": "低", - "Low health risk": "健康リスク低", + "Low health risk": "健康リスク:低", "Moderate": "中", - "Moderate health risk": "健康リスク中", + "Moderate health risk": "健康リスク:中", "High": "高", - "High health risk": "健康リスク高", + "High health risk": "健康リスク:高", "Very High": "非常に高い", - "Very High health risk": "健康リスク非常に高い", + "Very High health risk": "健康リスク:非常に高い", "Air quality": "大気質", "Canada only · ECCC AQHI network": "カナダのみ · ECCC AQHI観測網", "ECCC request timed out": "ECCCのリクエストがタイムアウトしました", @@ -485,18 +485,18 @@ "Next — nearest unvisited contact in the 250 km window": "次へ:250 km圏内で最も近い未訪問のコンタクト", "NEXT": "次へ", "Named areas ({n})": "名前付きエリア({n})", - "{distance} FLIGHT / VESSEL WINDOW": "フライト / 船舶ウィンドウ {distance}", - "Open-source mapped/observed context. Missing broadcasts, unloaded map areas, or unmapped sites are not evidence of absence.": "オープンソースのマップ済み/観測済みコンテキストです。放送の欠落、未読込のマップ領域、未マップの施設は、不在の証拠ではありません。", - "mapped matches within {km} km of the subject": "対象から{km} km以内のマップ済み一致", - "none mapped within {km} km; not a complete 250 km survey": "{km} km以内にマップ済みのものなし(250 kmの完全な調査ではありません)", - "mapped matches from the loaded viewport": "読み込み済みの表示範囲からのマップ済み一致", + "{distance} FLIGHT / VESSEL WINDOW": "フライト / 船舶の範囲 {distance}", + "Open-source mapped/observed context. Missing broadcasts, unloaded map areas, or unmapped sites are not evidence of absence.": "公開情報に基づくマップ済み/観測済みのコンテキストです。位置送信の欠落、未読込の地図範囲、地図に未登録の施設は、対象が存在しない証拠にはなりません。", + "mapped matches within {km} km of the subject": "対象の{km} km圏内の該当施設", + "none mapped within {km} km; not a complete 250 km survey": "{km} km以内にマップ済み施設なし(250 kmの完全な調査ではありません)", + "mapped matches from the loaded viewport": "読み込み済みの表示範囲内の該当施設", "viewport feed is not a complete 250 km survey": "表示範囲のフィードは250 kmの完全な調査ではありません", "HDG {value}°": "HDG {value}°", "BRG {value}°": "BRG {value}°", "BRG —": "BRG —", "CRS {value}°": "CRS {value}°", "CURRENT VIEWPORT ONLY": "現在の表示範囲のみ", - "WITHIN {km} KM": "{km} KM以内", + "WITHIN {km} KM": "{km} km以内", "Flights": "フライト", "Military flights": "軍用機", "AIS vessels": "AIS船舶", @@ -506,7 +506,7 @@ "GBFS fetch error": "GBFS取得エラー", "Station {id}": "ステーション {id}", "Station": "ステーション", - "🚲 {bikes} avail · {docks} docks · {capacity} cap": "🚲 空き {bikes} · ドック {docks} · 容量 {capacity}", + "🚲 {bikes} avail · {docks} docks · {capacity} cap": "🚲 貸出可 {bikes}台 · 返却可 {docks}台 · 収容 {capacity}台", "⚠️ Not installed": "⚠️ 未設置", "⚠️ Not renting": "⚠️ 貸出停止中", "⚠️ Not returning": "⚠️ 返却不可", @@ -516,8 +516,8 @@ "{city} CCTV": "{city} CCTV", "FOV {value}° (DATASHEET)": "FOV {value}°(データシート)", "FOV {value}°": "FOV {value}°", - "SPEC FOV {span}° (CAPABILITY)": "仕様FOV {span}°(可動範囲)", - "COVERAGE {value}km²": "カバレッジ {value}km²", + "SPEC FOV {span}° (CAPABILITY)": "仕様FOV {span}°(対応画角)", + "COVERAGE {value}km²": "カバー範囲 {value}km²", "OVERLAP {count} cams": "重複 {count}台", "ISOLATED VIEW": "単独ビュー", "PROJ MONITOR": "投影 モニター", @@ -531,7 +531,7 @@ "Cyclone advisories unavailable": "サイクロン情報を取得できません", "Cyclone data unavailable": "サイクロンデータを取得できません", "Potential tropical cyclone": "潜在的熱帯サイクロン", - "Post-tropical cyclone": "温帯低気圧化したサイクロン", + "Post-tropical cyclone": "熱帯性を失ったサイクロン", "Hurricane": "ハリケーン", "Tropical storm": "熱帯暴風雨", "Tropical depression": "熱帯低気圧", @@ -543,12 +543,12 @@ "Cached advisory · stale source": "キャッシュの情報 · ソース更新遅延", "Loading advisories…": "情報を読み込み中…", "{count} active storms": { - "other": "発生中の嵐 {count}個" + "other": "発生中のサイクロン {count}個" }, "Position as of {time}": "{time}時点の位置", "Maximum sustained wind: {wind} · Pressure: {pressure}": "最大持続風速:{wind} · 気圧:{pressure}", "{name} · {classification} · Advisory {number} · issued {time}": "{name} · {classification} · 第{number}報 · {time}発表", - "No active NHC/CPHC systems": "発生中のNHC/CPHCシステムはありません", + "No active NHC/CPHC systems": "NHC/CPHCが監視中のサイクロンはありません", "Advisories unavailable": "情報を取得できません", "Cyclones · NHC / CPHC": "サイクロン · NHC / CPHC", "Atlantic · E/C Pacific": "大西洋 · 東部/中部太平洋", @@ -558,7 +558,7 @@ "Wind unavailable": "風のデータを取得できません", "Advisory center / forecast track": "発表時の中心 / 予報進路", "Center-track uncertainty cone": "中心進路の予報円", - "Select a storm on the map, or choose a storm in the list to select it and move the camera. Click empty map space to clear the selection. NOAA NHC/CPHC advisory context. The cone describes forecast center-track uncertainty, not storm size or the full hazard area. Forecast point labels are source lead hours, not times computed from advisory issuance. Geometry follows the surface; height is not weather altitude. Consult the official advisory.": "地図上で嵐を選択するか、リストから嵐を選ぶと選択してカメラが移動します。地図の何もない場所をクリックすると選択を解除します。NOAA NHC/CPHCの情報に基づく表示です。予報円は予報される中心進路の不確かさを示すもので、嵐の大きさや危険範囲全体ではありません。予報点のラベルはソースの予報時間で、発表時刻から計算した時刻ではありません。図形は地表に沿って表示され、高さは気象上の高度ではありません。公式情報を確認してください。", + "Select a storm on the map, or choose a storm in the list to select it and move the camera. Click empty map space to clear the selection. NOAA NHC/CPHC advisory context. The cone describes forecast center-track uncertainty, not storm size or the full hazard area. Forecast point labels are source lead hours, not times computed from advisory issuance. Geometry follows the surface; height is not weather altitude. Consult the official advisory.": "地図上でサイクロンを選択するか、リストから選ぶと、そのサイクロンが選択されてカメラが移動します。地図の何もない場所をクリックすると選択を解除します。NOAA NHC/CPHCの情報に基づく表示です。予報円は予報される中心進路の不確かさを示すもので、サイクロンの大きさや危険範囲全体ではありません。予報点のラベルはソースの予報時間で、発表時刻から計算した時刻ではありません。図形は地表に沿って表示され、高さは気象上の高度ではありません。公式情報を確認してください。", "DRIVE": "車", "Drive": "車", "WALK": "徒歩", @@ -668,15 +668,15 @@ "Place A and B first": "先にAとBを配置してください", "action|CLEAR": "消去", "Remove the route and both markers": "ルートと両方のマーカーを削除", - "press Escape twice to leave Draw": "Escapeを2回押して描画を終了してください", + "press Escape twice to leave Draw": "Escを2回押して描画を終了してください", "{name} is active — turn {name} off, then set {endpoint}": "{name}を使用中です。{name}をオフにしてから{endpoint}を設定してください", "{name} is active — {leave}, then set {endpoint}": "{name}を使用中です。先に{leave}。その後、{endpoint}を設定してください", - "Only the first {count} turns of this route are shown": "このルートは最初の{count}回の曲がり角のみ表示しています", + "Only the first {count} turns of this route are shown": "このルートは最初の{count}件の案内のみ表示しています", "Turn-by-turn directions": "ターンバイターンのルート案内", "Another map tool is using clicks — close it, then SET A again": "別の地図ツールがクリックを使用中です。そのツールを閉じてから、もう一度Aを設定してください", "Routing…": "ルート検索中…", "No route found": "ルートが見つかりません", - "{distance} · {duration} · {mode} · first {count} turns": "{distance} · {duration} · {mode} · 最初の{count}回の曲がり角", + "{distance} · {duration} · {mode} · first {count} turns": "{distance} · {duration} · {mode} · 最初の{count}件の案内", "{distance} · {duration} · {mode}": "{distance} · {duration} · {mode}", "Click the globe to place {endpoint}": "地球をクリックして{endpoint}を配置", "SET B, then click the globe": "Bを設定してから地球をクリック", @@ -749,7 +749,7 @@ "Low-accuracy score 2–10%": "低精度スコア 2–10%", "Low-accuracy score > 10%": "低精度スコア > 10%", "GNSS integrity source unavailable": "GNSSインテグリティのソースを利用できません", - "Regional sample · 250 nm radius · cells from visited views over 30 min": "地域サンプル · 半径250 nm · 30分以内に表示したビューのセル", + "Regional sample · 250 nm radius · cells from visited views over 30 min": "地域サンプル · 半径250海里 · 30分以内に表示したビューのセル", "Retrying automatically at {time} UTC": "{time} UTCに自動で再試行します", "Retrying automatically after provider cooldown": "プロバイダーのクールダウン後に自動で再試行します", "Updates automatically after pan or zoom and once a minute. The public feed covers a 250-nautical-mile circle around the view centre; zooming out does not make it a worldwide snapshot. Blank cells are outside sampled coverage or have insufficient observations.": "パンやズームの後、および1分ごとに自動で更新されます。公開フィードは表示中心から半径250海里の円をカバーします。ズームアウトしても全世界のスナップショットにはなりません。空白のセルは、サンプリング範囲外か観測が不十分です。", @@ -760,7 +760,7 @@ "GNSS integrity snapshot has no observation time": "GNSSインテグリティのスナップショットに観測時刻がありません", "installation class|AIRFIELD": "飛行場", "installation class|NAVAL BASE": "海軍基地", - "installation class|RANGE": "演習場", + "installation class|RANGE": "射撃場", "installation class|MILITARY LAND": "軍用地", "installation class|BASE": "基地", "installation class|BARRACKS": "兵舎", @@ -769,11 +769,11 @@ "installation class|INSTALLATION": "施設", "No mapped sites within {km} km of the contact": "コンタクトから{km} km以内にマップ済み施設はありません", "{count} mapped sites within {km} km of the contact": { - "other": "コンタクトから{km} km以内のマップ済み施設 {count}件" + "other": "コンタクトから{km} km以内のマップ済み施設 {count}か所" }, "No mapped sites in view": "表示範囲内にマップ済み施設はありません", "{count} mapped sites in view": { - "other": "表示範囲内のマップ済み施設 {count}件" + "other": "表示範囲内のマップ済み施設 {count}か所" }, "loading mapped installation context": "マップ済み施設のコンテキストを読み込み中", "Too many mapped sites in view to list them all": "表示範囲内のマップ済み施設が多すぎて、すべてを一覧表示できません", @@ -856,7 +856,7 @@ "Your decoder feed": "お使いのデコーダーフィード", "Your RTL-SDR receiver": "お使いのRTL-SDR受信機", "NO CALLSIGN": "コールサインなし", - "ALT {altitude} FT · GS {speed} KT · TRK {track}": "高度 {altitude} ft · 対地速度 {speed} kt · 航跡 {track}", + "ALT {altitude} FT · GS {speed} KT · TRK {track}": "高度 {altitude} ft · 対地速度 {speed} kt · 対地針路 {track}", "V/S {rate}": "昇降率 {rate}", "V/S {rate} FPM": "昇降率 {rate} ft/min", "POSITION {age}": "位置 {age}", @@ -887,14 +887,14 @@ "fire behavior|Minimal": "微弱", "fire behavior|Moderate": "中程度", "fire behavior|Active": "活発", - "fire behavior|Extreme": "極端", + "fire behavior|Extreme": "極めて活発", "Type {level} Incident": "タイプ{level}インシデント", "age|{count}m": "{count}分", "{acres} ac": { "other": "{acres}エーカー" }, - "{percent}% contained": "{percent}%鎮圧", - "containment unknown": "鎮圧率不明", + "{percent}% contained": "封じ込め率 {percent}%", + "containment unknown": "封じ込め率不明", "{cause} cause": "原因:{cause}", "{personnel} personnel": { "other": "人員{personnel}人" @@ -909,11 +909,11 @@ "Unnamed incident": "名称未設定の火災", "Open {title} on InciWeb": "InciWebで{title}を開く", "Perimeter source unavailable": "延焼範囲のソースを利用できません", - "Not contained or unknown": "未鎮圧または不明", - "Under 50% contained": "鎮圧50%未満", - "50–99% contained": "鎮圧50–99%", - "Fully contained": "完全鎮圧", - "Colour shows reported containment. Perimeters are simplified to about 100 m.": "色は報告された鎮圧率を示します。延焼範囲は約100 mに簡略化されています。", + "Not contained or unknown": "封じ込め率0%または不明", + "Under 50% contained": "封じ込め率50%未満", + "50–99% contained": "封じ込め率50–99%", + "Fully contained": "封じ込め率100%", + "Colour shows reported containment. Perimeters are simplified to about 100 m.": "色は報告された封じ込め率を示します。延焼範囲は約100 mに簡略化されています。", "Malformed perimeter snapshot": "延焼範囲スナップショットの形式が不正です", "radio tag|All": "すべて", "News": "ニュース", @@ -977,7 +977,7 @@ "{label} catalog unavailable · {detail}": "{label}のカタログを利用できません · {detail}", "Daily overview for today may still be empty until the pass": "今日の日次概観は、衛星の通過まで空の場合があります", "Box and images cleared": "範囲と画像を消去しました", - "MORE DETAIL · 30 m": "高詳細 · 30 m", + "MORE DETAIL · 30 m": "高精細 · 30 m", "Sentinel-2 and Landsat via HLS, 30 m, every 2–6 days": "HLS経由のSentinel-2とLandsat、30 m、2~6日ごと", "DAILY OVERVIEW · 250 m": "日次概観 · 250 m", "VIIRS daily mosaic, 250 m, follows broad changes; little detail under 25 km": "VIIRSの日次モザイク、250 m。広域の変化を追跡。25 km未満の詳細はほぼなし", @@ -992,7 +992,7 @@ "Box must enclose an area": "範囲は面積を囲む必要があります", "Add the full Starlink broadband shell (thousands of extra points)": "Starlinkブロードバンドシェル全体を追加(数千の追加ポイント)", "Loading the Starlink shell…": "Starlinkシェルを読み込み中…", - "Starlink {detail} — click to retry": "Starlink {detail}: クリックで再試行", + "Starlink {detail} — click to retry": "Starlink {detail}:クリックで再試行", "load failed": "読込失敗", "Showing the full Starlink shell — click for the core catalog only": "Starlinkシェル全体を表示中:クリックでコアカタログのみに戻す", "DENSE ···": "高密度 ···", @@ -1055,7 +1055,7 @@ "Panoramax sent an unreadable answer": "Panoramaxから読み取れない応答が返されました", "Sequence images unavailable": "シーケンス画像を利用できません", "No street-level imagery providers configured": "ストリートレベル画像のプロバイダーが設定されていません", - "(by upload date)": "(アップロード日順)", + "(by upload date)": "(アップロード日基準)", "Open the Street Level panel to view imagery": "画像を表示するには、ストリートレベルパネルを開いてください", "Image could not be opened": "画像を開けませんでした", "TeleGeography load failed": "TeleGeographyの読み込みに失敗しました", @@ -1080,15 +1080,15 @@ "TomTom upstream unreachable": "TomTomの上流サービスに接続できません", "TomTom flow unavailable": "TomTomの交通流を利用できません", "SIMULATED — {reason}": "シミュレーション:{reason}", - "Syncing flow · Roads: {source}": "フロー同期中 · 道路:{source}", - "LIVE · Roads: {source} · Roads without flow hidden": "ライブ · 道路:{source} · フローのない道路は非表示", - "LIVE · Roads: {source} · No flow roads in view": "ライブ · 道路:{source} · 表示範囲にフローのある道路なし", - "LIVE · Roads: {source} · Flow {percent}%": "ライブ · 道路:{source} · フロー {percent}%", - "SIMULATED · Roads: {source} · Flow {percent}%": "シミュレーション · 道路:{source} · フロー {percent}%", - "Syncing flow · Roads: OpenStreetMap · Flow: TomTom · Unmatched: simulated": "フロー同期中 · 道路:OpenStreetMap · フロー:TomTom · 未一致:シミュレーション", - "LIVE · Roads: OpenStreetMap · Flow: TomTom · {percent}% cov · Unmatched: simulated": "ライブ · 道路:OpenStreetMap · フロー:TomTom · カバー率 {percent}% · 未一致:シミュレーション", - "LIVE · Roads: OpenStreetMap · Flow: TomTom · {percent}% cov": "ライブ · 道路:OpenStreetMap · フロー:TomTom · カバー率 {percent}%", - "SIMULATED · Roads: OpenStreetMap · Flow: TomTom (no matches)": "シミュレーション · 道路:OpenStreetMap · フロー:TomTom(一致なし)", + "Syncing flow · Roads: {source}": "交通流を同期中 · 道路:{source}", + "LIVE · Roads: {source} · Roads without flow hidden": "ライブ · 道路:{source} · 交通流のない道路は非表示", + "LIVE · Roads: {source} · No flow roads in view": "ライブ · 道路:{source} · 表示範囲に交通流のある道路なし", + "LIVE · Roads: {source} · Flow {percent}%": "ライブ · 道路:{source} · 交通流 {percent}%", + "SIMULATED · Roads: {source} · Flow {percent}%": "シミュレーション · 道路:{source} · 交通流 {percent}%", + "Syncing flow · Roads: OpenStreetMap · Flow: TomTom · Unmatched: simulated": "交通流を同期中 · 道路:OpenStreetMap · 交通流:TomTom · 未一致:シミュレーション", + "LIVE · Roads: OpenStreetMap · Flow: TomTom · {percent}% cov · Unmatched: simulated": "ライブ · 道路:OpenStreetMap · 交通流:TomTom · カバー率 {percent}% · 未一致:シミュレーション", + "LIVE · Roads: OpenStreetMap · Flow: TomTom · {percent}% cov": "ライブ · 道路:OpenStreetMap · 交通流:TomTom · カバー率 {percent}%", + "SIMULATED · Roads: OpenStreetMap · Flow: TomTom (no matches)": "シミュレーション · 道路:OpenStreetMap · 交通流:TomTom(一致なし)", "SIMULATED — traffic service unreachable": "シミュレーション:交通サービスに接続できません", "SIMULATED — add TomTom key for live": "シミュレーション:ライブ表示にはTomTomキーを追加", "OpenFreeMap tiles rate-limited": "OpenFreeMapタイルがレート制限中", @@ -1183,8 +1183,8 @@ "Color: strikes/km²/min ×10³": "色:落雷数/km²/分 ×10³", "60°S–60°N · typically 2–3 h delayed": "60°S–60°N · 通常2~3時間遅れ", "North America · infrared imagery": "北米 · 赤外画像", - "Reduced motion · history playback unavailable": "動きを減らす · 履歴再生は利用不可", - "Reduced motion · manual history available": "動きを減らす · 手動で履歴を表示可能", + "Reduced motion · history playback unavailable": "動きを減らす設定 · 履歴再生は利用不可", + "Reduced motion · manual history available": "動きを減らす設定 · 履歴は手動で表示可能", "Rain radar · US": "降水レーダー · 米国", "Lightning density · 15 min": "雷密度 · 15分", "Satellite clouds": "衛星雲画像", @@ -1360,7 +1360,7 @@ "No shots to run": "実行するショットがありません", "Scene transition limit reached — load a shot to reset": "シーン切り替えの上限に達しました。リセットするにはショットを読み込んでください", "Export failed: {error}": "エクスポートに失敗しました:{error}", - "Project exported": "プロジェクトを書き出しました", + "Project exported": "プロジェクトをエクスポートしました", "Importing project": "プロジェクトをインポート中", "Imported {file}": "{file}をインポートしました", "Import failed: {error}": "インポートに失敗しました:{error}", @@ -1561,8 +1561,8 @@ "CCTV ON": "CCTV オン", "CCTV OFF": "CCTV オフ", "VIEWSHED ON": "可視域 オン", - "COVERAGE ON": "カバレッジ オン", - "COVERAGE OFF": "カバレッジ オフ", + "COVERAGE ON": "カバー範囲 オン", + "COVERAGE OFF": "カバー範囲 オフ", "AUTO HOP ON": "自動切替 オン", "AUTO HOP OFF": "自動切替 オフ", "PROJECTION ON": "投影 オン", @@ -1578,7 +1578,7 @@ "{count} cameras loaded · enable CCTV to activate": { "other": "カメラ {count}台を読込済み · CCTVを有効にして使用" }, - "Enable CCTV to load camera intersections": "CCTVを有効にすると、カメラの交差点を読み込みます", + "Enable CCTV to load camera intersections": "CCTVを有効にすると、カメラのある交差点を読み込みます", "Enable CCTV to start camera-linked intelligence summaries.": "CCTVを有効にすると、カメラ連動のインテリジェンス概要を開始します。", "No summary available.": "利用できる概要はありません。", "loading frames": "フレーム読込中", @@ -1587,7 +1587,7 @@ "Clear selected data layers": "選択中のデータレイヤーを解除", "CONDITIONS UNKNOWN": "気象状況不明", "CLEAR": "快晴", - "PARTLY CLOUDY": "晴れ時々曇り", + "PARTLY CLOUDY": "一部曇り", "OVERCAST": "曇天", "FOG": "霧", "DRIZZLE": "霧雨", @@ -1595,23 +1595,23 @@ "RAIN SHOWERS": "にわか雨", "SNOW SHOWERS": "にわか雪", "THUNDERSTORM": "雷雨", - "MIXED CONDITIONS": "混在した状況", + "MIXED CONDITIONS": "その他の気象状況", "CYCLE ON": "自動切替 オン", "CYCLE OFF": "自動切替 オフ", - "Stop automatic page cycling. Previous, Next, and the SIG/NEWS/LOCAL tabs stay available.": "ページの自動切り替えを停止します。前へ、次へ、SIG/NEWS/LOCALタブは引き続き使えます。", + "Stop automatic page cycling. Previous, Next, and the SIG/NEWS/LOCAL tabs stay available.": "ページの自動切り替えを停止します。[前へ]、[次へ]と[シグナル]/[ニュース]/[ローカル]タブは引き続き使えます。", "Cycle briefing pages automatically every 9 seconds (Signals → News → Local). Pauses while you hover or focus the panel. Live signal data refreshes continuously either way.": "9秒ごとにブリーフィングページを自動で切り替えます(シグナル → ニュース → ローカル)。パネルにカーソルを合わせるかフォーカスしている間は一時停止します。ライブシグナルのデータは、どちらの場合も継続的に更新されます。", "ACQUIRING REGIONAL NEWS": "地域ニュースを取得中", "REGIONAL NEWS UNAVAILABLE": "地域ニュースを取得できません", "RESOLVING REGION": "地域を特定中", "REGION UNAVAILABLE": "地域を取得できません", - "NO RECENT LOCATION MATCHES": "最近の位置一致なし", + "NO RECENT LOCATION MATCHES": "この地域の最近のニュースなし", "{domain} · {age}": "{domain} · {age}", "{value} KM/H": "{value} KM/H", "CLOUD {pct}%": "雲量 {pct}%", "CLOUD UNKNOWN": "雲量不明", "{source} · LOCATION QUERY": "{source} · 位置クエリ", "REGIONAL NEWS": "地域ニュース", - "{label} · {radius} AIR/SEA WINDOW": "{label} · 空/海ウィンドウ {radius}", + "{label} · {radius} AIR/SEA WINDOW": "{label} · 航空機/船舶の範囲 {radius}", "{scope} · INSTALLATIONS {coverage}": "{scope} · 施設 {coverage}", "CONTEXT STANDBY": "コンテキスト待機", "ENABLE GLOBAL CONTEXT FOR PROXIMITY PINGS": "グローバルコンテキストを有効にすると近接ピングを表示", @@ -1652,7 +1652,7 @@ "Anime": "アニメ", "Noir": "ノワール", "Snow": "雪", - "Current cockpit vision style: {style}. Activate for next style.": "現在のコックピットビジョンスタイル:{style}。有効にすると次のスタイルへ。", + "Current cockpit vision style: {style}. Activate for next style.": "現在のコックピットビジョンスタイル:{style}。押すと次のスタイルに切り替わります。", "Current style: {style} — click for next": "現在のスタイル:{style} — クリックで次へ", "Collapse Contact panel": "コンタクトパネルを折りたたむ", "Expand Contact panel": "コンタクトパネルを展開", @@ -1799,7 +1799,7 @@ "UNCERTAIN": "不明確", "status chip|UNAVAILABLE": "利用不可", "Data source unavailable": "データソースを利用できません", - "{name}: {state}": "{name}: {state}", + "{name}: {state}": "{name}:{state}", "{count}s ago": "{count}秒前", "Local FM stopped: internet radio started": "ローカルFMを停止しました:インターネットラジオを開始しました", "IDLE": "待機", @@ -1937,7 +1937,7 @@ " · muted during voice interaction": " · 音声操作中はミュート", " · restoring volume after voice": " · 音声操作後に音量を復元中", " · static indicates no broadcaster audio": " · ノイズは放送局の音声がないことを示します", - " · tuning static until broadcaster starts": " · 放送局の開始までノイズで選局中", + " · tuning static until broadcaster starts": " · 放送が始まるまで選局ノイズを再生", "Station unavailable after directory refresh — choose another channel": "ディレクトリ更新後に局を利用できません。別のチャンネルを選んでください", "Radio is enabling…": "ラジオを有効化しています…", "Radio is disabling…": "ラジオを無効化しています…", @@ -2027,8 +2027,8 @@ "Download {slot} as a PNG": "{slot}をPNGでダウンロード", "Download the image as a PNG": "画像をPNGでダウンロード", "Box {width} × {height} km": "範囲 {width} × {height} km", - "Acquired {time}": "取得日時 {time}", - "Coverage {coverage}": "カバー率 {coverage}", + "Acquired {time}": "取得時刻 {time}", + "Coverage {coverage}": "カバー範囲 {coverage}", "START HERE · {reason}": "ここから開始 · {reason}", "Daily overview shows little detail in a box this small": "この小さな範囲では、日次概観にほとんど詳細が写りません", "Imagery: NASA GIBS and Worldview · HLS (Sentinel-2, Landsat 8/9) and VIIRS": "画像:NASA GIBSおよびWorldview · HLS(Sentinel-2、Landsat 8/9)とVIIRS", @@ -2096,10 +2096,10 @@ "FETCHING MAPPED SITES": "マップ済み施設を取得中", "RETRYING ALPR CAMERAS": "ALPRカメラを再試行中", "FETCHING ALPR CAMERAS": "ALPRカメラを取得中", - "OVERPASS TEMPORARILY UNAVAILABLE": "OVERPASSが一時的に利用不可", - "OVERPASS RATE-LIMITED": "OVERPASSがレート制限中", - "OVERPASS TIMED OUT": "OVERPASSがタイムアウト", - "OVERPASS COULD NOT COMPLETE THE QUERY": "OVERPASSがクエリを完了できません", + "OVERPASS TEMPORARILY UNAVAILABLE": "Overpassが一時的に利用不可", + "OVERPASS RATE-LIMITED": "Overpassがレート制限中", + "OVERPASS TIMED OUT": "Overpassがタイムアウト", + "OVERPASS COULD NOT COMPLETE THE QUERY": "Overpassがクエリを完了できません", "MAP TILES TEMPORARILY UNAVAILABLE": "地図タイルが一時的に利用不可", "MAPPED NAMES TEMPORARILY UNAVAILABLE": "地名が一時的に利用不可", "TURNING OFF LIVE DATA": "ライブデータをオフにしています", @@ -2187,13 +2187,13 @@ "No sequences in view match the filter": "表示範囲内にフィルターに一致するシーケンスはありません", "No coverage in view": "表示範囲内にカバー範囲がありません", "{n} streets in view · click a line for its nearest photo": { - "other": "表示範囲内の通り {n}本 · 線をクリックすると最寄りの写真を表示" + "other": "表示範囲内の通り {n}本 · 線をクリックで最寄りの写真を表示" }, "{n} sequences in view · click a line for its nearest photo": { - "other": "表示範囲内のシーケンス {n}件 · 線をクリックすると最寄りの写真を表示" + "other": "表示範囲内のシーケンス {n}件 · 線をクリックで最寄りの写真を表示" }, "{n} sequences in view · click a line for its photos": { - "other": "表示範囲内のシーケンス {n}件 · 線をクリックすると写真を表示" + "other": "表示範囲内のシーケンス {n}件 · 線をクリックで写真を表示" }, "km/h": "km/h", "m/s": "m/s", @@ -2231,7 +2231,7 @@ "Voice model tier — applies next session": "音声モデルのティア:次回セッションで適用", "STD": "標準", "Estimated session cost": "セッションの推定コスト", - "Voice control — activate to toggle voice; hold Space to speak": "音声コントロール:有効にすると音声のオン/オフを切り替え、Spaceを長押しで話す", + "Voice control — activate to toggle voice; hold Space to speak": "音声コントロール:押すと音声のオン/オフを切り替え、Spaceを長押しで話す", "ON/OFF": "オン/オフ", "VOICE STANDBY": "音声待機中", "VOICE CONTROL": "音声コントロール", @@ -2284,7 +2284,7 @@ "Gemini token response did not include a valid model": "Geminiのトークン応答に有効なモデルが含まれていません", "Gemini token response did not include session settings": "Geminiのトークン応答にセッション設定が含まれていません", "Gemini session settings do not match the input mode": "Geminiのセッション設定が入力モードと一致しません", - "Requesting microphone": "マイクを要求中", + "Requesting microphone": "マイクへのアクセスを要求中", "Gemini could not submit this input. Start voice again.": "Geminiがこの入力を送信できませんでした。音声をもう一度開始してください。", "Connecting to Gemini": "Geminiに接続中", "Ask or command": "質問またはコマンドをどうぞ", @@ -2388,7 +2388,7 @@ "anywhere in the loaded data": "読み込み済みデータ全体", "in view": "表示範囲内", "within {radius} of the view centre": "表示中心から{radius}以内", - "within {radius} of {place} (Contacts window)": "{place}から{radius}以内(コンタクトのウィンドウ)", + "within {radius} of {place} (Contacts window)": "{place}から{radius}以内(コンタクトの範囲)", "within {radius} of {place}": "{place}から{radius}以内", "within {radius}": "{radius}以内", "over {region}": "{region}全域", @@ -2397,7 +2397,7 @@ "last 24 h": "過去24時間", "past 30 d and upcoming": "過去30日間と今後", "the flights layer loads by viewport": "フライトレイヤーは表示範囲ごとに読み込まれます", - "distance is ground distance, not overhead": "距離は地上距離で、真上からの距離ではありません", + "distance is ground distance, not overhead": "距離は地表上の距離で、衛星までの直線距離ではありません", "the count is a lower bound because at least one layer reached its retained limit.": "少なくとも1つのレイヤーが保持上限に達したため、この件数は下限値です。", "{label} off": "{label} オフ", "{label} loading": "{label}読み込み中", @@ -2418,7 +2418,7 @@ "unavailable": "利用不可", "Not answered: {layers}": "応答なし:{layers}", "Toggle voice control": "音声コントロールを切り替え", - "Activate to toggle voice": "有効にすると音声を切り替え", + "Activate to toggle voice": "押すと音声のオン/オフを切り替え", "Voice active": "音声 オン", "Voice could not be started.": "音声を開始できませんでした。", "the active voice session": "有効な音声セッション", @@ -2539,7 +2539,7 @@ "Tracing outline": "輪郭を描画中", "Looking up place": "場所を照会中", "Flying": "移動中", - "Turning on layer": "レイヤーをオン中", + "Turning on layer": "レイヤーを有効化中", "Loading aircraft": "航空機を読み込み中", "Picking nearest": "最寄りを選択中", "Working": "処理中", @@ -2567,7 +2567,7 @@ "Cockpit vision style": "コックピットのビジョンスタイル", "Previous cockpit vision style": "前のコックピットビジョンスタイル", "Previous vision style": "前のビジョンスタイル", - "Current cockpit vision style: NORMAL. Activate for next style.": "現在のコックピットビジョンスタイル:標準。有効にすると次のスタイルへ。", + "Current cockpit vision style: NORMAL. Activate for next style.": "現在のコックピットビジョンスタイル:標準。押すと次のスタイルに切り替わります。", "Current style: NORMAL — click for next": "現在のスタイル:標準 — クリックで次へ", "CURRENT": "現在", "Next cockpit vision style": "次のコックピットビジョンスタイル", @@ -2602,12 +2602,12 @@ "Location-based information": "位置に基づく情報", "TEMP": "気温", "WIND": "風", - "SKY": "空", + "SKY": "天気", "PRECIP": "降水", "MM": "mm", "Weather data by Open-Meteo.com": "気象データ提供:Open-Meteo.com", "Cockpit briefing pages": "コックピットのブリーフィングページ", - "SIG": "信号", + "SIG": "シグナル", "Show Live Signals": "ライブシグナルを表示", "NEWS": "ニュース", "Show Regional News": "地域ニュースを表示", @@ -2696,7 +2696,7 @@ "Radio volume": "ラジオの音量", "STATION SITE": "放送局サイト", "DIRECTORY: RADIO BROWSER": "ディレクトリ:RADIO BROWSER", - "Audio connects directly to the broadcaster after you press play. Your IP is visible to that broadcaster.": "再生ボタンを押すと、音声は放送局に直接接続されます。IPアドレスは放送局に表示されます。", + "Audio connects directly to the broadcaster after you press play. Your IP is visible to that broadcaster.": "再生ボタンを押すと、音声は放送局に直接接続されます。お使いのIPアドレスは放送局側から見えます。", "Local RTL-SDR receiver": "ローカルRTL-SDR受信機", "LOCAL RTL-SDR": "ローカルRTL-SDR", "Chrome/Edge · WebUSB · one local tuner shared by FM and the Local ADS-B layer.": "Chrome/Edge · WebUSB · 1台のローカルチューナーをFMとローカルADS-Bレイヤーで共有します。", @@ -2776,7 +2776,7 @@ "Red": "赤", "Clear": "消去", "Remove every mark from the board": "ボードからすべてのマークを削除", - "Show your own GeoJSON, KML, KMZ or GPX files on the globe (or drop them onto it). File bytes stay on this device; overlays can appear in map screenshots shared with voice.": "手元のGeoJSON、KML、KMZ、GPXファイルを地球上に表示します(地球にドロップすることもできます)。ファイルのデータはこのデバイスから出ません。オーバーレイは、音声と共有される地図のスクリーンショットに写る場合があります。", + "Show your own GeoJSON, KML, KMZ or GPX files on the globe (or drop them onto it). File bytes stay on this device; overlays can appear in map screenshots shared with voice.": "手元のGeoJSON、KML、KMZ、GPXファイルを地球上に表示します(地球にドロップすることもできます)。ファイルのデータはこのデバイスから出ません。オーバーレイは、音声アシスタントと共有される地図のスクリーンショットに写る場合があります。", "Import": "インポート", "Choose GeoJSON, KML, KMZ or GPX files": "GeoJSON、KML、KMZ、GPXファイルを選択", "Imported files": "インポートしたファイル", @@ -2814,8 +2814,8 @@ "Image fit": "画像の表示方法", "FIT": "全体", "Fit: show the whole photo, with dark bars where its shape differs from the frame": "全体:写真全体を表示し、枠と縦横比が異なる部分は黒帯で埋めます", - "FILL": "フィル", - "Fill: fill the frame edge to edge, cropping the photo": "フィル:枠いっぱいに表示し、写真をトリミングします", + "FILL": "全面", + "Fill: fill the frame edge to edge, cropping the photo": "全面:枠いっぱいに表示し、写真をトリミングします", "Close the image and deselect it on the map": "画像を閉じて地図上の選択を解除", "Close the street-level image": "ストリートレベル画像を閉じる", "Street-level viewer": "ストリートレベルビューアー", @@ -2834,8 +2834,8 @@ "CAPTURE SHOT": "ショット取得", "UPDATE SHOT": "ショット更新", "START": "開始", - "EXPORT PRESETS": "プリセット書出", - "IMPORT": "読込", + "EXPORT PRESETS": "エクスポート", + "IMPORT": "インポート", "RUN LOG": "実行ログ", "POWER UP": "パワーアップ", "GROUND STATION · PROVIDER SETTINGS": "地上局 · プロバイダー設定", diff --git a/src/ui/styles/cjk.css b/src/ui/styles/cjk.css index d9cb9246d..1315a8d23 100644 --- a/src/ui/styles/cjk.css +++ b/src/ui/styles/cjk.css @@ -62,3 +62,10 @@ html:is(:lang(zh), :lang(ja)) .recent-imagery-readout .ri-card-sensor { white-space: normal; text-overflow: clip; } + +/* The Japanese imagery slot line wraps at its · separators, never inside a + word (プレ / ビュー); a run too long for the line still breaks. */ +html:lang(ja) .recent-imagery-readout .ri-slot-value { + word-break: keep-all; + overflow-wrap: break-word; +}