Files
openless/openless-all/app/src/i18n/ja.ts
T
Chris233 6efc8396ea feat(macos): auto-select newline mode for terminal apps (#988)
* feat(macos): add line feed newline option

* feat(macos): auto-select newline mode by target app

* style(macos): localize newline fallback comment
2026-08-23 16:30:17 +08:00

1661 lines
107 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import type { zhCN } from './zh-CN';
import { en } from './en';
// 日本語 (Beta) — AI 機械翻訳ベース。ネイティブ話者によるレビューを推奨。
// 構造は zh-CN.ts に追従。新しい key を追加する場合は ja.ts / ko.ts も同時に
// 更新してください(更新されない key は ...en で英語にフォールバックします)。
export const ja: typeof zhCN = {
...en,
app: {
name: 'OpenLess',
tagline: '自然に話し、きれいに書く',
},
common: {
loading: '読み込み中…',
retry: '再試行',
settingsLoadFailed: '設定の読み込みに失敗しました',
refresh: '更新',
clear: 'クリア',
copy: 'コピー',
delete: '削除',
later: '後で',
cancel: 'キャンセル',
close: '閉じる',
show: '表示',
hide: '非表示',
saved: '保存しました',
saving: '保存中',
copied: 'コピーしました',
operationFailed: '操作に失敗しました',
add: '追加',
durationSeconds: '{{value}} 秒',
durationMillis: '{{value}}ミリ秒',
durationMinutes: '{{value}} 分',
},
capsule: {
thinking: 'thinking',
using: 'using',
cancelled: 'キャンセルしました',
error: 'エラーが発生しました',
inserted: '{{count}} 文字を入力しました',
translating: '翻訳中',
selectionPolish: {
polishing: '推敲中...',
replaced: '置き換えました',
noSelection: '選択されていません',
failed: '推敲に失敗しました。もう一度お試しください',
},
},
selectionPolishPreview: {
title: '選択範囲の推敲プレビュー',
subtitle: '編集可能です。確認後はじめて元の選択範囲を置き換えます。',
cancel: 'キャンセル',
resultLabel: '推敲結果',
sourcePrefix: '原文:',
applyError: '適用できません:',
confirmReplace: '確認して置き換え',
},
qa: {
title: '質問',
headerHint: 'いつでも質問',
thinking: '思考中…',
error: 'エラーが発生しました。後でもう一度お試しください。',
errorRetry: '再試行',
errorRetryHint: 'もう一度お試しください。',
pinTooltip: 'ピン留め(自動で閉じない)',
unpinTooltip: 'ピン留めを解除',
closeTooltip: '閉じる',
micLabel: '音声で質問',
micStop: '録音を終了',
selectionPreview: '選択テキスト:',
emptyTitle: 'ご用件は?',
emptyDesc: 'テキストを選択して質問するか、下に直接入力してください。回答はここに表示され、続けて質問できます。',
recordingHint: '録音中… {{recordHotkey}} をもう一度押して終了し、質問します',
mobileRecordLabel: '録音ボタン',
mobileRecordStart: '録音を開始',
mobileRecordStop: '終了して送信',
composerPlaceholder: '質問を入力。Enter で送信',
composerSend: '送信',
statusIdle: '{{recordHotkey}} で質問',
statusRecording: '録音中',
statusThinking: '思考中',
statusError: 'エラー',
jumpToLatest: '最新へ移動',
},
lessComputer: {
title: 'Less Computer',
subtitle: 'コンピュータに何をさせますか?',
you: 'あなた',
working: '操作中…',
tool: '{{name}} を使用',
compaction: 'コンテキストを圧縮しました',
done: '完了',
cost: '${{cost}}',
error: '失敗しました。再試行してください。',
closeTooltip: '閉じる',
jumpToLatest: '最新へ移動',
inputPlaceholder: '指示を入力、Enter で送信',
send: '送信',
approvalTitle: 'ブロックされたコマンドを実行?',
approvalRerunWarning: '注意:承認すると、すでに変更されたワークスペース上で再実行され、冪等でない操作に副作用が生じる可能性があります。',
approve: '許可',
deny: '拒否',
approved: '許可済み',
denied: '拒否済み',
},
nav: {
overview: '概要',
history: '履歴',
vocab: '語彙',
style: 'スタイル',
marketplace: 'マーケット',
translation: '翻訳',
selectionAsk: '選択追問',
polishMode: '推敲モード',
group: {
style: 'スタイル',
tools: 'ツール',
},
localAsr: 'モデル設定',
more: 'その他',
},
marketplace: {
kicker: 'MARKETPLACE',
title: 'スタイルパック マーケット',
desc: 'コミュニティのスタイルパックを閲覧・インストール・共有。',
searchPlaceholder: '名前 / 説明 / タグを検索…',
sortPopular: '人気順',
sortNew: '新着',
uploadBtn: 'アップロード',
uploadDisabledHint: '先に 設定 → マーケット で GitHub ユーザー名を設定してください',
refreshBtn: '更新',
empty: 'まだスタイルパックがありません',
emptyHint: '別のキーワードを試すか、自分のパックを共有してみましょう',
loadFailed: '読み込み失敗:{{err}}',
noDescription: '(説明なし)',
installBtn: 'インストール',
installingBtn: 'インストール中…',
downloadZipBtn: 'ZIP をダウンロード',
downloadingZipBtn: 'ダウンロード中…',
downloadAria: '「{{name}}」の ZIP をダウンロード',
likeBtn: 'いいね',
installed: '「{{name}}」をローカルにインストールしました',
downloaded: '「{{name}}」の ZIP をダウンロードしました',
uploaded: 'アップロード完了、審査中',
uploadTitle: 'アップロードするパックを選択',
uploadHint: '{{login}} としてアップロードします。内容はクラウド審査キューに送信されます。',
uploadNoLocal: 'アップロード可能なローカルパックがありません',
errors: {
detail: '詳細の読み込み失敗:{{err}}',
install: 'インストール失敗:{{err}}',
download: 'ZIP のダウンロード失敗:{{err}}',
like: 'いいね失敗:{{err}}',
upload: 'アップロード失敗:{{err}}',
loadLocal: 'ローカルパック読み込み失敗:{{err}}',
},
sortLiked: 'いいね済み',
likedEmpty: 'まだいいねしたパックがありません',
likedEmptyHint: 'パックを開いて星をタップするとここに表示されます',
derivativeBadge: '@{{login}} から派生',
detail: {
withdrawBtn: '公開を取り下げる',
withdrawConfirm: '「{{name}}」をマーケットから取り下げますか?ローカルコピーは保持されます。',
withdrawSuccess: 'マーケットから取り下げました',
withdrawFailed: '取り下げ失敗:{{err}}',
},
myPacks: {
buttonLabel: '自分の公開',
buttonTitle: '{{login}} の公開を見る',
buttonTitleEmpty: '先に 設定 → マーケット で公開者名を設定してください',
searchPlaceholder: '名前・タグを検索',
notLoggedIn: '先に 設定 → マーケット で公開者名を設定してください',
emptyTitle: 'まだ公開したパックはありません',
emptyHint: '「スタイル」ページで編集して「マーケットに公開」をクリックするか、右上からローカルパックをアップロードしてください。',
noMatch: '一致するパックがありません',
summary: '公開済み {{count}} 個',
summaryPending: '公開済み {{count}} 個 · 審査中 {{pending}} 個',
versionDate: 'v{{version}} · {{date}}',
stats: '★ {{likes}} · ↓ {{downloads}}',
actions: {
update: '更新',
withdraw: '取り下げ',
},
loadFailed: '自分の公開の読み込みに失敗:{{err}}',
loadingTitle: '読み込み中…',
loadingHint: 'マーケットからあなたの最新公開を取得しています。',
loadErrorTitle: '読み込み失敗',
loadErrorRetry: '再試行',
},
upload: {
confirmBtn: 'アップロード確定',
updateTitle: '「{{name}}」を更新',
updateHint: 'アップロードするローカルの新版を選んで「アップロード確定」を押してください。同名パックは自動選択されます。',
recommendedBadge: '推奨',
},
state: {
pending: '審査中',
approved: '公開済み',
rejected: '却下',
withdrawn: '取り下げ',
superseded: '新版に置換済み',
unknown: '不明',
},
oauth: {
title: 'GitHub でサインイン',
generating: 'デバイスコードを生成中…',
browserHint: 'ブラウザで {{uri}} を開き、このコードを入力してください:',
copyBtn: 'コピー',
copied: 'デバイスコードをコピー',
copyFailed: 'コピー失敗:{{err}}',
openBrowserBtn: 'ブラウザを開く',
cancelBtn: 'キャンセル',
waiting: 'ブラウザでの認可を待っています…',
successAs: '@{{login}} としてサインイン',
retryBtn: '再試行',
closeBtn: '閉じる',
loginBtn: 'サインイン',
loginTooltip: 'GitHub でサインイン',
reloginTooltip: '再サインイン / アカウント切替(現在 @{{login}})',
},
modal: {
loggedIn: '現在のサインイン ID —— 設定 → 録音 → マーケット で変更',
notLoggedIn: '未サインイン —— 設定 → 録音 → マーケット で公開者名を設定',
notLoggedInLabel: '未サインイン',
},
},
shell: {
shortcutLabel: '録音ショートカット',
shortcutHint: '開始 / 停止',
betaTag: 'BETA',
betaNote: 'すべてのデータはローカルにのみ保存されます。',
navHint: {
overview: 'ステータス概要:使用状況・プロバイダー・権限の状態',
history: '入力履歴:過去の書き起こしを検索・再生・コピー',
vocab: '語彙:固有名詞の認識精度を上げるカスタムホットワード',
style: 'スタイル:出力スタイルとカスタムプロンプトを管理',
translation: '翻訳:Shift を押しながら話すと目標言語で挿入',
selectionAsk: '選択質問:テキストを選択して音声で質問',
settings: '環境設定:ショートカット・プロバイダー・プライバシー・更新',
},
footer: {
account: 'アカウント',
feedback: 'フィードバック',
settings: '設定',
help: 'ヘルプ',
version: 'バージョン {{version}}',
helpPopover: {
tagline: 'ローカル駆動の音声入力レイヤー',
releaseNotes: 'リリースノートを見る ↗',
docs: 'ヘルプセンター ↗',
},
},
providerPrompt: {
title: '音声プロバイダーを設定',
body: 'ASR または LLM プロバイダーが未設定のため、音声入力と整文が一時的に利用できません。',
later: '後で',
openSettings: '設定を開く',
},
hotkeyModePrompt: {
title: '録音方式を確認',
body: 'デフォルトがトグルに変更されました。以前トリガーモードを変更した場合は、録音設定で確認してください。',
later: '後で通知',
openSettings: '録音設定を開く',
},
},
onboarding: {
welcome: 'OpenLess へようこそ',
intro: 'ローカルで話し、ローカルで文字に。開始前にシステム権限が 2 つ必要です。',
accessibilityTitle: 'アクセシビリティ',
hotkeyTitle: 'グローバルショートカット',
accessibilityDesc: 'グローバルショートカット(既定 {{trigger}})の検知と、認識結果のカーソル位置への入力に使用します。',
hotkeyDesc: 'グローバルショートカット監視が利用可能か確認するために使用します。',
micTitle: 'マイク',
micDesc: '音声入力の取得に使用します。',
actionNotApplicable: '権限不要',
actionGranted: '許可済み',
actionOpenSystem: 'システム設定を開く',
actionRestart: 'アクセシビリティをリセットして OpenLess を再起動',
actionGrant: '許可する',
actionRequestMic: '許可ダイアログを表示',
micNoDeviceHint: 'マイクが検出されません。マイクを接続して有効にしてから、もう一度お試しください。',
accessibilityHint: '許可後は **OpenLess を完全に終了** してから再起動してください(macOS TCC の仕様)。',
footerHint: 'すべての権限が揃うとこのガイドは自動で閉じます。閉じない場合はメニューバーの OpenLess → 終了 から再起動してください。',
continueToSettings: '設定のみ開く(音声とグローバルショートカットは利用不可)',
androidContinue: 'アプリに進む',
androidFooterHint: '音声入力にはマイク権限が必要です。上の「許可ダイアログを表示」をタップするか、先にアプリへ進み、概要ページで後から許可してください。',
androidTitle: 'OpenLess を設定',
androidIntro: 'モバイル権限とサービス設定を順番に完了します。',
androidStepCounter: '{{current}} / {{total}}',
androidBack: '戻る',
androidNext: '次へ',
androidFinish: '完了して開始',
androidSteps: {
microphoneTitle: 'マイク権限',
microphoneDesc: 'Android のシステム権限カードを表示し、OpenLess の録音を許可します。',
accessibilityTitle: 'アクセシビリティサービス',
accessibilityDesc: '認識結果を現在の入力欄へ貼り付け、入力環境の検出を補助します。',
overlayPermissionTitle: 'フローティングウィンドウ権限',
overlayPermissionDesc: '他のアプリ上に録音コントロールを表示できるようにします。',
overlayConfigTitle: 'フローティングウィンドウ設定',
overlayConfigDesc: '表示タイミング、起動方法、スワイプ操作、ボタンサイズを設定します。',
asrTitle: 'ASR クラウドサービス',
asrDesc: '音声認識サービスのプロバイダー、キー、エンドポイント、モデルを設定します。',
llmTitle: 'LLM サービス',
llmDesc: '整文、翻訳、Q&A に使う言語モデルサービスを設定します。',
},
},
overview: {
kicker: 'DASHBOARD',
title: '本日の概要',
desc: '本日のディクテーション統計とシステム状態。',
pressPrefix: '押す',
pressSuffix: 'で録音開始',
asrKind: 'ASR 音声',
llmKind: 'LLM モデル',
asrName: 'Volcengine',
asrSubname: 'bigmodel',
llmName: 'OpenAI 互換',
llmConfigured: 'アクティブ LLM を設定済み',
llmNotConfigured: '未設定',
statusConfigured: '設定済み',
statusNotConfigured: '未設定',
statusUnknown: '読み取れません',
credentialsLoadError: '認証情報の状態を読み取れません',
metricChars: '本日の文字数',
metricSegments: '{{count}} セグメント',
metricDuration: '本日の合計時間',
metricAvg: '平均セグメント',
metricAvgTrend: '本日の平均',
metricNoData: 'データなし',
historyLoadError: '履歴の読み込みに失敗',
metricTotal: '累計記録',
metricTotalTrend: 'ローカル保存(上限 200)',
activityTitle: '年間アクティビティ',
activityCount: '{{count}} 回の入力',
activityLoadError: 'アクティビティの読み込みに失敗',
period: {
ariaLabel: '集計期間',
last7Days: '直近 7 日',
last30Days: '直近 30 日',
dailyAverage: '1 日平均 {{value}}',
minutes: '{{value}} 分',
hoursMinutes: '{{hours}} 時間 {{minutes}} 分',
},
metricName: {
ariaLabel: '指標',
count: '件数',
chars: '文字数',
duration: '時間',
},
recentTitle: '最近の認識',
recentAll: 'すべて表示 →',
recentEmpty: '記録がありません。{{trigger}} を押して最初の録音を始めましょう。',
recentLoadFailed: '最近の認識を読み込めません。再試行してください。',
historyRetry: '再試行',
weekDays: ['日', '月', '火', '水', '木', '金', '土'],
inAppDictation: {
title: 'アプリ内音声入力',
start: '録音開始',
stop: '録音停止',
idle: 'タップして録音開始',
recording: '録音中…',
processing: '処理中…',
},
androidMicBanner: {
title: 'マイク権限が必要です',
desc: 'マイクを許可すると、アプリ内音声入力が使えます。',
grant: '許可ダイアログを表示',
openSettings: '設定を開く',
},
},
history: {
exportError: '録音のエクスポートに失敗しました。もう一度お試しください。',
kicker: 'HISTORY',
title: '履歴',
desc: 'ローカルに保存された認識記録。',
filterAll: 'すべて',
summary: '合計 {{total}} 件 · 表示 {{shown}}',
searchPlaceholder: '文字起こしを検索…({{shortcut}})',
searchNoMatch: '「{{query}}」に一致する項目はありません。',
empty: '履歴がありません。{{trigger}} を押して録音してみましょう。',
loadFailed: '履歴の読み込みに失敗:{{err}}',
retry: '再試行',
clearFailed: '履歴の消去に失敗:{{err}}',
deleteFailed: '記録の削除に失敗:{{err}}',
copyFailed: 'コピーに失敗:{{err}}',
playRecording: '録音を再生',
audioLoading: '読み込み中…',
audioDecodeFailed: '音声デコード失敗:{{err}}',
exportRecording: '録音をエクスポート',
exportFailed: 'エクスポート失敗:{{err}}',
retranscribe: '再認識',
retranscribing: '認識中…',
retranscribeFailed: '再認識に失敗:{{err}}',
rawLabel: '原文',
rawEmpty: '(空)',
selectHint: '左側から 1 件選択して詳細を表示。',
recorded: '録音 {{duration}}',
stepAsr: '認識',
multimodalPipeline: 'マルチモーダル',
stepAsrHint: 'キーを離してから認識結果を待った時間。ストリーミング認識は録音中に変換するため、通常は録音時間よりずっと短くなります。',
stepPolish: '推敲',
stepInsert: '挿入',
chars: '{{count}} 文字',
vocabHits: '{{count}} ホットワード',
inserted: '入力済み',
pasteSent: '貼り付けを試行',
copiedFallback: 'コピー済み(要 {{shortcut}})',
insertFailed: '入力失敗',
confirmClear: '全 {{count}} 件の記録を削除しますか?この操作は取り消せません。',
backToList: '一覧に戻る',
repolish: {
title: '再整文',
hint: '上の原文でもう一度整文を実行します。結果は今回の表示のみで、この記録には書き戻しません。元のスタイルパックが削除されているか、古い記録の場合は、再試行では現在のスタイルを使用します。',
retry: '同じスタイルで再試行',
retrying: '再試行中…',
apply: '適用',
applying: '整文中…',
pickStyle: 'スタイルパックを選択',
noPacks: '利用できるスタイルパックがありません。',
packsLoadFailed: 'スタイルパックの読み込みに失敗:{{err}}',
failed: '再整文に失敗:{{err}}',
timeout: '現在の LLM プロバイダーが 30 秒以内に応答しませんでした。より速いプロバイダーに切り替えるか、後でもう一度お試しください(無料モデルプールは混雑しがちです)。',
resultTitle: '{{name}} の結果',
retryResultTitle: '再試行の結果',
empty: '(モデルが空の結果を返しました)',
clear: '結果を消去',
},
},
vocabCard: {
title: 'この語を覚えますか?',
accept: '覚える',
reject: '不要',
},
insertFallbackCard: {
copy: 'コピー',
copied: 'コピーしました',
copyFailed: 'コピーに失敗',
dismiss: '閉じる',
},
vocab: {
kicker: 'VOCABULARY',
title: '語彙',
desc: '新語や専門用語を追加して認識精度を向上。',
sectionTitle: '項目',
placeholder: '単語を入力し、Enter または追加をクリック…',
tip: '日本語と英数の混在対応 · 数字始まりは字面通り認識 · ヒット回数を自動カウント',
loadFailed: '読み込み失敗:{{err}}',
empty: '語彙がありません。新語や専門用語を上に入力すると、ディクテーション時に優先的にマッチします。',
tipDisabled: 'クリックで無効化',
tipEnabled: 'クリックで有効化',
removeAria: '削除',
learnedSection: '自動収集({{count}})',
removeAllLearned: 'すべて削除',
corrections: {
title: '補正ルール',
tip: 'ASR の誤認識を修正。{num} 数字ワイルドカード対応。',
patternPlaceholder: '誤認識された表記(例:{num}粒)',
replacementPlaceholder: '修正後の表記(例:{num}例)',
empty: '補正ルールはまだありません。',
invalid: '文字列の置換、または {num} 数字ワイルドカードを 1 つだけ含むルールに対応しています。例:{num}粒 → {num}例。',
tipDisabled: 'クリックしてこのルールを無効化',
tipEnabled: 'クリックしてこのルールを有効化',
removeAria: '補正ルールを削除',
learnedBadge: '自動',
learnedTip: 'あなたの手直しから自動で収集したものです。いつでも削除できます。',
onlyLearned: '自動収集のみ表示({{count}})',
removeAllLearned: '自動収集をすべて削除',
suggestTitle: 'この直しを覚えますか?',
suggestAccept: '覚える',
suggestDismiss: '不要',
},
presets: {
title: 'シーンプリセット',
tip: '複数選択で一括適用。編集・新規作成対応。',
create: 'プリセット新規作成',
apply: '選択中を有効化',
save: 'プリセットを保存',
edit: '{{name}} を編集',
newPreset: '新しいプリセット',
namePlaceholder: 'プリセット名',
wordsPlaceholder: '語彙(カンマまたは改行区切り)',
},
},
style: {
kicker: 'STYLE',
title: '出力スタイル',
desc: '録音のデフォルト出力スタイルを選択。',
masterToggle: '全体有効化',
currentDefault: '現在のデフォルト',
ariaSetDefault: 'デフォルトに設定',
saveFailed: '保存に失敗しました: {{error}}',
customPromptTitle: 'カスタムプロンプト',
customPromptPlaceholder: '任意。このスタイルの組み込み system prompt の末尾に追加されます。',
customPromptHint: '空のままなら現在の挙動を維持します。保存後、このスタイルの整文と repolish の両方に適用されます。Ctrl/Cmd+Enter でも保存できます。',
customPromptSave: 'プロンプトを保存',
customPromptDirty: '未保存',
systemPromptMovedHint: 'フルの system prompt 編集は Settings -> Providers に移動しました。このページではスタイルの有効化とデフォルト設定だけを扱います。',
modes: {
raw: { name: '原文', desc: '句読点と必要な区切りのみ補い、書き換えや拡張はしません。', sample: '元の話し言葉を保持。「えー」「あの」などの口癖は除去しますが、文の組み替えはしません。' },
light: { name: '軽い整文', desc: '口癖の除去、句読点の補完、自然な送信可能テキストへの整理。', sample: '原稿読み上げのようにならないよう、語気と表現の癖を残しつつ、文章をなめらかにします。' },
structured: { name: '明確な構造', desc: '複数のトピックや手順がある場合は、自動的に箇条書きに整理します。', sample: '1. トピック 1\na. ポイント\nb. ポイント\n2. トピック 2\na. ポイント\nb. ポイント' },
formal: { name: '正式な表現', desc: '業務コミュニケーションやメール用途向け。よりプロフェッショナルで完成度の高い文体。', sample: 'メール用途では挨拶 / 結びを自動認識します。空疎な定型句は持ち込みません。' },
},
pack: {
selectionListTitle: '選択範囲の推敲スタイル',
selectionListDesc: 'ASRを使わない選択済みテキスト向け:文法・明瞭さ・書式の推敲。スタイルとプロンプトを個別に選べます。',
dictationTab: '録音 / ASRスタイル',
selectionTab: '選択範囲の推敲',
current: '現在',
useForSelection: '選択範囲に使用',
writtenPolish: '書面の推敲',
selectionPromptTitle: '選択範囲の推敲プロンプト(ASRなし)',
selectionPromptHint: 'ユーザーが選択した書面テキスト用。ASRは経由せず、書き起こしとして扱わず、その中の質問にも答えません。',
selectionPromptEditorDesc: '選択範囲の推敲プロンプトを編集中。入力はユーザーが選択した書面テキストで、ASRは経由しません。',
dictationPromptEditorDesc: '録音 / ASRスタイルのプロンプトを編集中。入力は音声認識後の書き起こしテキストです。',
dictationPromptTitle: '録音 / ASRプロンプト',
dictationPromptHint: '録音の書き起こし後のASRテキスト用。口語整理、ASR誤字修正、固有名詞の復元ルールをここに書けます。',
selectionPromptFallback: '書面推敲プロンプトが未設定です。安全なデフォルトを使用します。',
selectionActivated: '「{{name}}」を選択範囲の推敲に設定しました',
selectionActivateFailed: '選択範囲の推敲スタイル切替に失敗:{{err}}',
selectionChars: '{{count}} 文字',
kicker: 'STYLE PACKS',
title: 'スタイルパック',
desc: 'ローカルスタイルパックを管理。',
marketplaceBtn: 'マーケット',
loadFailed: 'スタイルパックの読み込みに失敗:{{err}}',
importZip: 'ZIP をインポート',
exportZip: 'ZIP をエクスポート',
exportShort: 'エクスポート',
publishMarketplace: 'マーケットに公開',
updateMarketplace: 'マーケットの新版に更新',
publishDisabledHint: '先に 設定 → マーケット で GitHub ユーザー名を設定してください',
publishSuccess: '公開完了、マーケット審査待ち',
publishFailed: '公開失敗:{{err}}',
publishBuiltinRejected: 'ビルトインパックは直接公開できません。先に編集してインポート版を作成してください。',
builtin: 'ビルトイン',
imported: 'インポート',
active: '使用中',
activate: '有効化',
edit: '編集',
closeEditor: '閉じる',
unsaved: '未保存',
listTitle: 'ローカルパック',
listDesc: 'パックを閲覧・切替。',
listCount: '{{count}} 個',
addPackTileTitle: '新規パック',
addPackTileHint: '空のテンプレートから開始。',
createSuccess: '新規パックを作成しました',
createFailed: 'パック作成失敗:{{err}}',
save: '保存',
revert: '元に戻す',
saveSuccess: 'スタイルパックを保存しました',
saveFailed: 'スタイルパック保存失敗:{{err}}',
activateSuccess: '"{{name}}" を使用中に設定しました',
activateFailed: '使用中の設定に失敗:{{err}}',
importSuccess: '"{{name}}" をインポートしました',
importFailed: 'ZIP インポート失敗:{{err}}',
exportSuccess: '{{path}} にエクスポートしました',
exportFailed: 'ZIP エクスポート失敗:{{err}}',
exportDirtyFirst: 'ZIP をエクスポートする前に現在のパックを保存してください。',
resetBuiltin: 'リセット',
resetSuccess: '"{{name}}" をリセットしました',
resetFailed: 'パックのリセット失敗:{{err}}',
deleteImported: '削除',
deleteConfirm: '"{{name}}" を削除しますか?この操作は取り消せません。',
deleteSuccess: '"{{name}}" を削除しました',
deleteFailed: 'パック削除失敗:{{err}}',
summaryCurrentEmpty: 'まだパックが選択されていません',
editorTitle: 'パック編集',
editorDesc: 'このパックを編集します。',
metaTitle: 'インストール情報',
metaSource: 'ソース',
metaBaseMode: 'ベースモード',
metaUpdatedAt: '更新日時',
fieldName: '名前',
fieldAuthor: '作者',
fieldAuthorPlaceholder: '任意。ソース表示用',
fieldVersion: 'バージョン',
fieldTags: 'タグ',
fieldTagsPlaceholder: 'カンマ区切り、例: community, voiceover, formal',
fieldDescription: '説明',
fieldModel: '推奨モデル(メタデータのみ)',
fieldModelPlaceholder: '任意。例: gpt-4.1 / deepseek-v3',
fieldModelHint: 'メタデータのみ。実際のモデルは切り替わりません。',
fieldCompatibility: '互換アプリバージョン',
fieldCompatibilityPlaceholder: '任意。例: >=1.3.0',
fullPromptTitle: 'System Prompt',
fullPromptHint: 'このパック固有の Prompt です。',
promptChars: '{{count}} 文字',
runtimeTitle: 'OpenLess 実行時付加指令',
runtimeDesc: '読み取り専用の実行時ヘルパー。',
runtimeContextTitle: 'コンテキスト前提',
runtimeContextDesc: '言語とアプリのコンテキストから',
runtimeContextEmpty: '現在のプレビューでは付加されません。',
runtimeHotwordTitle: 'ホットワードブロック',
runtimeHotwordDesc: '有効なホットワードから',
runtimeHotwordEmpty: '現在のプレビューでは付加されません。',
runtimeHistoryTitle: 'マルチターン履歴ガード',
runtimeHistoryDesc: 'ライブのマルチターン polish のみで使用',
runtimeHistoryEmpty: '前のターンが存在する場合のみ付加。',
runtimeActive: '有効',
runtimeInactive: '無効',
runtimePreviewFailed: '実行時プレビュー生成失敗:{{err}}',
runtimePreviewOmittedFrontApp: 'プレビューはフロントアプリのラベルを省略しています。',
examplesTitle: '効果例',
examplesDesc: 'パックと一緒にエクスポートされます。',
addExample: '例を追加',
examplesEmpty: 'まだ例がありません。',
exampleTitlePlaceholder: '例 {{index}} のタイトル',
exampleInput: '入力',
exampleOutput: '出力',
examplesCount: '{{count}} 個の例',
discardCloseConfirm: '未保存の変更を破棄してエディタを閉じますか?',
discardSwitchConfirm: '未保存の変更を破棄して "{{name}}" に切り替えますか?',
derivativeBadge: '@{{login}} から派生',
},
},
translation: {
kicker: 'TRANSLATION',
title: '翻訳',
desc: '録音後に自動翻訳してから入力。',
statusEnabled: '有効',
statusDisabled: '無効',
working: {
title: '作業言語',
desc: '日常使用する言語を選択し、整文と翻訳に反映。',
},
target: {
title: '翻訳ターゲット言語',
desc: '録音中に Shift で翻訳を起動。「無効」で Shift 無効化。',
disabled: '無効(Shift で翻訳を発動しない)',
sameAsWorking: 'ターゲット言語が唯一の作業言語と同じため、翻訳は発動しません(Shift を押しても通常の整文になります)。別のターゲットを選ぶか、上で作業言語を追加してください。',
},
style: {
title: '翻訳スタイル',
desc: '「スタイル」ページで現在有効なスタイルパックを自動的に引き継ぎます。',
unavailable: '取得できません',
},
save: {
workingFailed: '作業言語の保存に失敗しました。もう一度お試しください。',
targetFailed: '翻訳ターゲット言語の保存に失敗しました。もう一度お試しください。',
hotkeyRegisterFailed: '翻訳ショートカットの登録に失敗しました。設定は保存されていません。',
hotkeySaveFailed: '翻訳ショートカットの保存に失敗しました。もう一度お試しください。',
},
howto: {
title: '使い方',
step1: '任意の入力欄にカーソルを置く。',
step2: '{{trigger}} を押して録音開始。',
step3: '録音中に Shift を一度押して翻訳を起動。',
step4: '再度 {{trigger}} を押して停止。',
step5: '翻訳結果がカーソル位置に挿入されます。',
indicatorTitle: '翻訳モードの確認方法',
indicatorDesc: 'Shift を押すと画面下部に青い「翻訳中」表示が出ます。',
fallbackTitle: 'セーフティフォールバック',
fallbackDesc: '翻訳失敗時は原文がそのまま挿入されます。',
},
},
selectionAsk: {
kicker: 'SELECTION ASK',
title: '選択追問',
desc: 'テキストを選択して音声で質問。複数ターンの追問対応。',
statusEnabled: '有効',
statusDisabled: '無効',
hotkey: {
title: 'フロートウィンドウのショートカット',
desc: 'パネルの開閉を制御。パネル内の録音は {{recordHotkey}}。',
optionDisabled: '無効',
chordWarning: '',
},
save: {
hotkeyRegisterFailed: '選択追問ショートカットの登録に失敗しました。設定は保存されていません。',
hotkeySaveFailed: '選択追問ショートカットの保存に失敗しました。もう一度お試しください。',
historySaveFailed: 'Q&A 履歴設定の保存に失敗しました。もう一度お試しください。',
},
history: {
title: '履歴を保存',
desc: '有効時、Q&A 記録をローカルに保存。デフォルト OFF。',
},
howto: {
title: '使い方',
step1: '{{hotkey}} でパネルを開く。',
step2: '任意のアプリでテキストを選択。',
step3: '{{recordHotkey}} で録音、再度押して送信。',
step4: '{{recordHotkey}} で続けて追問可能。',
step5: 'Esc でパネルを閉じ、履歴をクリア。',
windowTitle: 'ウィンドウの位置 + ドラッグ + ピン留め',
windowDesc: 'パネルはドラッグ可能で位置を記憶。ピン留めで開いたままに。',
privacyTitle: 'プライバシー契約',
privacyDesc: '選択テキストはメモリ上のみ。パネルを閉じると破棄。4000 字超は自動切り詰め。',
},
},
settings: {
selectionPolish: {
title: '選択範囲の推敲',
hotkey: '起動ショートカット',
hotkeyDesc: '記録後すぐに有効になります。録音・質問などのグローバルショートカットと重複すると拒否されます。',
delivery: '結果の処理方法',
hint: '任意のテキストを選択してから起動します。マイクやASRは不要で、現在のスタイルパックと専用の選択用プロンプトを使用します。',
directReplace: '直接置き換え',
directReplaceHint: 'モデル完了後に元の選択範囲を安全に置き換えます。',
previewConfirm: 'プレビューして確認',
previewConfirmHint: '編集可能なウィンドウで結果を確認してから、元の選択範囲を置き換えます。',
},
kicker: 'SETTINGS',
title: '設定',
desc: '録音、プロバイダー、ショートカット、権限の設定。',
network: {
title: 'ネットワーク',
useSystemProxyLabel: 'システムプロキシを使用',
useSystemProxyDesc: 'オンにするとリクエストはシステムプロキシを経由します。オフにするとすべて直接接続します(国内サービスの遅延が低くなる傾向)。GitHub ログインやアップデートなど海外サービスには接続できない場合があります。リアルタイム音声ストリームと Less Computer は影響を受けません。',
},
dataStorage: {
title: 'データ保存',
desc: 'この端末に保存される会話履歴とコンテキスト。',
cursorContextLabel: 'カーソル文脈(実験的)',
cursorContextDesc:
'推敲時に、いま書いている文書のカーソル周辺の原文を読み取り、同音語・固有名詞・代名詞の書き分けをモデルが判断できるようにします。オンにすると、そのテキストがリクエストとともに設定中の LLM プロバイダへ送信されます。オフのときは一文字も読み取りません。パスワード入力欄、Secure Input、パスワード管理アプリ、ターミナルは常に読み取りません。macOS のみ。',
},
codingConsole: {
title: 'Claude コンソール',
desc: 'ローカルの Claude Code と MCP(computer use)の状態を検出し、ガードレール付きで Claude をヘッドレス実行して、出力とコストをストリーミング表示します。',
guardNote: '復元可能な操作はデフォルトで許可。rm -rf / sudo / 強制プッシュなどの高リスクコマンドはブロック。作業ディレクトリが git リポジトリなら実行前にスナップショットを作成し巻き戻し可能。',
status: '状態',
detect: '検出',
detecting: '検出中…',
installed: 'Claude を検出',
notInstalled: 'claude が見つかりません',
notInstalledHint: 'まず Claude Code をインストールしてください(docs.anthropic.com/claude-code 参照)。または下に実行ファイルのフルパスを入力してください。',
mcpServers: 'MCP サーバー {{count}} 件',
computerUsePresent: 'デスクトップ操作(computer use)MCP を検出',
computerUseAbsent: 'デスクトップ操作 MCP なし(コピー / 貼り付けなどの軽い操作は Bash で可能、不要)',
exePath: '実行ファイル',
workdir: '作業ディレクトリ',
workdirDesc: '任意。Claude はこのディレクトリ内で実行。git リポジトリなら実行前スナップショットで巻き戻し可能。',
workdirPlaceholder: '空欄なら一時ディレクトリで実行',
permissionMode: '権限モード',
mode: {
acceptEdits: '許可(復元可能)',
plan: '読み取り専用 / 計画',
default: 'デフォルト(都度確認)',
bypassPermissions: '完全許可(高リスク)',
},
promptPlaceholder: 'Claude に指示、例:カレントディレクトリのファイル名を一覧表示',
run: '実行',
running: '実行中…',
cancel: 'キャンセル',
clear: 'クリア',
riskWarn: '高リスクの意図を検出:{{reason}}。ガードレールが実行時に高リスクコマンドをブロックします。',
toolUse: 'ツール {{name}}',
done: '完了',
doneCost: '完了 · コスト ${{cost}}',
cancelled: 'キャンセル済み',
outputPlaceholder: '出力はここにストリーミング表示されます…',
},
codingAgent: {
title: 'Less Computer',
desc: 'キーを押して話すと、選択した Agent が PC を操作します。macOS のみ。',
enable: 'Less Computer を有効化',
comingSoonNote: '設定はすぐ保存されます。ホットキー起動と実行フローは今後のバージョンで対応。',
hotkeyHint: '有効にすると、ショートカットを押しながら話し、離すと選択した Agent の結果がカプセルに表示されます。',
voiceHotkey: '押しながら話すキー',
voiceHotkeyDesc: '押して話す、離して実行。Ctrl/Option/Fn などの単キー対応。機能の説明は「詳細」設定ページを参照。',
provider: 'Agent バックエンド',
opencodeReady: 'OpenCode v{{version}} を検出しました。',
opencodeMissing: 'opencode コマンドが見つかりません。先にインストール(npm i -g opencode-ai)して opencode auth login でログインしてください。',
cliReady: '{{name}} v{{version}} を検出しました。',
cliMissing: '{{name}} コマンドが見つかりません。先にインストールとログインを行うか、下の「実行ファイル」に絶対パスを入力してください。',
sandboxGuardHint: 'このバックエンドは粗い粒度のサンドボックス段階しか持たず、コマンド単位の高リスク一覧はありません。制限に触れた場合はそのままエラーとして報告し、「このコマンドを承認」カードは表示されません。',
codexModelHint: 'Codex のモデル名(gpt-5 など)を入力します。空欄の場合は ~/.codex/config.toml の設定を使います。',
codexBudgetHint: 'Codex には実行ごとの米ドル予算上限がありません。料金は設定したプロバイダーに依存します。',
codexMode: {
plan: '読み取り専用 / 計画',
workspaceWrite: 'ワークスペースへの書き込みを許可',
},
codexModelPlaceholder: '空欄 = Codex の既定値',
dshModelHint: 'dsh の headless プロファイルにモデル切り替えはありません。モデルは dsh 自身のプロファイルで決まり、ここでは変更できません。',
panelHotkey: 'パネルキー(音声 Agent)',
panelHotkeyDesc: '録音 → ASR → Claude → パネルにストリーミング表示。デフォルト Cmd/Ctrl+Shift+Enter。',
quickHotkey: 'クイック取得キー',
quickHotkeyDesc: '選択テキストを取得 → Claude → 結果をカーソル位置へ。パネルなし、より高速。',
model: 'モデル',
modelPlaceholder: 'デフォルト: sonnet',
modelDefault: 'デフォルト(自動 sonnet)',
modelHint: 'Haiku = 最速 · Sonnet = バランス · Opus = 最強',
opencodeModelDefault: 'OpenCode のデフォルトモデルを使用',
opencodeModelHint: '現在の OpenCode アカウントで利用できる provider/model を自動取得し、選択内容をすぐ保存します。',
opencodeModelsRefresh: 'モデルを再取得',
opencodeModelsRefreshing: 'OpenCode モデルを取得中…',
opencodeModelsLoaded: '{{count}} 個のモデルを取得しました。',
opencodeModelsEmpty: '利用可能なモデルが返されませんでした。OpenCode にログインするか、モデルプロバイダーを設定してください。',
opencodeModelsError: 'モデルの取得に失敗しました:{{message}}',
exe: '実行ファイルのパス',
openPanel: 'テキストテスト',
openPanelHint: 'Less Computer パネルを直接開き、現在の Agent とモデル設定をテキストで確認します。',
openPanelAction: 'Less Computer を開く',
},
debug: {
title: 'デバッグツール',
desc: '認識の問題を調査するときに使用。通常はオフのままで構いません。',
cursorProbeLabel: 'カーソル文脈プローブ',
cursorProbeDesc: 'クリックしたあと、カウントダウン中に対象アプリへ切り替えて入力欄をクリックしてください。そこのカーソル周辺の原文を読み取り、どのアプリが読めてどれが安全ゲートに阻まれるかを確認できます。読み取りは一度きりで、どのプロバイダにも送信しません。',
cursorProbeBtn: 'プローブ(5 秒後)',
cursorProbeCountdown: '{{n}} 秒後に読み取り…',
},
marketplace: {
title: '拡張マーケット',
desc: 'スタイルマーケットの投稿者 ID。スタイルの閲覧とインストールは「スタイル」ページで行います。',
github: {
signIn: 'GitHub でログイン',
signedIn: 'GitHub でログイン済み',
signedOut: 'ログインするとスタイルの投稿・いいねができます。',
signOut: 'ログアウト',
starting: 'ログインを開始しています…',
codeHint: '開いた GitHub ページでこのコードを入力してください:',
openGithub: 'GitHub を開く',
waiting: 'GitHub を開きました。承認するとログインします…',
failed: 'ログインに失敗しました。再試行してください',
},
},
recording: {
title: '録音と入力',
desc: 'グローバル録音のショートカットとトリガー方式を定義します。',
hotkeyLabel: '録音ショートカット',
hotkeyDescAcc: '押すと音声キャプチャを開始(グローバル)。アクセシビリティ権限が必要です。',
hotkeyDescNoAcc: '押すと音声キャプチャを開始(グローバル)。追加の権限は不要。',
modeLabel: '録音方式',
modeDesc: 'トグル式 = 1 回押して開始、もう 1 回押して終了;押し続けて話す = 押している間だけ録音。',
modeToggle: 'トグル式',
modeHold: '押し続けて話す',
modeAuto: '自動',
silenceAutoStopLabel: '無音で自動停止',
silenceAutoStopDesc: 'トグルモードのみ有効。音声を検出した後、無音が選択した時間続いたら録音を自動停止して送信します。一度も話さない場合は10秒後にキャンセル。既定ではオフで、2回目のキー押下による停止と Esc によるキャンセルは引き続き有効です。',
silenceAutoStopSecondsLabel: '無音の長さ',
silenceAutoStopSecondsValue: '{{value}} 秒',
migrationNoticeTitle: 'デフォルトがトグル式に変更されました',
migrationNoticeDesc: '以前にトリガー方式を変更していた場合は、ここで再度確認してください。今回のアップデートではショートカット方式のデフォルト値と読み込みロジックが変更されています。「押し続けて話す」が好みであれば再度切り替えてください。',
microphoneLabel: '優先マイク',
microphoneDesc: '優先して使用する入力デバイスを選択します。一時的に利用できない場合はシステムのデフォルトマイクを使い、再接続後に自動で優先デバイスへ戻します。',
microphoneDefault: 'システムのデフォルトマイク',
microphoneDefaultDesc: 'システムのデフォルト入力デバイスを使用',
microphoneSystemDefault: 'システムデフォルト',
microphoneUnavailable: '利用不可',
microphoneLoadError: 'マイクの読み込みに失敗:{{message}}',
microphoneDialogTitle: 'マイク',
microphoneDialogDesc: '声を拾えるマイクを選択してください。メーターが動かない場合は別のマイクを試してください。',
microphoneMonitorError: '入力レベルの監視に失敗:{{message}}',
capsuleLabel: '録音カプセル',
capsuleDesc: '録音 / 転写中、画面下部に半透明のカプセルを表示。',
capsuleStyleLabel: 'カプセルスタイル',
capsuleStyleSiri: '光条 Siri スタイル',
capsuleStyleClassic: 'Openless デフォルトスタイル',
muteDuringRecordingLabel: '録音中はミュート',
muteDuringRecordingDesc: '録音中にシステム出力を一時的にミュートし、スピーカーのエコーを防ぎます。',
audioCueLabel: '録音開始音',
audioCueDesc: 'ホットキーで録音を開始するとき、合成した短い通知音を再生します。カプセルが非表示でも鳴ります。',
audioCuePreview: '試聴',
insertGroupTitle: '挿入とクリップボード',
restoreClipboardLabel: '入力後にクリップボードを復元',
restoreClipboardDesc: 'ペースト成功後に元のクリップボード内容を復元(Windows / Linux のみ)。',
pasteShortcutLabel: '貼り付けショートカット',
pasteShortcutDesc: '挿入時に模擬するペーストショートカット。一部のターミナルでは Ctrl+Shift+V が必要(Windows / Linux のみ)。',
pasteShortcutCtrlV: 'Ctrl+V(既定 / ほとんどのアプリ)',
pasteShortcutCtrlShiftV: 'Ctrl+Shift+V(kitty / alacritty / wezterm / ほとんどのターミナル)',
pasteShortcutShiftInsert: 'Shift+Insert(xterm / urxvt)',
comboRecordLabel: 'ショートカットを記録',
comboRecordDesc: 'クリック後、希望するキーの組み合わせ(例:⌘⇧D)を押してください。トグル / 押し続けの両方に対応。',
comboRecordBtn: 'ショートカットを記録',
comboResetBtn: 'リセット',
comboMenuToggle: 'その他の操作',
comboDisableHint: 'コアショートカットは無効化できません(録音にはショートカットが必須です)',
comboRecordHint: 'ショートカットの組み合わせを押してください…',
comboNeedKey: '組み合わせキー(例: ⌘⇧J)を設定してください。修飾キー単体は使えません',
comboRecorded: '記録済み',
comboClear: 'クリア',
comboConflict: 'このショートカットの組み合わせは使用できません',
allowNonTsfFallbackLabel: '非 TSF フォールバックを許可',
allowNonTsfFallbackDesc: 'Windows:TSF 入力が失敗した時は分割した Unicode SendInput を使い、それも失敗した場合はクリップボードへコピーします。',
windowsInsertionModeLabel: 'Windows 挿入方式',
windowsInsertionModeDesc: '聴写結果をカーソル位置へ挿入する方法。クリップボード貼り付けは上の「貼り付けショートカット」を使い、改行を保持します。',
windowsInsertionModeTsf: 'TSF IME(既定)',
windowsInsertionModeSendInput: 'SendInput キー入力シミュレーション',
windowsInsertionModePaste: 'クリップボード貼り付け(Ctrl+V など)',
macosNewlineModeLabel: '改行の送り方',
macosNewlineModeDesc: '自動では既知のターミナルアプリに Line Feed(U+000A / Ctrl+J)、それ以外に Shift+Return を送ります。通常の Return は送信になります。',
macosNewlineModeAuto: '自動(ターミナルでは Line Feed)',
macosNewlineModeShiftReturn: 'Shift+Return(チャットで改行)',
macosNewlineModeLineFeed: 'Line Feed(ターミナル CLI / Ctrl+J)',
macosNewlineModeReturn: 'Return(複数メッセージに分割)',
windowsSendInputNewlineModeLabel: 'SendInput 改行シミュレーション',
windowsSendInputNewlineModeDesc: 'SendInput で改行をどのキーとして送るか。チャット入力は Shift+Enter、メモ帳 / VS Code などは Enter。',
windowsSendInputNewlineModeEnter: 'Enter(多くのエディタ)',
windowsSendInputNewlineModeShiftEnter: 'Shift+Enter(チャット入力)',
windowsSendInputNewlineModeCrLf: 'CR+LF Unicode',
windowsShowOpenlessInKeyboardListLabel: 'キーボード一覧に OpenLess を表示',
windowsShowOpenlessInKeyboardListDesc: 'オフにすると Win+Space で OpenLess に切り替わりません。SendInput 挿入には影響しません。オンに戻すと一覧に再表示されます。',
windowsShowOpenlessInKeyboardListError: 'キーボード一覧を更新できません:OpenLess TSF IME が未インストールか、システムが変更を拒否しました。',
historyGroupTitle: '履歴とコンテキスト',
historyRetentionLabel: '履歴保持期間(日)',
historyRetentionDesc: '保持日数を超えた履歴は新規書き込み時に削除されます。0 = 時間で削除しない。',
historyMaxEntriesLabel: '履歴件数の上限',
historyMaxEntriesDesc: 'ローカル保持セッション上限。空欄 = 200。範囲 5–200。',
polishContextWindowLabel: '会話コンテキスト窓(分)',
polishContextWindowDesc: '直近 N 分間の整文済み転写をマルチターン文脈として渡します。0 = 無効。',
recordAudioForDebugLabel: '元の録音を保持(デバッグ)',
recordAudioForDebugDesc: '生のマイク音声を wav で保存し、認識問題の診断に利用。',
audioRecordingMaxEntriesLabel: '元音声の保持件数',
audioRecordingMaxEntriesDesc: 'ローカル保持 wav ファイル上限。空欄 = 200。',
startupGroupTitle: '起動',
startMinimizedLabel: '起動時にメインウィンドウを表示しない',
startMinimizedDesc: 'どの起動経路でもメインウィンドウを開かず、メニューバー / トレイのみで動作。',
autoUpdateCheckLabel: 'アップデートを自動チェック',
autoUpdateCheckDesc: '起動時および 60 分ごとに自動チェック。',
marketplaceGroupTitle: 'スタイルパックマーケット',
marketplaceBaseUrlLabel: 'バックエンド URL',
marketplaceBaseUrlDesc: 'マーケットプレイスの URL。空欄でデフォルト値。',
marketplaceDevLoginLabel: 'GitHub ログイン名(アップロード ID)',
marketplaceDevLoginDesc: 'アップロード者を識別。空欄でアップロード・いいね無効。',
startupAtBoot: '起動時に自動起動',
startupAtBootDesc: 'ログイン時に OpenLess を自動起動。',
startupAtBootError: '自動起動の切り替えに失敗:{{message}}',
},
channels: {
verify: '検証',
verifyHint: '実際に API を1回呼んで、このチャネルが今使えるか確認します',
errTimeout: 'タイムアウト',
errNetwork: 'ネットワーク',
errEndpoint: 'エンドポイント',
errGeneric: '失敗',
dragHint: 'ドラッグで優先順位を変更',
orderHint: 'ドラッグで並べ替え。一番上が優先で使われます。オフにしたチャネルは末尾に移動します。',
empty: 'チャネルがまだありません。下の「チャネルを追加」から作成してください。',
add: 'チャネルを追加',
edit: '編集',
createTitle: 'チャネルを追加',
editTitle: 'チャネルを編集',
providerLabel: 'プロバイダー',
nameLabel: '名前',
namePlaceholder: '例:SiliconFlow — メインキー',
create: '作成',
delete: 'チャネルを削除',
deleteConfirm: '削除するとこのチャネルに保存された鍵も消去されます。',
confirmDelete: '削除する',
justNow: 'たった今',
minutesAgo: '{{count}}分前',
hoursAgo: '{{count}}時間前',
daysAgo: '{{count}}日前',
localEngineModelHint: 'ローカルエンジンのモデルは「詳細 → ローカルモデル」でダウンロード・切り替えします。',
},
providers: {
localEngineNoCredentials: 'ローカルエンジンに API キーやエンドポイントは不要です。',
localModelLabel: 'ローカルモデル',
localModelEmpty: 'ローカルモデル未ダウンロード',
appleSpeechLocalNote: 'Apple 音声認識はシステム内蔵エンジンを使用するため、モデル選択は不要です。',
localEngineNote: 'ダウンロード済みのローカルモデルは上のドロップダウンで直接選択できます。他のモデルは「ローカルモデル」でダウンロード・管理します。',
localTag: 'ローカル',
llmTitle: 'LLM モデル(整文)',
llmDesc: 'OpenAI 互換プロトコル、複数のサプライヤー切り替えに対応。',
providerLabel: 'サプライヤー',
llmProviderDesc: '選択するとデフォルトの Base URL が自動入力されます。',
credentialStorageNotice: '資格情報は OS の資格情報ストアに保存されます。',
codexOAuthNotice: 'Codex OAuth はローカルの Codex ログイン状態(~/.codex/auth.json)を使用します。OpenLess は API Key や Base URL を保存しません。',
asrProviderDesc: '切り替えると対応する認証情報が自動選択されます。',
asrTitle: 'ASR 音声(転写)',
asrDesc: '録音した音声をテキストに文字起こしします。',
omniTitle: 'マルチモーダルモデル',
omniDesc: '1つのモデルが「プロンプト + 音声」から最終テキストを直接出力します(実験的パイプライン)。',
pipelineModeLabel: '認識パイプライン',
pipelineModeHint: '従来 = ASR 文字起こし + LLM 整形の2段式。マルチモーダル = 音声対応モデルが1回で完了。',
pipelineModeTraditional: '従来モード',
pipelineModeMultimodal: 'マルチモーダルモード',
pipelineIsolationNotice: '2つのモードは完全に独立した認証情報を使用します。切り替えてももう一方の設定は削除されず、切り戻せば復元されます。',
presets: {
ark: 'ARK(Volcengine Ark)',
deepseek: 'DeepSeek',
siliconflow: 'SiliconFlow',
atlascloud: 'Atlas Cloud',
openai: 'OpenAI',
gemini: 'Google Gemini',
codexOAuth: 'Codex OAuth',
mimo: 'Xiaomi MiMo',
cometapi: 'CometAPI',
openrouterFree: 'OpenRouter(無料モデル)',
alibabaCoding: 'Alibaba Cloud Coding Plan',
codingPlanX: 'CodingPlanX',
minimax: 'MiniMax(M3)',
stepfun: 'StepFun(階躍星辰)',
custom: 'カスタム',
asrVolcengine: 'Volcengine bigasr',
asrBailian: 'Alibaba Bailian リアルタイム ASR',
asrBailianQwen3: 'Bailian Qwen3 リアルタイム ASR',
asrBailianFunAsrFlash: 'Bailian Fun-ASR-Flash(録音ファイル)',
asrSiliconflow: 'SiliconFlow SenseVoice',
asrStepfun: 'StepFun StepAudio ASR',
asrZhipu: 'Zhipu GLM-ASR',
asrGroq: 'Groq Whisper-large-v3',
asrWhisper: 'OpenAI Whisper(互換)',
asrOpenrouter: 'OpenRouter Whisper',
asrZenmux: 'ZenMux',
asrOpenAiCompatible: 'カスタム OpenAI 互換',
asrXiaomiMimo: 'Xiaomi MiMo ASR',
asrIflytek: 'iFlytek リアルタイム音声認識',
asrElevenLabs: 'ElevenLabs Scribe',
asrSherpaOnnxLocal: 'ローカル sherpa-onnx(実験的)',
asrFoundryLocalWhisper: 'ローカル Whisper(Foundry Local)',
asrLocalWhisper: 'ローカル Whisper(バッチ)',
asrLocalQwen3: 'ローカル Qwen3-ASR',
asrLocalQwen3Mlx: 'ローカル Qwen3-ASR(MLX / Metal)',
asrLocalQwen3C: 'ローカル Qwen3-ASR(C / CPU)',
asrAppleSpeech: 'Apple 音声認識 (macOS)',
omniOpenai: 'OpenAI(音声対応)',
omniGemini: 'Google Gemini',
omniDashscope: 'Alibaba DashScope Omni',
},
elevenLabsUploadNotice: 'ElevenLabs は録音音声を設定済みのエンドポイントへアップロードしてバッチ文字起こしします。',
zenmuxVocabularyNote: 'ZenMux は JSON 文字起こしプロトコルを使用し、辞書ホットワード(prompt/hotwords)は送信されません。辞書は依然として潤色段階には渡りますが、音声認識のバイアスには使用されません。',
asrAdvancedNote: '以下の詳細オプションは「カスタム OpenAI 互換」と「ZenMux」のプリセットのみに影響します。その他の名前付きプロバイダーのプリセットは内蔵動作のままです。',
asrAdvancedVerboseJsonLabel: 'セグメント指標 (verbose_json)',
asrAdvancedVerboseJsonHint: 'サーバーが対応する場合に幻聴フィルタ用の segments 指標を要求します。非対応の自前サーバーではオフのままにしてください。',
asrAdvancedChunkLabel: '分割時間 (ms)',
asrAdvancedChunkHint: '0 = 分割なし(全体を一括送信)。長い録音や1リクエストの時間制限があるサーバー向けに分割送信できます。',
asrAdvancedEnableItnLabel: '数字正規化 (enable_itn)',
asrAdvancedEnableItnHint: '口頭の数字・単位を算用数字に正規化します(例:「にせんにじゅうろく」→「2026」)。オフにすると元の表記を保持します。',
volcengineAppKeyLabel: 'APP ID',
volcengineAccessKeyLabel: 'Access Token',
volcengineApiKeyLabel: 'API Key',
volcengineResourceIdLabel: 'Resource ID',
volcengineAuthModeLabel: '認証モード',
volcengineAuthModeAppIdToken: 'レガシーアプリ(APP ID + Access Token)',
volcengineAuthModeApiKey: '新版コンソール API Key',
volcengineMappingNote: 'Secret Key は現在不要。Resource ID のデフォルトは volc.seedasr.sauc.duration。',
volcengineApiKeyNote: '新版スピーチコンソールで作成した API Key で認証します(APP ID 不要)。API Key はスピーチコンソールの「API Key 管理」で作成:console.volcengine.com/speech/new/setting/apikeys。Resource ID のデフォルトは volc.seedasr.sauc.duration。',
xfyunAppIdLabel: 'AppID',
xfyunApiKeyLabel: 'API Key',
xfyunNote: 'iFlytek オープンプラットフォームの「リアルタイム音声認識」サービスページで AppID と API Key を取得します。音声は 16kHz / 16bit / モノラル PCM。標準版 API にホットワード引数はありません(iFlytek コンソールで個別ホットワードを設定)。言語はデフォルトで中国語(普通話)です。',
localAsrActiveNotice: '現在「{{name}}」を使用中。「詳細設定」タブから切り替えまたは無効化できます。',
localAsrTakeoverHint: '「{{name}}」を有効化すると ASR プロバイダーが引き継がれます。',
asrProviderTakenOver: 'ローカルエンジンを使用中です。上のドロップダウンで別のプロバイダーを選ぶと切り替えられます(ローカルエンジンは自動的に停止します)。ローカルモデルは「サービス → ローカルモデル」で管理します。',
localAsrHint: 'デバイス上で動作、API キー不要。HuggingFace からモデルをダウンロード。',
foundryLocalAsrHint: 'デバイス上で動作、ASR API キー不要。初回はランタイムとモデルをダウンロード。',
localAsrPerformanceWarning: 'ローカル推論はクラウドより遅く、中国語の精度が低くなる場合があります。オフラインまたはプライバシー重視の場合に。',
localAsrReady: '{{model}} ダウンロード済み',
localAsrNotReady: '{{model}} 未ダウンロード',
localAsrGoDownload: 'モデル設定でダウンロード',
localAsrManage: 'モデル設定を開く',
localAsrDownloadedTitle: 'ダウンロード済みモデル',
localAsrDelete: '削除',
fillDefault: 'デフォルト値を入力',
readFailed: '読み込み失敗',
apiKeyLabel: 'API キー',
baseUrlLabel: 'エンドポイント',
modelLabel: 'モデル',
customModelLabel: 'カスタムモデル…',
presetListLabel: 'プリセットに戻る',
temperatureLabel: 'Temperature',
temperaturePlaceholder: '空欄なら送信しません。範囲は 0〜2(両端を含む)。例: 0.3',
extraHeadersLabel: '追加 Headers',
extraHeadersPlaceholder: '{"custom-head":"..."}',
thinkingModeLabel: '思考',
thinkingModeOn: 'オン',
thinkingModeOff: 'オフ',
thinkingModeHint: 'オフではチャネル単位の公式パラメーターで思考を無効化または最小化します。オンではチャネル既定で思考を有効化します。prompt 注入やモデル別適配は行いません。',
bailianVocabularyIdLabel: 'ホットワード Vocabulary ID(任意)',
bailianVocabularyIdNote: 'DashScope でホットワード辞書を作成済みの場合は vocab-... ID を入力します。空欄なら送信しません。',
bailianModelRealtimeHint: 'リアルタイムモデル · 話しながら文字起こし。',
bailianModelSyncFileHint: '同期録音モデル · 話し終えてから一括で文字起こし(1 本 ≤ 5 分)。',
bailianModelAsyncFileHint: '非同期ファイルモデル · 録音をアップロードし、文字起こしタスクの完了を待ちます。',
appIdLabel: 'App ID(アプリケーション ID)',
accessKeyLabel: 'Access Key',
resourceIdLabel: 'Resource ID',
toolsLabel: '接続チェック',
toolsDesc: '上記の設定を保存してから、現在のモデル接続性を検証またはモデル一覧を取得します。失敗してもモデル ID を手動入力できます。',
validate: '検証',
validating: '検証中…',
fetchModels: 'モデル一覧',
loadingModels: 'モデル取得中…',
modelMissing: 'モデルが未設定です。先にモデル ID を入力してください。',
modelsEmpty: '認証成功ですが、利用可能なモデルが返されませんでした。',
modelsLoaded: '{{count}} 個のモデルを取得しました。',
selectModel: 'モデルを選んで上記欄に入力',
modelSaved: 'モデル {{model}} を保存しました。',
validateSuccess: '接続チェックに合格しました。',
validateFailed: '接続チェックに失敗しました。',
providerHttpStatus: 'サプライヤーが {{status}} を返しました。API Key 権限またはエンドポイントを確認してください。',
endpointMustUseHttps: 'HTTP Endpoint も使用できますが、API Key と音声内容が通信中に漏えいする可能性があります。',
endpointHttpWarning: 'HTTP Endpoint も使用できますが、API Key とリクエスト内容が通信中に漏えいする可能性があります。',
endpointInvalid: 'Endpoint の形式が無効です。',
bailianEndpointSchemeInvalid: 'Bailian リアルタイム ASR は DashScope の WebSocket ゲートウェイを使用します。エンドポイントは wss:// で始まる必要があります(既定: wss://dashscope.aliyuncs.com/api-ws/v1/inference/)。https:// の互換モード URL はここでは使用できません。',
qwen3EndpointSchemeInvalid: 'Qwen3 リアルタイム ASR は DashScope Realtime WebSocket ゲートウェイを使用します。エンドポイントは wss:// で始まる必要があります(既定: wss://dashscope.aliyuncs.com/api-ws/v1/realtime)。https:// の URL はここでは使用できません。',
responseTooLarge: 'サプライヤーの応答が大きすぎるため、安全のため検証を停止しました。',
asrInvalidJson: 'ASR の応答が有効な JSON ではありません。',
asrMissingTextField: 'ASR の応答に text フィールドがありません。',
apiKeyMissing: 'API Key が空です。',
endpointMissing: 'Endpoint が空です。',
volcengineAppIdMissing: 'APP ID が空です。',
volcengineAccessTokenMissing: 'Access Token が空です。',
requestTimeout: 'リクエストがタイムアウトしました。後で再試行してください。',
},
shortcuts: {
title: 'ショートカット設定',
descAcc: 'すべてのショートカットはグローバルで有効。権限設定でアクセシビリティを許可する必要があります。',
descNoAcc: 'すべてのショートカットはグローバルで有効。応答がない場合は権限ページでグローバルショートカット監視の状態を確認してください。',
startStop: '録音開始 / 停止',
cancel: '本回の録音をキャンセル',
confirm: 'カプセル入力を確定',
switchStyle: '前のスタイルに切り替え',
openApp: 'OpenLess を開く',
stylePackTitle: 'スタイル直行ショートカット',
stylePackDesc: 'よく使うスタイルパックにショートカットを割り当てて一発切替;無効中のパックは自動で有効化されます。',
stylePackAdd: 'スタイルショートカットを追加',
stylePackSelect: 'スタイルパックを選択',
stylePackDisabledSuffix: '(無効)',
stylePackRemove: '削除',
agentPolish: '選択テキストを推敲',
agentPolishDesc: 'テキスト選択 → キー → Claude が推敲 → 選択範囲を置換。',
agentVoice: 'Less Computer',
agentVoiceDesc: 'カスタムキーを押しながら話す → Claude がタスクを実行 → 結果をカプセル表示。',
agentVoiceHint: '「詳細 → Less Computer」で押しながら話すキーを設定してください。',
agentVoiceTrigger: 'Less Computer 押しながら話すキー',
enable: '有効化',
disable: '無効化',
confirmHint: '右側の ✓ をクリック',
notSupported: '未対応',
androidReadOnly: 'Android ではグローバルショートカットは使えません。概要ページの録音ボタンを使ってください。',
},
permissions: {
title: '権限',
descAcc: 'OpenLess は正常動作のため以下のシステム権限が必要です。許可後は通常、App を完全に終了して再起動する必要があります。',
descNoAcc: 'OpenLess はマイクへのアクセスと、グローバルショートカット監視状態を通じてネイティブフックの正常動作を判定する必要があります。',
micLabel: 'マイク',
micDesc: '音声入力の取得に使用します。',
accLabel: 'アクセシビリティ',
accDesc: 'グローバルショートカットの監視と認識結果のカーソル位置への入力に使用。',
hotkeyLabel: 'グローバルショートカット',
hotkeyDescWithAdapter: '現在のアダプタ:{{adapter}}。ショートカット監視がインストール済みかを判定します。',
hotkeyDescPlain: 'ショートカット監視がインストール済みかを判定します。',
networkLabel: 'ネットワーク',
networkDesc: 'クラウド ASR / LLM 呼び出しに必要。ローカルモードでは無効化可能。',
networkOk: '利用可能',
networkOffline: '利用不可',
checking: '確認中…',
granted: '許可済み',
notApplicable: '権限不要',
denied: '未許可',
indeterminate: '未確定',
micNoDevice: 'マイクが検出されません',
openSystem: 'システム設定を開く',
restart: 'リセットして再起動',
grant: '許可する',
rerunAndroidSetup: 'セットアップを再実行',
hotkeyInstalled: 'インストール済み',
hotkeyStarting: 'インストール中…',
hotkeyFailed: '監視失敗',
windowsImeLabel: 'Windows 入力メソッドバックエンド',
windowsImeDesc: '音声セッション中に OpenLess TSF IME へ一時的に切り替え、クリップボード入力の制限を回避します。',
windowsImeInstalled: 'インストール済み',
windowsImeUnavailable: '利用不可',
androidImeLabel: '入力メソッド (IME)',
androidImeSelected: '選択中',
androidImeEnabled: '有効',
androidImeDisabled: '無効',
androidOverlayLabel: 'フローティングオーバーレイ',
androidAccessibilityLabel: 'アクセシビリティ',
androidAccessibilityImpact: '有効にすると、キーボードを切り替えずに現在の入力欄へ結果を出力します。無効の場合はクリップボードへコピーし、手動で貼り付けます。',
androidAccessibilityGrantedStale: '許可済み・未接続',
androidAccessibilityMessages: {
not_android: 'アクセシビリティ状態は Android でのみ利用できます。',
not_enabled: 'システムのアクセシビリティ設定で OpenLess を有効にしてください。',
operational: 'アクセシビリティ サービスは稼働中です。',
authorized_not_connected: 'アクセシビリティは許可済みですが未接続です。システム設定で OpenLess を再度有効にしてください。',
status_read_failed: 'アクセシビリティ状態を読み取れませんでした。',
},
androidShizukuLabel: 'Shizuku 拡張モード',
androidShizukuHint: '任意機能。OEM 設定で手動切り替えが難しい場合のベストエフォート復旧。跨アプリ競合を完全には排除できません。再起動後は Shizuku の再起動が必要な場合があります。',
androidShizukuOpenApp: 'Shizuku を開く',
androidShizukuRequestPermission: '権限をリクエスト',
androidShizukuRecover: 'アクセシビリティを復旧',
androidShizukuRecoverConfirm: 'Shizuku で OpenLess のアクセシビリティサービスを再有効化しますか?書き込み時点で有効なサービスはマージされます。グローバルスイッチがオフの場合、有効化すると登録済みの他サービスも起動する可能性があります。',
androidShizukuYes: 'はい',
androidShizukuNo: 'いいえ',
androidShizukuAccessibilityOperational: 'アクセシビリティは登録済みで稼働中です。',
androidShizukuAccessibilityRegistered: '登録: {{registered}} · 稼働: {{operational}}',
androidShizukuState: {
notInstalled: '未インストール',
notRunning: '未起動',
notAuthorized: '未承認',
authorized: '承認済み',
binderDead: '切断',
notAndroid: 'N/A',
},
androidShizukuMessages: {
not_android: 'Shizuku は Android でのみ利用できます。',
not_installed: 'Shizuku または Sui バックエンドがインストールされていません。',
unsupported_backend: 'この Shizuku バックエンドは古すぎます。Shizuku または Sui を v11 以降に更新してください。',
not_running: 'Shizuku が起動していません。先に Shizuku または Sui を起動してください。',
not_authorized: 'Shizuku が未承認です。OpenLess に権限を付与してください。',
binder_dead: 'Shizuku 接続が切断されました。Shizuku を再起動してください。',
authorized_operational: 'Shizuku 承認済み。アクセシビリティは稼働中です。',
authorized_registered_stale: 'Shizuku 承認済み。アクセシビリティは登録済みですが稼働していません。',
authorized_can_recover: 'Shizuku 承認済み。アクセシビリティの復旧を試せます。',
operational: 'アクセシビリティは登録済みで稼働中です。',
registered_stale: 'アクセシビリティは登録済みですが、サービスは現在利用できません。',
not_registered: 'システム設定でアクセシビリティが有効になっていません。',
already_granted: 'Shizuku 権限は既に付与されています。',
binder_unavailable: '権限リクエスト中に Shizuku バインダーが利用できませんでした。',
request_cancelled: 'Shizuku 権限リクエストがキャンセルされました。',
granted: 'Shizuku 権限が付与されました。',
denied: 'Shizuku 権限が拒否されました。',
permission_permanently_denied: 'Shizuku 権限がブロックされました。Shizuku を開いて OpenLess を手動で許可してください。',
launched: 'Shizuku 承認画面を開きました。',
launch_failed: 'Shizuku 承認画面を開けませんでした。',
open_shizuku: 'Shizuku マネージャーを開きました。',
jni_error: 'Android Shizuku バックエンドに接続できませんでした。',
status_parse_failed: 'Shizuku 状態を解析できませんでした。',
user_not_confirmed: '復旧にはユーザーの確認が必要です。',
shizuku_unavailable: 'Shizuku が未承認または利用できません。',
invalid_component: '無効なアクセシビリティサービスコンポーネント ID です。',
service_connect_failed: 'Shizuku 特権サービスに接続できませんでした。',
recovery_in_progress: '別の復旧処理が進行中です。しばらくしてから再試行してください。',
parse_failed: '復旧結果を解析できませんでした。',
service_not_bound: '設定は書き込まれましたが、アクセシビリティはまだ稼働していません。',
success: 'アクセシビリティサービスを復旧しました。',
read_failed: 'アクセシビリティ設定を読み取れませんでした。',
read_enabled_failed: 'アクセシビリティ有効フラグを読み取れませんでした。',
merge_failed: 'アクセシビリティサービス一覧をマージできませんでした。',
write_services_failed: '有効なアクセシビリティサービス一覧を書き込めませんでした。',
write_enabled_failed: 'アクセシビリティを有効化できませんでした。',
readback_failed: '書き込み後にアクセシビリティ設定を検証できませんでした。',
oem_rollback: 'OEM がアクセシビリティ書き込みをロールバックしました。',
concurrent_change: '復旧中にアクセシビリティ設定が変更されました。',
partial_rollback: '復旧に失敗し、設定は一部のみ元に戻せました。システムのアクセシビリティ設定を確認してください。',
manual_required: 'グローバルスイッチがオフで他の登録済みサービスがある場合、安全に自動復旧できません。システム設定から手動で操作してください。',
max_retries: '複数回試行後も復旧に失敗しました。',
internal_error: '内部エラーにより復旧に失敗しました。',
unknown: '不明な Shizuku 状態です。',
},
androidInsertStrategyLabel: '挿入方式',
androidOverlayTriggerLabel: '表示タイミング',
androidOverlayActivationModeLabel: '起動方法',
androidOverlayLeftSwipeActionLabel: '左スワイプ動作',
androidOverlayCancelSwipeDirectionLabel: 'キャンセル方向',
androidOverlaySizeLabel: 'オーバーレイサイズ',
androidOverlaySizeHint: 'フローティングボタンの直径を調整し、現在位置を保持します。',
androidInsertStrategy: { accessibility: '入力欄へ自動出力', clipboard: 'クリップボードのみ' },
androidInsertStrategyHint: { accessibility: 'アクセシビリティが必要です。使えない場合はクリップボードにコピーします。', clipboard: 'アクセシビリティ権限は不要です。コピー後に手動で貼り付けます。' },
androidOverlayTrigger: { background: 'バックグラウンド', keyboard: 'キーボード表示時', always: '常時' },
androidOverlayTriggerHint: { background: 'シンプル', keyboard: 'このモードは保留中です。既存設定はバックグラウンドに戻します。', always: '常に表示' },
androidOverlayTriggerDisabled: { keyboard: 'キーボード表示時の表示は保留中です。今後はフローティングウィンドウのジェスチャーで置き換えます。' },
androidOverlayActivationMode: { tap: 'タップで起動', long_press: '長押しで起動' },
androidOverlayActivationModeHint: { tap: '1回目のタップで待機状態に入り、2回目のタップで通常の音声入力を開始します。', long_press: '押している間だけ待機状態に入り、離すと現在の録音またはQAターンを終了します。' },
androidOverlayLeftSwipeAction: { translation: '翻訳入力', style_pack: 'スタイルパック切替' },
androidOverlayLeftSwipeActionHint: { translation: '待機状態で左スワイプすると翻訳入力を開始します。', style_pack: '待機状態で左スワイプすると前のスタイルパックへ切り替えます。' },
androidOverlayCancelSwipeDirection: { up: '上へスワイプ', down: '下へスワイプ' },
androidOverlayCancelSwipeDirectionHint: { up: '録音中に上へスワイプすると、文字起こしや挿入をせずにキャンセルします。', down: '録音中に下へスワイプすると、文字起こしや挿入をせずにキャンセルします。' },
windowsIme: {
installed: 'インストール済み。音声入力時に OpenLess IME へ一時的に切り替えます。',
notInstalled: '未インストール。OpenLess は現在クリップボード / WM_PASTE フォールバックを使用しています。',
registrationBroken: '登録が破損しています。OpenLess IME を再インストールしてください。',
notWindows: 'Windows のみ利用可能。',
},
},
advanced: {
multimodalPipelineTitle: 'マルチモーダル認識パイプライン(実験的)',
multimodalPipelineTitleHint: '1つのマルチモーダルモデルで音声認識を一括実行。従来の ASR + LLM 設定から完全に分離されます。',
multimodalPipelineLabel: 'マルチモーダルパイプラインを有効化',
multimodalPipelineHint: '有効にすると「サービス → AI プロバイダー」ページに従来 / マルチモーダルの切り替えが表示されます。従来 = ASR + LLM、マルチモーダル = 音声対応モデル1つ。設定は別々に保存され、認証情報を共有しません。',
streamingInsertTitle: 'ストリーミング入力',
streamingInsertTitleLinux: 'ストリーミング入力(実験的)',
streamingInsertDesc:
'逐字リアルタイム挿入で体感遅延を低減。条件不一致時はワンショット貼り付けにフォールバック。',
streamingInsertLabel: 'ストリーミング入力',
streamingInsertHintMac:
'ストリーミング中は一時的に ABC 入力ソースへ切替(CJK IME による傍受を回避)。セッション終了時に自動で元へ戻ります。',
streamingInsertHintWindows:
'SendInput Unicode で TSF / IME を迂回。入力ソースの切替は不要です。',
streamingInsertHintLinux:
'fcitx5 プラグインで文字を送信。ストリーミング入力は enigo + XTest でキー合成。',
streamingInsertSaveClipboardLabel: 'クリップボードに保存',
streamingInsertSaveClipboardHint: '挿入成功後に最終テキストをクリップボードへ書き込み、Cmd+V で再貼付け可能にします。OFF ではクリップボードに触れません。',
localAsrTitle: 'ローカル ASR モデル(実験的)',
localAsrDesc: '転写をクラウドから本機推論に切り替えます。オフライン/プライバシー重視向け。',
localAsrWarningShort: 'ローカル推論は遅く、スペック不足では欠字の可能性があります。',
qwen3Desc: '有効化すると ASR プロバイダーが引き継がれます。',
sherpaDesc: '有効化すると ASR プロバイダーが引き継がれます。',
foundryDesc: '有効化すると ASR プロバイダーが引き継がれます。',
notSupportedHere: 'このプラットフォームでは未対応(推論モジュール未組込)。',
enable: '有効化',
alreadyActive: '有効',
disableLocalLabel: 'ローカル ASR を無効化',
disableLocalDesc: 'クラウド ASR(既定は Volcengine bigasr)に戻します。',
disable: '無効化',
platformNotSupported: 'このプラットフォームではローカル ASR モデル統合に対応していません。',
confirmEnableLocalTitle: 'ローカル ASR を有効化しますか?',
confirmEnableLocalBody: '有効にすると転写はクラウドより遅くなり、精度が低くなる場合があります。',
confirm: '有効化する',
},
language: {
title: '表示言語',
desc: 'UI の表示言語を切り替えます。現在のセッションに即時反映され、次回起動時も維持されます。',
label: '言語',
labelDesc: '「システムに従う」を選ぶと OS の言語に合わせます。',
followSystem: 'システムに従う',
zh: '简体中文',
zhTW: '繁體中文',
en: 'English',
ja: '日本語 (Beta)',
ko: '한국어 (Beta)',
restartHint: '一部のネイティブメニュー(トレイ等)は再起動後に反映されます。',
},
layout: {
title: 'レイアウト',
},
theme: {
title: '外観',
label: 'テーマ',
activityHeatmapLabel: '概要ページに年間アクティビティを表示',
stackedRowLayoutLabel: '読みやすいレイアウト(はみ出し防止)',
stackedRowLayoutDesc: '小さい画面や大きな文字サイズでは、1行に収まらないボタンや設定が次の行に折り返され、横方向のはみ出しや文字の潰れを防ぎます。',
conservativeLayoutLabel: '保守レイアウト',
conservativeLayoutDesc: 'ホーム、上部バー、下部バー以外の設定・機能ページを単列・全幅にし、横方向のはみ出しを最大限防ぎます。',
system: 'システムに従う',
light: 'ライト',
dark: 'ダーク',
},
remoteInput: {
title: 'リモート入力',
enableLabel: 'リモート入力を有効化',
enableDesc: 'スマホ/タブレットのブラウザから PC に接続して録音し、音声を PC のカーソル位置にリアルタイムで入力します(HTTPS が必要。初回アクセス時は証明書を信頼してください)',
portLabel: '待ち受けポート',
defaultModeLabel: '既定の録音方式',
modeToggle: 'タップで切替',
modeHold: '押し続けて話す',
urlLabel: 'アクセス URL',
pinLabel: 'ペアリングコード',
regeneratePin: '再生成',
portInUse: 'ポート {{port}} は使用中です。変更してください',
startError: 'リモート入力サービスの起動に失敗しました:{{reason}}',
securityHint: '同一 LAN からのみアクセス可能で、ペアリングコードの入力が必要です。使わないときはオフにすることを推奨します。',
certHint: '初回アクセス時、ブラウザが証明書は信頼されていないと警告します。案内に従って「続行」を選択してください。',
certTrustWarning:
'この証明書は本機のリモート入力サービス専用です(他の証明書を発行できません)。出所不明の証明書は信頼しないでください。不要になったらスマートフォンの設定から削除できます。',
},
about: {
tagline: '自然に話し、きれいに書く',
checkUpdate: 'アップデート確認',
checkUpdateBtn: '確認',
checkStableUpdateBtn: '正式版を確認',
checkBetaUpdateBtn: 'Beta を確認',
checkingUpdate: '確認中…',
upToDate: '現在最新バージョンです。',
updateError: '確認またはアップデートに失敗しました。後で再試行してください。',
retryBtn: '再試行',
openReleases: 'Releases を開く',
source: 'ソース',
docs: 'ドキュメント',
feedback: 'フィードバック',
qq: 'コミュニティ QQ グループ',
qqDesc: 'QQ でグループ番号を検索して参加するか、QR コードをスキャンしてください。',
copyQq: 'グループ番号をコピー',
privacy: 'プライバシー',
privacyDesc: '録音は、設定したクラウドプロバイダーへ文字起こしのため送信される場合があります。',
localFirst: 'ローカル優先',
linksTitle: 'ドキュメント',
betaChannelLabel: 'Beta チャンネルに参加',
betaChannelToggleLabel: 'Beta チャンネルを有効化',
betaChannelDesc: 'オンにするとバックグラウンド自動更新が Beta に従います。オフで正式版に戻ります。下のボタンでいつでも Beta を手動確認できます。',
autoUpdateSectionTitle: '自動更新',
autoUpdateCheckLabelAndroid: '自動確認してダウンロード',
autoUpdateCheckDescAndroid: '起動時と 60 分ごとに確認。更新があれば自動ダウンロードしシステムインストーラを開きます。チャンネルは上の Beta スイッチに従います。',
betaChannelFetching: '最新 Beta 版を取得中…',
betaChannelFetchBtn: '最新 Beta を確認',
betaChannelLatestPrefix: '最新 Beta:',
betaChannelDownloadBtn: 'ダウンロード ページを開く',
betaChannelRefresh: '再取得',
betaChannelNoBeta: 'まだ Beta リリースは公開されていません。',
betaChannelFetchError: 'Beta バージョン情報の取得に失敗しました。後で再試行してください。',
betaChannelUpToDate: '最新です',
betaChannelUpdateNow: '今すぐ更新',
betaChannelUpdateNowTitle: '最新 Beta を確認・ダウンロードし、更新ダイアログを表示します',
betaChannelChecking: '確認中…',
updateDialog: {
available: {
title: '新しいバージョンがあります',
desc: 'OpenLess {{version}} が見つかりました。今すぐ更新しますか?',
},
downloading: {
title: 'アップデートをダウンロード中',
desc: 'OpenLess {{version}} をダウンロード中です。アプリを開いたままにしてください。',
},
downloaded: {
title: 'アップデートの準備完了',
desc: 'OpenLess {{version}} のインストールが完了しました。今すぐ自動再起動して適用しますか?',
},
installing: {
title: 'アップデートをインストール中',
desc: 'OpenLess {{version}} をインストール中です。アプリを開いたままにしてください。',
},
install: '今すぐ更新',
androidInstall: 'ダウンロードしてインストーラを開く',
androidInstalled: {
title: 'システムインストーラを開きました',
desc: '画面の指示に従ってインストールしてください。完了後 OpenLess を再度開くと {{version}} が使えます。',
},
downloadingLabel: 'ダウンロード中…',
installingLabel: 'インストール中…',
later: '後で手動再起動',
restartNow: '今すぐ再起動',
progress: '{{progress}}% · {{downloaded}} / {{total}}',
progressUnknown: 'ダウンロード済み {{downloaded}}',
installError: {
title: '更新に失敗しました',
desc: '自動更新を完了できませんでした:{{error}}。ダウンロードページから手動で最新版を入手できます。',
},
manualDownload: '手動でダウンロード',
},
},
},
modal: {
sections: {
general: '一般',
services: 'サービス',
privacy: 'プライバシー',
advanced: '詳細設定',
personalize: 'パーソナライズ',
about: '情報',
helpCenter: 'ヘルプセンター',
releaseNotes: 'リリースノート',
},
personalize: {
font: 'フォントサイズ',
fontDesc: 'UI のフォントサイズを全体的にスケール。即時反映。',
fontSmall: '小',
fontMedium: '中',
fontLarge: '大',
blur: 'すりガラス強度',
blurDesc: 'ウィンドウ内側の backdrop-filter 強度に影響(macOS のシステムフロスト層が動かない場合に調整)。',
},
about: {
tagline: '自然に話し、きれいに書く',
checkUpdate: 'アップデート確認',
checkUpdateBtn: '確認',
docs: 'ドキュメント',
docsBtn: 'openless.app/docs ↗',
feedback: 'フィードバックチャネル',
feedbackBtn: 'GitHub Issues ↗',
source: 'ソース',
qq: 'コミュニティ QQ グループ',
qqDesc: 'QQ でグループ番号を検索して参加するか、QR コードをスキャンしてください。',
copyQq: 'グループ番号をコピー',
exportErrorLog: 'エラーログをエクスポート',
exportErrorLogDesc: '現在のセッションの実行ログをローカルに保存。問題の調査やフィードバック送付にお使いください。',
exportErrorLogBtn: 'エクスポート',
exporting: 'エクスポート中…',
exportSuccess: '保存しました',
exportFailed: 'エクスポート失敗',
privacy: 'プライバシー',
privacyDesc: '認識結果はローカルに保存されます。設定したクラウドプロバイダーは文字起こしのため録音を受信する場合があります。',
localFirst: 'ローカル優先',
},
},
windowChrome: {
minimize: '最小化',
maximize: '最大化',
close: '閉じる',
},
hotkey: {
triggers: {
rightOption: '右 Option',
leftOption: '左 Option',
rightControl: '右 Control',
leftControl: '左 Control',
rightCommand: '右 Command',
leftCommand: '左 Command',
leftShift: '左 Shift',
rightShift: '右 Shift',
fn: 'Fn (地球キー)',
rightAlt: '右 Alt',
mediaPlayPause: '⏯ メディア再生/一時停止',
custom: 'カスタム組み合わせ…',
},
fallback: 'グローバルショートカット',
modeHoldSuffix: '(押し続けて話す)',
modeToggleSuffix: '(開始 / 停止)',
modeAutoSuffix: '(自動判別)',
usageHold: '{{trigger}} を押し続けて話し、離して終了。',
usageToggle: '{{trigger}} で録音開始、もう 1 回押して終了。',
usageAuto: '{{trigger}} を短く押すと開始 / 停止、押し続けると話し終えて離すと停止。',
adapter: {
macEventTap: 'macOS Event Tap',
windowsLowLevel: 'Windows 低レベルキーボードフック',
fcitx5: 'fcitx5 インプットメソッドプラグイン',
unavailable: '利用不可',
},
},
localAsr: {
kicker: 'ローカル ASR',
title: 'モデル設定',
desc: 'デバイス上の音声認識モデルを管理。',
storageTitle: 'モデル保存場所',
storageBaseDir: '選択した親フォルダ',
storageModelsRoot: '実際のモデルフォルダ',
storageDefault: 'システム既定フォルダ',
storageChoose: 'フォルダを変更',
storageReset: '既定に戻す',
storageReveal: 'モデルフォルダを開く',
storageDesc: 'カスタム保存先では選択フォルダ配下に OpenLess/models を作成し、既存モデルを移行します。移行前にダウンロードをキャンセルし、読み込み済みモデルを解放します。',
storageChooseTitle: 'ローカルモデル保存先の親フォルダを選択',
storageChangeConfirm: '既存のローカルモデルを {{path}}/OpenLess/models に移動します。先にダウンロードをキャンセルし、読み込み済みモデルを解放します。続行しますか?',
storageResetConfirm: '既存のローカルモデルをシステム既定フォルダに戻します。現在のフォルダ: {{path}}。続行しますか?',
modelDir: 'モデルフォルダ',
revealDir: 'フォルダを開く',
deleteConfirm: '{{name}} のローカルモデルファイルを削除しますか?この操作は取り消せません。',
appleSpeechTitle: 'Apple 音声認識(macOS)',
appleSpeechDesc: 'macOS 標準の音声認識を使ってローカルで文字起こしします。モデルのダウンロード・API キー・ネットワークは不要。クラウド ASR が不安定なときの認証情報不要なローカルフォールバックです。初回利用時に音声認識の許可ダイアログが表示されます。',
appleSpeechUse: 'Apple 音声認識を使う',
qwenTitle: 'Qwen3-ASR モデル管理',
qwenExperimentalBadge: '実験的',
engineUnavailable: '現在のプラットフォームには Qwen3-ASR 推論エンジンが同梱されていません。モデルのダウンロードは可能ですが、ここではまだ Qwen3-ASR を有効化できません。',
qwenUnavailableOnWindows: 'Windows では Qwen3-ASR にまだ対応していません。上記の Foundry Local Whisper をご利用ください。',
foundryTitle: 'Windows Foundry Local Whisper',
foundryDesc: 'デバイス上で音声認識。ASR API キー不要。初回はランタイムとモデルのダウンロードが必要。',
foundryAvailable: 'Windows で利用可能',
foundryUnavailable: 'Windows のみ対応',
foundryRuntimeReady: 'ランタイムコンポーネントはダウンロード済み',
foundryRuntimeMissing: 'ランタイムコンポーネント未ダウンロード',
foundryRuntimeSourceLabel: 'ランタイムコンポーネントの取得元',
foundryRuntimeSourceAuto: '自動(NuGet 優先)',
foundryRuntimeSourceNuget: 'NuGet 公式フィード',
foundryRuntimeSourceOrtNightly: 'Microsoft ORT-Nightly フィード',
foundryRuntimeSourceDesc: '初回使用前にランタイムコンポーネントをダウンロード。',
foundrySelectedModel: '選択中のモデル',
foundryActiveModel: '現在の既定 alias',
foundryLoadedModel: '読み込み済みモデル',
foundryNotLoaded: '未読み込み',
foundryError: 'Foundry 状態',
foundrySetDefault: '既定に設定 / Windows ローカル ASR を有効化',
foundryEnabling: '有効化中…',
foundryPrepare: '準備 / ダウンロード / 読み込み',
foundryPreparing: '準備中…',
foundryReleasing: '解放中…',
foundryRetryPrepare: '準備を続行 / 再試行',
foundryCancelPrepare: '準備をキャンセル',
foundryCancelRequested: 'キャンセル要求済み',
foundryCancelling: 'キャンセル中…',
foundryCancelBestEffort: 'キャンセルをリクエスト済み。現在のステップ完了後に停止します。後で再試行できます。',
foundryPrepareRuntime: 'ランタイムコンポーネントを準備',
foundryPrepareModel: 'モデルをダウンロード',
foundryPrepareLoad: 'モデルを読み込み',
foundryPrepareModelSkipped: 'モデルはダウンロード済みのため、ダウンロードをスキップ',
foundryPrepareDone: '完了',
foundryPrepareWaiting: '待機中',
foundryApproxSizeMb: '約 {{mb}} MB',
foundryLanguageLabel: '認識言語',
foundryLanguageAuto: '自動',
foundryLanguageZh: '中国語 zh',
foundryLanguageEn: '英語 en',
foundryLanguageDesc: '中国語聞き取りは「中文」を、混用は「自動」を選択。',
foundryModelSmall: 'Whisper Small(既定 / バランス)',
foundryModelSmallDesc: '品質とリソース使用量のバランスを取った既定オプション。',
foundryModelMedium: 'Whisper Medium(高品質)',
foundryModelMediumDesc: 'より高い精度。大きなダウンロードと遅めの推論を許容できる高性能デバイス向け。',
foundryModelLarge: 'Whisper Large V3 Turbo(最高品質)',
foundryModelLargeDesc: '高性能デバイスと品質優先の用途に向く大きなモデル。',
foundryModelBase: 'Whisper Base(高速 / 低リソース)',
foundryModelBaseDesc: 'より高速でリソース消費が少なく、日常の軽量ディクテーションに適しています。',
foundryModelTiny: 'Whisper Tiny(最速 / スモークテスト)',
foundryModelTinyDesc: 'Foundry 経路が動作するか確認するための最速オプション。',
sherpaTitle: 'Windows sherpa-onnx Local(実験的)',
sherpaDesc: 'Windows では sherpa-onnx によるデバイス上のオフライン一括認識を使用します。ASR API キーは不要です。',
sherpaRuntimeReady: 'モデル読み込み済み',
sherpaRuntimeMissing: 'モデル未読み込み',
sherpaSetDefault: '既定に設定 / sherpa-onnx を有効化',
sherpaPrepare: 'ローカルファイルを確認 / 読み込み',
sherpaPreparing: '読み込み中…',
sherpaPrepareLocalFiles: 'ローカルモデルファイルを確認',
sherpaModelDir: 'モデルディレクトリ',
sherpaRevealDir: 'モデルディレクトリを開く',
sherpaError: 'sherpa-onnx 状態',
sherpaLanguageJa: '日本語 ja',
sherpaLanguageKo: '韓国語 ko',
sherpaLanguageYue: '広東語 yue',
sherpaModelSenseVoice: 'SenseVoice Small(既定 / 中国語優先)',
sherpaModelSenseVoiceDesc: '中国語および中英混在ディクテーション向けの既定実験モデル。',
sherpaModelParaformer: 'Paraformer 中国語',
sherpaModelParaformerDesc: '中国語向けの実験モデル。',
sherpaModelWhisper: 'Whisper Small 多言語',
sherpaModelWhisperDesc: 'Whisper 系列の挙動に合わせた多言語実験フォールバックモデル。',
sherpaModelWhisperLargeV3: 'Whisper Large V3(多言語)',
sherpaModelWhisperLargeV3Desc: 'オープンソース多言語モデルの中で最高品質の Whisper 系。高品質だが大容量。',
sherpaModelQwen3: 'Qwen3-ASR 0.6B INT8',
sherpaModelQwen3Desc: '変換済み sherpa-onnx Qwen3-ASR モデル。多言語認識とより強い長文コンテキスト処理に対応。',
modelSelectTitle: 'モデルのダウンロードと管理',
modelSelectDesc: 'ダウンロードしたモデルは上部の「ASR 文字起こし」のローカルプロバイダーに自動で表示され、選択すると利用できます。「+ 新しいモデルをダウンロード」でさらに入手できます。',
modelSelectPlaceholder: 'ダウンロード済みモデルを選択…',
modelSelectEmpty: 'ダウンロード済みモデルがありません。「ダウンロードと管理」から入手してください。',
groupDownload: 'ダウンロードと管理',
groupOther: 'その他',
mirrorLabel: 'ダウンロードミラー',
mirrorDesc: '公式ソースは海外ネットワークで安定。hf-mirror.com は中国コミュニティ運営のミラー。',
mirrorHuggingface: 'HuggingFace 公式 (huggingface.co)',
mirrorHfMirror: '中国ミラー (hf-mirror.com)',
activeBadge: '使用中',
downloadedBadge: 'ダウンロード済み',
notDownloadedBadge: '未ダウンロード',
download: 'ダウンロード',
resume: '続行',
cancel: 'キャンセル',
delete: '削除',
setActive: 'デフォルトに設定',
failed: '失敗',
cancelled: 'キャンセル済み',
files: 'ファイル',
sizeLoading: 'サイズ問い合わせ中…',
sizeUnknown: 'サイズ不明',
performanceWarning: 'ローカル ASR はオフラインやプライバシー重視のシーンに最適。初回使用時にモデルのダウンロードが必要。',
test: 'ロードしてテスト',
testRunning: 'テスト中…',
testHeading: '内蔵オーディオテスト',
testExpected: '原文',
testActual: '認識',
testStats: '音声長 {{audio}}s · ロード {{load}}s · 推論 {{transcribe}}s · バックエンド {{backend}}',
testFailed: 'テスト失敗',
engineStatusLabel: 'メモリ上のエンジン',
engineLoaded: 'ロード済み:{{model}}(約 1.2-3.4 GB のメモリを使用)',
engineUnloaded: '未ロード(初回ディクテーション時に約 3-5 秒のロードが必要)',
loadNow: '今すぐロード',
releaseNow: '今すぐ解放',
keepLoadedLabel: 'ロード保持時間',
keepLoadedDesc: 'ローカル ASR を使用後、何分でメモリから解放するかを決定。1+ GB の RAM 占有を回避。',
keepImmediate: '使用直後に解放',
keep1min: '最終使用から 1 分',
keep5min: '最終使用から 5 分(既定)',
keep30min: '最終使用から 30 分',
keepForever: '解放しない(常にロード)',
sidebarTitle: 'モデル一覧',
activePill: '使用中',
setDefault: 'デフォルトに設定',
downloading: 'ダウンロード中',
startDownload: 'ダウンロード開始',
downloadNewModel: '新しいモデルをダウンロード',
downloadDialogTitle: 'モデルをダウンロード',
downloadDialogAlreadyHave: 'ダウンロード済みです',
downloadDialogDesc: '左のモデルを選択して「ダウンロード開始」をクリックします。完了後、「サービス → AI プロバイダー → ASR 文字起こし」でローカルモデルのプロバイダーを選択すると利用できます。',
detailRepo: 'リポジトリ',
hfDownloads: 'ダウンロード数',
hfLikes: 'いいね',
hfDescription: 'モデル紹介',
hfNoDescription: '紹介文はありません',
hfCardFailed: 'モデル情報の取得に失敗しました',
detailFiles: 'ファイル',
detailDownloaded: 'ダウンロード済み',
detailEmpty: '左側からモデルを選択',
foundryLanguage: '言語',
foundryRuntimeSource: 'ランタイムソース',
mirrorGithubRelease: 'GitHub Releases',
keep: '保持',
downloadSettingsTitle: 'ダウンロードとストレージ設定',
downloadSettingsDesc: 'ミラーソース · モデル保存場所 · メモリ内エンジン',
},
};