import { createI18n } from 'vue-i18n'; const messages = { en: { common: { close: 'Close', cancel: 'Cancel', }, nav: { dashboard: 'Dashboard', review: 'Review', collection: 'Collection', settings: 'Settings', sync: 'Sync', logout: 'Logout', menu: 'Menu', }, login: { instruction: 'Enter your WaniKani V2 API Key to login', placeholder: 'Paste key here...', button: 'Login', failed: 'Login failed. Is server running?', }, alerts: { syncSuccess: 'Sync complete! Collection: {count}', syncFailed: 'Sync failed.', logoutConfirm: 'Are you sure you want to log out? This will end your session.', }, lesson: { phasePrimer: 'Study', phaseDemo: 'Observation', phaseGuided: 'Guided', phasePractice: 'Recall', understand: 'I Understand', ready: 'Ready to Draw', startPractice: 'Start Practice', continue: 'Continue', streak: 'Correct: {n} / {total}', hint: 'Show Hint (Resets Streak)', hintAction: 'Hint', watchAgain: 'Watch Again', completeTitle: 'Lesson Complete!', completeBody: 'You have unlocked new Kanji for review.', learned: "You've learned {n} new kanji.", components: 'Components', observe: 'Observe Stroke Order', trace: 'Trace', drawStep: 'Draw ({n}/{total})', backToDashboard: 'Back to Dashboard', }, hero: { lessons: 'Lessons', newContent: 'New content available', welcome: 'Welcome Back', subtitle: 'Your mind is ready.', start: 'Start Review', readyToReview: 'Ready to review', noReviews: 'No Reviews', allCaughtUp: 'All caught up', nextIn: 'Next review in', now: 'now', prioritize: 'Prioritize Lower Levels ({count})', }, stats: { mastery: 'Mastery (Guru+)', srsDistribution: 'SRS Levels', accuracy: 'Global Accuracy', correct: 'Correct', total: 'Total', next24: 'Next 24h', availableNow: 'Available Now', inHours: 'In {n} hour | In {n} hours', noIncoming: 'No reviews incoming for 24 hours.', items: 'items', reviewsCount: '{count} reviews', consistency: 'Study Consistency', less: 'Less', more: 'More', streakTitle: 'Study Streak', days: 'days', shieldActive: 'Zen Shield Active: Protects streak if you miss 1 day.', shieldCooldown: 'Regenerating: {n} days left', ghostTitle: 'Ghost Items', ghostSubtitle: 'Lowest Accuracy', noGhosts: 'No ghosts found! Keep it up.', }, settings: { title: 'Settings', batchSize: 'Review Batch Size', items: 'Items', language: 'Language', drawingTolerance: 'Drawing Tolerance', strict: 'Strict', loose: 'Loose', save: 'Save & Close', }, review: { meaning: 'Meaning', level: 'Level', draw: 'Draw correctly', hint: 'Hint Shown', showHint: 'Show Hint', redoLesson: 'Redo Lesson', tryAgain: 'Try again', correct: 'Correct!', next: 'NEXT', sessionComplete: 'Session Complete!', levelup: 'You leveled up your Kanji skills.', back: 'Back to Collection', caughtUp: 'All Caught Up!', noReviews: 'No reviews available right now.', viewCollection: 'View Collection', queue: 'Session queue:', loading: 'Loading Kanji...', }, collection: { searchLabel: 'Search Kanji, Meaning, or Reading...', placeholder: "e.g. 'water', 'mizu', '水'", loading: 'Loading Collection...', noMatches: 'No matches found', tryDifferent: 'Try searching for a different meaning or reading.', levelHeader: 'LEVEL', onyomi: "On'yomi", kunyomi: "Kun'yomi", nanori: 'Nanori', close: 'Close', startLesson: 'Start Lesson', redoLesson: 'Redo Lesson', }, }, de: { common: { close: 'Schließen', cancel: 'Abbrechen', }, nav: { dashboard: 'Übersicht', review: 'Lernen', collection: 'Sammlung', settings: 'Einstellungen', sync: 'Sync', logout: 'Abmelden', menu: 'Menü', }, login: { instruction: 'Gib deinen WaniKani V2 API Key ein', placeholder: 'Key hier einfügen...', button: 'Anmelden', failed: 'Login fehlgeschlagen. Läuft der Server?', }, alerts: { syncSuccess: 'Sync fertig! Sammlung: {count}', syncFailed: 'Sync fehlgeschlagen.', logoutConfirm: 'Möchtest du dich wirklich abmelden? Deine Sitzung wird beendet.', }, lesson: { phasePrimer: 'Lernen', phaseDemo: 'Beobachtung', phaseGuided: 'Geführt', phasePractice: 'Abruf', understand: 'Verstanden', ready: 'Bereit zum Zeichnen', startPractice: 'Üben Starten', continue: 'Weiter', streak: 'Richtig: {n} / {total}', hint: 'Hinweis (Setzt Serie zurück)', hintAction: 'Hinweis', watchAgain: 'Nochmal ansehen', completeTitle: 'Lektion Fertig!', completeBody: 'Neue Kanji für Reviews freigeschaltet.', learned: 'Du hast {n} neue Kanji gelernt.', components: 'Komponenten', observe: 'Strichfolge beobachten', trace: 'Nachzeichnen', drawStep: 'Zeichnen ({n}/{total})', backToDashboard: 'Zurück zur Übersicht', }, hero: { lessons: 'Lektionen', newContent: 'Neue Inhalte verfügbar', welcome: 'Willkommen zurück', subtitle: 'Dein Geist ist bereit.', start: 'Starten', readyToReview: 'Bereit zum Wiederholen', noReviews: 'Alles erledigt', allCaughtUp: 'Alles auf dem neuesten Stand', nextIn: 'Nächste Review in', now: 'jetzt', prioritize: 'Niedrige Stufen zuerst ({count})', }, stats: { mastery: 'Meisterschaft (Guru+)', srsDistribution: 'SRS Verteilung', accuracy: 'Genauigkeit', correct: 'Richtig', total: 'Gesamt', next24: 'Nächste 24h', availableNow: 'Jetzt verfügbar', inHours: 'In {n} Stunde | In {n} Stunden', noIncoming: 'Keine Reviews in den nächsten 24h.', items: 'Einträge', reviewsCount: '{count} Reviews', consistency: 'Lern-Konstanz', less: 'Weniger', more: 'Mehr', streakTitle: 'Lern-Serie', days: 'Tage', shieldActive: 'Zen-Schild Aktiv: Schützt dich bei einem verpassten Tag.', shieldCooldown: 'Regeneriert: noch {n} Tage', ghostTitle: 'Geister-Items', ghostSubtitle: 'Niedrigste Genauigkeit', noGhosts: 'Keine Geister gefunden! Weiter so.', }, settings: { title: 'Einstellungen', batchSize: 'Anzahl pro Sitzung', items: 'Einträge', language: 'Sprache', drawingTolerance: 'Zeichentoleranz', strict: 'Strikt', loose: 'Locker', save: 'Speichern & Schließen', }, review: { meaning: 'Bedeutung', level: 'Stufe', draw: 'Zeichne das Kanji', hint: 'Hinweis angezeigt', showHint: 'Hinweis zeigen', redoLesson: 'Lektion wiederholen', tryAgain: 'Nochmal versuchen', correct: 'Richtig!', next: 'WEITER', sessionComplete: 'Sitzung beendet!', levelup: 'Du hast deine Kanji-Skills verbessert.', back: 'Zurück zur Sammlung', caughtUp: 'Alles erledigt!', noReviews: 'Gerade keine Reviews verfügbar.', viewCollection: 'Zur Sammlung', queue: 'Verbleibend:', loading: 'Lade Kanji...', }, collection: { searchLabel: 'Suche Kanji, Bedeutung oder Lesung...', placeholder: "z.B. 'Wasser', 'mizu'", loading: 'Lade Sammlung...', noMatches: 'Keine Treffer', tryDifferent: 'Versuche einen anderen Suchbegriff.', levelHeader: 'STUFE', onyomi: "On'yomi", kunyomi: "Kun'yomi", nanori: 'Nanori', close: 'Schließen', startLesson: 'Lektion starten', redoLesson: 'Lektion wiederholen', }, }, ja: { common: { close: '閉じる', cancel: 'キャンセル', }, nav: { dashboard: 'ダッシュボード', review: '復習', collection: 'コレクション', settings: '設定', sync: '同期', logout: 'ログアウト', menu: 'メニュー', }, login: { instruction: 'WaniKani V2 APIキーを入力してください', placeholder: 'キーを貼り付け...', button: 'ログイン', failed: 'ログイン失敗。サーバーは起動していますか?', }, alerts: { syncSuccess: '同期完了! コレクション: {count}', syncFailed: '同期に失敗しました。', logoutConfirm: 'ログアウトしてもよろしいですか?セッションが終了します。', }, lesson: { phasePrimer: '学習', phaseDemo: '観察', phaseGuided: 'ガイド', phasePractice: '想起', understand: '理解した', ready: '描いてみる', startPractice: '練習開始', continue: '次へ', streak: '正解: {n} / {total}', hint: 'ヒント (連勝リセット)', hintAction: 'ヒント', watchAgain: 'もう一度見る', completeTitle: 'レッスン完了!', completeBody: '新しい漢字がレビューに追加されました。', learned: '{n}個の新しい漢字を覚えました。', components: '構成要素', observe: '書き順を見る', trace: 'なぞる', drawStep: '書く ({n}/{total})', backToDashboard: 'ダッシュボードに戻る', }, hero: { lessons: 'レッスン', newContent: '新しいコンテンツがあります', welcome: 'お帰りなさい', subtitle: '準備は完了です。', start: '復習開始', readyToReview: '復習の準備ができています', noReviews: 'レビューなし', allCaughtUp: 'すべて完了しています', nextIn: '次の復習まで', now: '今', prioritize: '低レベルを優先 ({count})', }, stats: { mastery: '習得度 (Guru+)', srsDistribution: 'SRS分布', accuracy: '正解率', correct: '正解', total: '合計', next24: '今後24時間', availableNow: '今すぐ可能', inHours: '{n}時間後', noIncoming: '24時間以内のレビューはありません。', items: '個', reviewsCount: '{count} レビュー', consistency: '学習の一貫性', less: '少', more: '多', streakTitle: '連続学習日数', days: '日', shieldActive: 'Zenシールド有効: 1日休んでもストリークを守ります。', shieldCooldown: '再チャージ中: 残り{n}日', ghostTitle: '苦手なアイテム', ghostSubtitle: '正解率が低い', noGhosts: '苦手なアイテムはありません!', }, settings: { title: '設定', batchSize: '1回の復習数', items: '個', language: '言語 (Language)', drawingTolerance: '描画許容範囲', strict: '厳しい', loose: '甘い', save: '保存して閉じる', }, review: { meaning: '意味', level: 'レベル', draw: '正しく描いてください', hint: 'ヒント表示', showHint: 'ヒントを表示', redoLesson: 'レッスンをやり直す', tryAgain: 'もう一度', correct: '正解!', next: '次へ', sessionComplete: 'セッション完了!', levelup: '漢字力がアップしました。', back: 'コレクションに戻る', caughtUp: '完了しました!', noReviews: '現在レビューするものはありません。', viewCollection: 'コレクションを見る', queue: '残り:', loading: '漢字を読み込み中...', }, collection: { searchLabel: '漢字、意味、読みで検索...', placeholder: "例: '水', 'mizu'", loading: '読み込み中...', noMatches: '見つかりませんでした', tryDifferent: '別のキーワードで検索してください。', levelHeader: 'レベル', onyomi: '音読み', kunyomi: '訓読み', nanori: '名乗り', close: '閉じる', startLesson: 'レッスン開始', redoLesson: 'レッスンをやり直す', }, }, }; const savedLocale = localStorage.getItem('zen_locale') || 'en'; const i18n = createI18n({ legacy: false, locale: savedLocale, fallbackLocale: 'en', messages, }); export default i18n;