'use strict';
const fs = require('fs');
const path = require('path');

const filePath = path.join(__dirname, 'public/shared/i18n.js');
const raw = fs.readFileSync(filePath);
const crlf = raw.indexOf('\r\n') >= 0;
const lineEnding = crlf ? '\r\n' : '\n';
const lines = raw.toString('utf8').split(lineEnding);

// ============================================================
// Auto-extract zh-CN translations from zh section (lines 1477-2946)
// ============================================================
const missingKeys160 = [
  'faq_section_general','faq_q_what_is','faq_a_what_is','faq_q_openclaw','faq_a_openclaw',
  'faq_q_free','faq_a_free','faq_section_setup','faq_q_bind','faq_a_bind',
  'faq_q_slots','faq_a_slots','faq_q_web_vs_app','faq_a_web_vs_app','faq_section_features',
  'faq_q_broadcast','faq_a_broadcast','faq_q_speakto','faq_a_speakto','faq_q_mission',
  'faq_a_mission','faq_section_dev','faq_q_create_bot','faq_a_create_bot','faq_q_telegram',
  'faq_a_telegram','faq_cta_text',
  'cmp_title','cmp_eclaw_name','cmp_telegram_name','cmp_subtitle','cmp_eclaw_tagline',
  'cmp_telegram_tagline','cmp_cat_setup','cmp_eclaw_setup_title','cmp_eclaw_setup_desc',
  'cmp_tg_setup_title','cmp_tg_setup_desc','cmp_cat_interaction','cmp_eclaw_interact_title',
  'cmp_eclaw_interact_desc','cmp_tg_interact_title','cmp_tg_interact_desc','cmp_cat_wallpaper',
  'cmp_eclaw_wp_title','cmp_eclaw_wp_desc','cmp_tg_wp_title','cmp_tg_wp_desc',
  'cmp_tag_native','cmp_tag_unavailable','cmp_cat_push','cmp_eclaw_push_title',
  'cmp_eclaw_push_desc','cmp_tag_realtime','cmp_tg_push_title','cmp_tg_push_desc',
  'cmp_tag_passive','cmp_cat_entity','cmp_eclaw_entity_title','cmp_eclaw_entity_desc',
  'cmp_tag_multi','cmp_tg_entity_title','cmp_tg_entity_desc','cmp_tag_manual',
  'cmp_cat_memory','cmp_eclaw_mem_title','cmp_eclaw_mem_desc','cmp_tg_mem_title',
  'cmp_tg_mem_desc','cmp_cat_format','cmp_eclaw_fmt_title','cmp_eclaw_fmt_desc',
  'cmp_tg_fmt_title','cmp_tg_fmt_desc','cmp_cat_platform','cmp_eclaw_plat_title',
  'cmp_eclaw_plat_desc','cmp_tg_plat_title','cmp_tg_plat_desc','cmp_cat_cost',
  'cmp_eclaw_cost_title','cmp_eclaw_cost_desc','cmp_tg_cost_title','cmp_tg_cost_desc',
  'cmp_cat_dev','cmp_eclaw_dev_title','cmp_eclaw_dev_desc','cmp_tg_dev_title',
  'cmp_tg_dev_desc','cmp_cat_mission','cmp_eclaw_mission_title','cmp_eclaw_mission_desc',
  'cmp_tg_mission_title','cmp_tg_mission_desc','cmp_cat_attachments','cmp_eclaw_attach_title',
  'cmp_eclaw_attach_desc','cmp_tg_attach_title','cmp_tg_attach_desc','cmp_tag_builtin',
  'cmp_tag_organized','cmp_tag_chat_only','cmp_eclaw_best_for','cmp_eclaw_best_1',
  'cmp_eclaw_best_2','cmp_eclaw_best_3','cmp_eclaw_best_4','cmp_eclaw_best_5',
  'cmp_tg_best_for','cmp_tg_best_1','cmp_tg_best_2','cmp_tg_best_3','cmp_tg_best_4',
  'cmp_cta_text','cmp_cta_eclaw','cmp_cta_telegram',
  'rn_1100_1','rn_1100_2','rn_1100_3','rn_1100_4','rn_190_1',
  'rn_180_1','rn_180_2','rn_180_3','rn_170_1','rn_170_2','rn_170_3',
  'rn_160_1','rn_160_2','rn_160_3','rn_160_4',
  'ai_chat_title','ai_chat_placeholder','ai_chat_welcome','ai_chat_error','ai_chat_rate_limited',
  'ai_chat_uploading','ai_chat_analyzing','ai_chat_thinking','ai_chat_still_working',
  'ai_progress_step','ai_progress_read','ai_progress_grep','ai_progress_glob',
  'ai_progress_bash','ai_progress_edit','ai_progress_write','ai_progress_thinking',
  'ai_progress_processing',
  'chat_attach_photo','chat_attach_video','chat_attach_file','chat_file_too_large',
  'chat_uploading','chat_upload_error','chat_upload_failed','chat_wait_upload',
  'feedback_ask_ai','feedback_ask_ai_title','feedback_ask_ai_desc',
];

// Build zh map from zh section (lines 1477-2946, i.e. index 1476-2945)
const zhMap = {};
for (let i = 1476; i < 2946; i++) {
  const m = lines[i].match(/^\s+"([^"]+)": (.*)/);
  if (m) zhMap[m[1]] = m[2].replace(/,$/, '');
}

// zh-CN: use zh values directly (Traditional→Simplified differences are minimal for this content)
const zhCN = missingKeys160.map(k => {
  if (!zhMap[k]) throw new Error('Missing zh key: ' + k);
  return '"' + k + '": ' + zhMap[k];
});

console.log('zh-CN extracted:', zhCN.length, 'keys');

// ============================================================
// JA translations (166 keys = 160 common + mc_task_saved + sched_* + chat_schedule_tag)
// ============================================================
const ja = [
  '"faq_section_general": "一般"',
  '"faq_q_what_is": "E-Clawとは何ですか？"',
  '"faq_a_what_is": "E-ClawはAndroid向けのAIエージェント連携・A2Aコミュニケーションプラットフォームです。AIボットをバインドしてリアルタイムの状態を可視化し、エージェント間（A2A）メッセージング、複数エンティティへのブロードキャスト、マルチエージェントワークフローの管理を、Androidアプリまたはウェブポータルから行えます。"',
  '"faq_q_openclaw": "OpenClawとは何ですか？"',
  '"faq_a_openclaw": "OpenClawはE-Clawの背後にあるボット開発プラットフォームです。ボット開発者はOpenClaw（Zeabur上で動作）でボットを構築・ホストし、webhookプッシュとexec+curlを通じてE-Clawデバイスと通信します。"',
  '"faq_q_free": "E-Clawは無料ですか？"',
  '"faq_a_free": "はい！E-Clawは無料の共有ボット（無料ボットごとに1日最大15メッセージ）を提供しています。自分のボット（セルフホスト）はメッセージ制限がなく、常に無料です。"',
  '"faq_section_setup": "セットアップ・バインド"',
  '"faq_q_bind": "ボットをデバイスにバインドするにはどうすればいいですか？"',
  '"faq_a_bind": "アプリまたはウェブポータルのダッシュボードに移動し、エンティティスロットを選択して「コード生成」をクリックします。バインドコマンドをコピーして、バインドしたいボットに貼り付けてください。ボットは自動的にバインドを確認します。"',
  '"faq_q_slots": "何個のボットをバインドできますか？"',
  '"faq_a_slots": "各デバイスは最大8つのエンティティスロット（0〜7）をサポートします。各スロットは異なるボットに独立してバインドでき、それぞれの状態、メモリ、チャット履歴を持ちます。"',
  '"faq_q_web_vs_app": "Androidアプリが必要ですか？それともウェブポータルだけで使えますか？"',
  '"faq_a_web_vs_app": "どちらも独立して動作します。Androidアプリはライブ壁紙体験を提供します。ウェブポータルではエンティティの管理、チャット、ファイルのアップロード、ミッションの設定などをブラウザから行えます。どちらか一方、または両方を使用できます。"',
  '"faq_section_features": "機能"',
  '"faq_q_broadcast": "ブロードキャストとは何ですか？"',
  '"faq_a_broadcast": "ブロードキャストを使うと、バインドされたすべてのエンティティに一度にメッセージを送信できます。すべてのボットに届けたいアナウンスや更新に最適です。配信レポートでどのエンティティがブロードキャストを受信したかを追跡できます。"',
  '"faq_q_speakto": "Speak-toとは何ですか？"',
  '"faq_a_speakto": "Speak-toは特定のエンティティにメッセージを送り、返信を受け取る直接会話モードです。ボットとの1対1のチャットのようなもので、会話はチャット履歴に保存されます。"',
  '"faq_q_mission": "ミッションコントロールとは何ですか？"',
  '"faq_a_mission": "ミッションコントロールは組み込みのタスク管理システムです。タスク（TODO/ミッション/完了）の作成、エンティティへの割り当て、メモの管理、スキルやルールの設定、ボットの個性（「ソウル」）の定義が可能です。タスクが変更されるとボットに通知されます。"',
  '"faq_section_dev": "ボット開発"',
  '"faq_q_create_bot": "自分のボットを作るにはどうすればいいですか？"',
  '"faq_a_create_bot": "ボットはOpenClawプラットフォーム（Zeabur上でホスト）で構築します。チュートリアル、APIドキュメント、MCPスキルドキュメントについてはユーザーガイドをご確認ください。"',
  '"faq_q_telegram": "Telegramでもボットを使えますか？"',
  '"faq_a_telegram": "はい！OpenClawボットは複数のチャンネルをサポートしています。ボットにTelegramチャンネルアダプターを追加できます。E-ClawとTelegramの違いについてはチャンネル比較ページをご覧ください。"',
  '"faq_cta_text": "まだ質問がありますか？詳細なドキュメントはユーザーガイドをご確認ください。"',
  '"cmp_title": "E-Claw vs Telegram - チャンネル比較"',
  '"cmp_eclaw_name": "E-Claw"',
  '"cmp_telegram_name": "Telegram"',
  '"cmp_subtitle": "E-ClawはA2Aコミュニケーション、ライブ可視化、プッシュブロードキャスト、タスク管理など、完全なAIエージェント連携体験を提供します。Telegramにはチャットしかありません。"',
  '"cmp_eclaw_tagline": "ネイティブライブ壁紙チャンネル"',
  '"cmp_telegram_tagline": "チャットベースのメッセージングチャンネル"',
  '"cmp_cat_setup": "セットアップ"',
  '"cmp_eclaw_setup_title": "AndroidアプリまたはWebポータル"',
  '"cmp_eclaw_setup_desc": "Androidアプリまたはウェブポータルのどちらでも使用可能です。それぞれ独立して動作します。登録し、バインドコードを生成してボットに貼り付けます。"',
  '"cmp_tg_setup_title": "TelegramでBotを検索"',
  '"cmp_tg_setup_desc": "Telegramを開き、ボットを検索して/startを押すだけで、すぐにチャットを開始できます。"',
  '"cmp_cat_interaction": "インタラクション"',
  '"cmp_eclaw_interact_title": "プッシュ＋Speak-to＋ブロードキャスト"',
  '"cmp_eclaw_interact_desc": "ボットが壁紙にステータス更新をプッシュします。直接会話にはSpeak-to、すべてのエンティティへの配信にはブロードキャストを使用します。"',
  '"cmp_tg_interact_title": "標準チャット"',
  '"cmp_tg_interact_desc": "メッセージを送信して返信を受け取ります。テキスト、画像、インラインボタンを使用したクラシックなチャットボット体験です。"',
  '"cmp_cat_wallpaper": "ライブ壁紙"',
  '"cmp_eclaw_wp_title": "完全統合"',
  '"cmp_eclaw_wp_desc": "ボットが壁紙の状態（気分、メッセージ、アニメーション）を制御します。ホーム画面が生きたものになります。"',
  '"cmp_tg_wp_title": "壁紙コントロールなし"',
  '"cmp_tg_wp_desc": "Telegramボットは端末のライブ壁紙を更新できません。チャットのみの体験です。"',
  '"cmp_tag_native": "ネイティブサポート"',
  '"cmp_tag_unavailable": "利用不可"',
  '"cmp_cat_push": "プッシュ通知"',
  '"cmp_eclaw_push_title": "プロアクティブプッシュ"',
  '"cmp_eclaw_push_desc": "ボットがAPIを通じて自律的に更新をプッシュします。ユーザーの操作なしに壁紙がリアルタイムで変化します。"',
  '"cmp_tag_realtime": "リアルタイム"',
  '"cmp_tg_push_title": "メッセージ通知"',
  '"cmp_tg_push_desc": "ボットがメッセージを送信したときの標準Telegram通知です。読むにはアプリを開く必要があります。"',
  '"cmp_tag_passive": "パッシブ"',
  '"cmp_cat_entity": "マルチエンティティ"',
  '"cmp_eclaw_entity_title": "最大8エンティティ"',
  '"cmp_eclaw_entity_desc": "異なるボットを異なるエンティティスロット（0〜7）にバインドします。それぞれ独立した状態とメモリを持ちます。"',
  '"cmp_tag_multi": "マルチエンティティ"',
  '"cmp_tg_entity_title": "1ボット＝1チャット"',
  '"cmp_tg_entity_desc": "各Telegramボットはそれぞれのチャットです。エンティティスロットシステムはありませんが、複数のボットを追加できます。"',
  '"cmp_tag_manual": "手動"',
  '"cmp_cat_memory": "メモリ・コンテキスト"',
  '"cmp_eclaw_mem_title": "サーバーサイドメモリ"',
  '"cmp_eclaw_mem_desc": "チャット履歴はE-Clawサーバーに保存されます。プラン（無料/個人）によって共有またはプライベートメモリになります。"',
  '"cmp_tg_mem_title": "ボット管理メモリ"',
  '"cmp_tg_mem_desc": "メモリはボットの実装に依存します。OpenClawの組み込みメモリまたは外部ストレージを使用できます。"',
  '"cmp_cat_format": "メッセージ形式"',
  '"cmp_eclaw_fmt_title": "テキスト＋状態フィールド"',
  '"cmp_eclaw_fmt_desc": "メッセージにはテキスト、気分、アニメーション状態が含まれます。壁紙制御のためのAPI経由の構造化JSONです。"',
  '"cmp_tg_fmt_title": "リッチメディア"',
  '"cmp_tg_fmt_desc": "テキスト、写真、動画、ファイル、スタンプ、インラインキーボード、位置情報など、Telegramの豊富な機能が使えます。"',
  '"cmp_cat_platform": "プラットフォーム"',
  '"cmp_eclaw_plat_title": "Android＋ウェブポータル"',
  '"cmp_eclaw_plat_desc": "AndroidでライブWallpaper。ウェブポータル（iPhoneでも動作！）でチャット、ミッションコントロール、ファイル管理など、壁紙以外の全機能が使えます。"',
  '"cmp_tg_plat_title": "全プラットフォーム対応"',
  '"cmp_tg_plat_desc": "TelegramはiOS、Android、デスクトップ、ウェブで利用可能です。どこからでもチャットできます。"',
  '"cmp_cat_cost": "コスト"',
  '"cmp_eclaw_cost_title": "無料＋有料オプション"',
  '"cmp_eclaw_cost_desc": "無料ボット（共有、15通/日）。個人ボットNT$288/月（専用、無制限）。セルフホスト：無料。"',
  '"cmp_tg_cost_title": "Bot API無料"',
  '"cmp_tg_cost_desc": "Telegram Bot APIは無料です。ホスティングとLLM APIの利用料金はご自身で負担します。コストを完全にコントロールできます。"',
  '"cmp_cat_dev": "ボット開発"',
  '"cmp_eclaw_dev_title": "OpenClaw＋Webhook"',
  '"cmp_eclaw_dev_desc": "OpenClawプラットフォーム（Zeabur）で構築します。exec+curlプッシュモードを使用します。MCPスキルドキュメントが提供されています。"',
  '"cmp_tg_dev_title": "OpenClaw＋Telegramアダプター"',
  '"cmp_tg_dev_desc": "OpenClawで構築し、Telegramチャンネルアダプターを追加します。メッセージルーティングにTelegram Bot APIを使用します。"',
  '"cmp_cat_mission": "ミッションコントロール"',
  '"cmp_eclaw_mission_title": "統合タスクハブ"',
  '"cmp_eclaw_mission_desc": "組み込みのタスクボード（TODO/ミッション/完了）、メモ、スキル、ルール、ソウル/個性システムを搭載。エンティティにタスクを割り当て、変更時にプッシュ通知、バージョン管理されたコラボレーション。"',
  '"cmp_tg_mission_title": "組み込みタスクシステムなし"',
  '"cmp_tg_mission_desc": "Telegramにはネイティブのタスク管理機能がありません。プロジェクト管理にはサードパーティボットや外部ツール（Trello、Notion）が必要です。エンティティ対応の割り当て機能もありません。"',
  '"cmp_cat_attachments": "チャット添付ファイル"',
  '"cmp_eclaw_attach_title": "写真・音声・ファイル＋ファイルマネージャー"',
  '"cmp_eclaw_attach_desc": "写真のアップロード（Flickrクラウド）、音声メッセージの録音、ファイル送信（最大100MB）が可能です。エンティティ/種類のフィルタリング、ブロードキャスト添付、配信追跡機能を持つ専用ファイルマネージャーページがあります。"',
  '"cmp_tg_attach_title": "チャット内リッチメディア"',
  '"cmp_tg_attach_desc": "写真、動画、ファイル、スタンプ、音声・動画メッセージがすべてチャット内でインラインに使えます。ファイルはTelegramサーバーに保存されます。別個のファイルマネージャーやエンティティレベルのフィルタリングはありません。"',
  '"cmp_tag_builtin": "組み込み"',
  '"cmp_tag_organized": "整理済み"',
  '"cmp_tag_chat_only": "チャットのみ"',
  '"cmp_eclaw_best_for": "E-Clawはこんな方に最適..."',
  '"cmp_eclaw_best_1": "Android上のライブ壁紙＋iPhoneのウェブポータル"',
  '"cmp_eclaw_best_2": "リアルタイムのプロアクティブプッシュ更新"',
  '"cmp_eclaw_best_3": "マルチエンティティ管理（最大8ボット）"',
  '"cmp_eclaw_best_4": "タスク割り当て＆ソウルシステムを備えたミッションコントロール"',
  '"cmp_eclaw_best_5": "エンティティレベルのフィルタリングを持つファイルマネージャー"',
  '"cmp_tg_best_for": "Telegramはこんな方に最適..."',
  '"cmp_tg_best_1": "基本的なチャットのみが必要な方"',
  '"cmp_tg_best_2": "リッチメディア（写真、スタンプ、ファイル）が必要な方"',
  '"cmp_tg_best_3": "慣れ親しんだチャットUI、新しいアプリが不要な方"',
  '"cmp_tg_best_4": "完全な開発者コントロールが可能な無料Bot API"',
  '"cmp_cta_text": "E-Clawは最も完全なAIエージェント連携体験を提供します。なぜチャットだけで満足するのですか？"',
  '"cmp_cta_eclaw": "E-Clawを始める"',
  '"cmp_cta_telegram": "Telegram Botについて学ぶ"',
  '"rn_1100_1": "チャンネル比較ページ — E-Claw vs Telegramの機能比較"',
  '"rn_1100_2": "ウェブポータルのTapPay機能に関するメンテナンス通知"',
  '"rn_1100_3": "ミッションコントロール＆チャット添付ファイルの比較行"',
  '"rn_1100_4": "マルチエンティティの最大スロット数を8に修正、セットアップ説明を改善"',
  '"rn_190_1": "多言語サポート — ウェブポータルとAndroid向け8言語対応（EN、繁中、简中、日本語、한국어、ไทย、Tiếng Việt、Indonesia）"',
  '"rn_180_1": "スケジュール実行履歴とチャットアノテーション"',
  '"rn_180_2": "タスク保存完了のトースト通知"',
  '"rn_180_3": "ミッションコントロールUIの改善"',
  '"rn_170_1": "チャットでの複数ファイルアップロード（ファイルごとに最大100MB）"',
  '"rn_170_2": "チャットの写真アイコンを複数添付対応の+ボタンに変更"',
  '"rn_170_3": "エンティティ/種類フィルタリングと配信追跡機能付きファイルマネージャーページ"',
  '"rn_160_1": "デバイスごとのエンティティ制限（無料：4、プレミアム：8）"',
  '"rn_160_2": "スケジュールカードとスケジュール管理ページ"',
  '"rn_160_3": "Androidのチャットのフルスクリーンダークスタイルへのリファクタリング"',
  '"rn_160_4": "ボトムナビゲーションの位置の一貫性とエッジパディング"',
  '"ai_chat_title": "E-Claw AI"',
  '"ai_chat_placeholder": "質問を入力してください..."',
  '"ai_chat_welcome": "こんにちは！私はE-Claw AIです。プラットフォームについて何でも聞いてください。"',
  '"ai_chat_error": "申し訳ありません、エラーが発生しました。もう一度お試しください。"',
  '"ai_chat_rate_limited": "メッセージ数の上限に達しました。後でもう一度お試しください。"',
  '"ai_chat_uploading": "画像をアップロード中..."',
  '"ai_chat_analyzing": "AIが分析中..."',
  '"ai_chat_thinking": "まだ処理中です..."',
  '"ai_chat_still_working": "少し時間がかかっています、まだ処理中..."',
  '"ai_progress_step": "ステップ"',
  '"ai_progress_read": "ファイルを読み込み中"',
  '"ai_progress_grep": "コードを検索中"',
  '"ai_progress_glob": "ファイルを検索中"',
  '"ai_progress_bash": "分析を実行中"',
  '"ai_progress_edit": "ファイルを編集中"',
  '"ai_progress_write": "ファイルを書き込み中"',
  '"ai_progress_thinking": "分析中"',
  '"ai_progress_processing": "結果を処理中"',
  '"chat_attach_photo": "写真"',
  '"chat_attach_video": "動画"',
  '"chat_attach_file": "ファイル"',
  '"chat_file_too_large": "ファイルが大きすぎます（最大100MB）"',
  '"chat_uploading": "アップロード中..."',
  '"chat_upload_error": "エラー"',
  '"chat_upload_failed": "アップロード失敗"',
  '"chat_wait_upload": "アップロードが完了するまでお待ちください"',
  '"chat_schedule_tag": "スケジュール"',
  '"feedback_ask_ai": "🤖 AIに聞く"',
  '"feedback_ask_ai_title": "サポートが必要ですか？AIに聞いてみましょう"',
  '"feedback_ask_ai_desc": "フィードバックを送る前に即時回答を得てください"',
  '"mc_task_saved": "タスクが保存されました"',
  '"sched_view_reply": "ボットの返信を見る"',
  '"sched_bot_reply": "ボットの返信"',
  '"sched_no_reply": "まだ返信がありません"',
  '"sched_scheduled_msg": "スケジュールメッセージ"',
];

// ============================================================
// KO translations (166 keys)
// ============================================================
const ko = [
  '"faq_section_general": "일반"',
  '"faq_q_what_is": "E-Claw란 무엇인가요?"',
  '"faq_a_what_is": "E-Claw는 Android용 AI 에이전트 협업 및 A2A 통신 플랫폼입니다. AI 봇을 바인딩하여 실시간 상태를 시각화하고, 에이전트 간(A2A) 메시징, 다수 엔티티에 브로드캐스트, 멀티 에이전트 워크플로우 오케스트레이션을 Android 앱 또는 웹 포털에서 모두 관리할 수 있습니다."',
  '"faq_q_openclaw": "OpenClaw란 무엇인가요?"',
  '"faq_a_openclaw": "OpenClaw는 E-Claw의 기반이 되는 봇 개발 플랫폼입니다. 봇 개발자들은 OpenClaw(Zeabur 기반)에서 봇을 빌드하고 호스팅하며, webhook 푸시와 exec+curl을 통해 E-Claw 기기와 통신합니다."',
  '"faq_q_free": "E-Claw는 무료인가요?"',
  '"faq_a_free": "네! E-Claw는 공유 봇(무료 봇당 하루 최대 15개 메시지)의 무료 플랜을 제공합니다. 자체 봇(셀프 호스팅)은 메시지 제한이 없으며 항상 무료입니다."',
  '"faq_section_setup": "설정 및 바인딩"',
  '"faq_q_bind": "봇을 내 기기에 바인딩하려면 어떻게 하나요?"',
  '"faq_a_bind": "앱 또는 웹 포털의 대시보드로 이동하여 엔티티 슬롯을 선택하고 「코드 생성」을 클릭하세요. 바인딩 명령을 복사하여 바인딩하려는 봇에 붙여넣으면 봇이 자동으로 바인딩을 확인합니다."',
  '"faq_q_slots": "봇을 몇 개까지 바인딩할 수 있나요?"',
  '"faq_a_slots": "각 기기는 최대 8개의 엔티티 슬롯(0~7)을 지원합니다. 각 슬롯은 고유한 상태, 메모리, 채팅 기록을 가지고 독립적으로 다른 봇에 바인딩될 수 있습니다."',
  '"faq_q_web_vs_app": "Android 앱이 필요한가요, 아니면 웹 포털만으로도 사용할 수 있나요?"',
  '"faq_a_web_vs_app": "둘 다 독립적으로 작동합니다. Android 앱은 라이브 배경화면 경험을 제공합니다. 웹 포털에서는 엔티티 관리, 채팅, 파일 업로드, 미션 설정 등을 모두 브라우저에서 할 수 있습니다. 둘 중 하나 또는 둘 다 사용할 수 있습니다."',
  '"faq_section_features": "기능"',
  '"faq_q_broadcast": "브로드캐스트란 무엇인가요?"',
  '"faq_a_broadcast": "브로드캐스트를 사용하면 바인딩된 모든 엔티티에 한 번에 메시지를 보낼 수 있습니다. 모든 봇이 알아야 할 공지사항이나 업데이트에 적합합니다. 배달 보고서에서 어떤 엔티티가 브로드캐스트를 수신했는지 추적할 수 있습니다."',
  '"faq_q_speakto": "Speak-to란 무엇인가요?"',
  '"faq_a_speakto": "Speak-to는 특정 엔티티에 메시지를 보내고 답장을 받는 직접 대화 모드입니다. 봇과의 1:1 채팅과 같으며, 대화는 채팅 기록에 저장됩니다."',
  '"faq_q_mission": "Mission Control이란 무엇인가요?"',
  '"faq_a_mission": "Mission Control은 내장된 작업 관리 시스템입니다. 작업(TODO/Mission/Done)을 만들고, 엔티티에 할당하고, 메모를 관리하고, 스킬과 규칙을 설정하고, 봇의 개성(「soul」)을 정의할 수 있습니다. 작업이 변경되면 봇에게 알림이 전송됩니다."',
  '"faq_section_dev": "봇 개발"',
  '"faq_q_create_bot": "자신만의 봇을 어떻게 만드나요?"',
  '"faq_a_create_bot": "봇은 OpenClaw 플랫폼(Zeabur에서 호스팅)에서 구축됩니다. 시작하려면 사용자 가이드에서 튜토리얼, API 문서, MCP 스킬 문서를 확인하세요."',
  '"faq_q_telegram": "Telegram에서도 봇을 사용할 수 있나요?"',
  '"faq_a_telegram": "네! OpenClaw 봇은 여러 채널을 지원합니다. 봇에 Telegram 채널 어댑터를 추가할 수 있습니다. E-Claw와 Telegram의 차이점은 채널 비교 페이지를 참조하세요."',
  '"faq_cta_text": "아직 질문이 있으신가요? 자세한 문서는 사용자 가이드를 확인하세요."',
  '"cmp_title": "E-Claw vs Telegram - 채널 비교"',
  '"cmp_eclaw_name": "E-Claw"',
  '"cmp_telegram_name": "Telegram"',
  '"cmp_subtitle": "E-Claw는 A2A 통신, 라이브 시각화, 푸시 브로드캐스트, 작업 관리 등 완전한 AI 에이전트 협업 경험을 제공합니다. Telegram에는 채팅만 있습니다."',
  '"cmp_eclaw_tagline": "네이티브 라이브 배경화면 채널"',
  '"cmp_telegram_tagline": "채팅 기반 메시징 채널"',
  '"cmp_cat_setup": "설정"',
  '"cmp_eclaw_setup_title": "Android 앱 또는 웹 포털"',
  '"cmp_eclaw_setup_desc": "Android 앱 또는 웹 포털 중 하나를 사용하세요 — 각각 독립적으로 작동합니다. 등록하고, 바인딩 코드를 생성하고, 봇에 붙여넣으세요."',
  '"cmp_tg_setup_title": "Telegram에서 봇 검색"',
  '"cmp_tg_setup_desc": "Telegram을 열고, 봇을 검색하고, /start를 누르면 바로 채팅을 시작할 수 있습니다."',
  '"cmp_cat_interaction": "인터랙션"',
  '"cmp_eclaw_interact_title": "Push + Speak-to + Broadcast"',
  '"cmp_eclaw_interact_desc": "봇이 배경화면에 상태 업데이트를 푸시합니다. 직접 대화에는 Speak-to, 모든 엔티티에 전달하려면 Broadcast를 사용하세요."',
  '"cmp_tg_interact_title": "표준 채팅"',
  '"cmp_tg_interact_desc": "메시지를 보내고 답장을 받습니다. 텍스트, 이미지, 인라인 버튼이 있는 클래식 챗봇 경험입니다."',
  '"cmp_cat_wallpaper": "라이브 배경화면"',
  '"cmp_eclaw_wp_title": "완전 통합"',
  '"cmp_eclaw_wp_desc": "봇이 배경화면 상태(기분, 메시지, 애니메이션)를 제어합니다. 홈 화면이 살아있게 됩니다."',
  '"cmp_tg_wp_title": "배경화면 제어 없음"',
  '"cmp_tg_wp_desc": "Telegram 봇은 기기의 라이브 배경화면을 업데이트할 수 없습니다. 채팅 경험만 있습니다."',
  '"cmp_tag_native": "네이티브 지원"',
  '"cmp_tag_unavailable": "사용 불가"',
  '"cmp_cat_push": "푸시 알림"',
  '"cmp_eclaw_push_title": "프로액티브 푸시"',
  '"cmp_eclaw_push_desc": "봇이 API를 통해 자율적으로 업데이트를 푸시합니다. 사용자 조작 없이 배경화면이 실시간으로 변합니다."',
  '"cmp_tag_realtime": "실시간"',
  '"cmp_tg_push_title": "메시지 알림"',
  '"cmp_tg_push_desc": "봇이 메시지를 보낼 때의 표준 Telegram 알림입니다. 읽으려면 앱을 열어야 합니다."',
  '"cmp_tag_passive": "패시브"',
  '"cmp_cat_entity": "멀티 엔티티"',
  '"cmp_eclaw_entity_title": "최대 8개 엔티티"',
  '"cmp_eclaw_entity_desc": "다른 봇을 다른 엔티티 슬롯(0~7)에 바인딩합니다. 각각 독립적인 상태와 메모리를 가집니다."',
  '"cmp_tag_multi": "멀티 엔티티"',
  '"cmp_tg_entity_title": "봇 1개 = 채팅 1개"',
  '"cmp_tg_entity_desc": "각 Telegram 봇은 별도의 채팅입니다. 엔티티 슬롯 시스템은 없지만 여러 봇을 추가할 수 있습니다."',
  '"cmp_tag_manual": "수동"',
  '"cmp_cat_memory": "메모리 & 컨텍스트"',
  '"cmp_eclaw_mem_title": "서버 사이드 메모리"',
  '"cmp_eclaw_mem_desc": "채팅 기록이 E-Claw 서버에 저장됩니다. 플랜(무료/개인)에 따라 공유 또는 프라이빗 메모리가 됩니다."',
  '"cmp_tg_mem_title": "봇 관리 메모리"',
  '"cmp_tg_mem_desc": "메모리는 봇 구현에 따라 다릅니다. OpenClaw의 내장 메모리 또는 외부 스토리지를 사용할 수 있습니다."',
  '"cmp_cat_format": "메시지 형식"',
  '"cmp_eclaw_fmt_title": "텍스트 + 상태 필드"',
  '"cmp_eclaw_fmt_desc": "메시지에는 텍스트, 기분, 애니메이션 상태가 포함됩니다. 배경화면 제어를 위한 API를 통한 구조화된 JSON입니다."',
  '"cmp_tg_fmt_title": "리치 미디어"',
  '"cmp_tg_fmt_desc": "텍스트, 사진, 동영상, 파일, 스티커, 인라인 키보드, 위치 등 Telegram의 풍부한 기능을 사용할 수 있습니다."',
  '"cmp_cat_platform": "플랫폼"',
  '"cmp_eclaw_plat_title": "Android + 웹 포털"',
  '"cmp_eclaw_plat_desc": "Android에서 라이브 배경화면. 웹 포털(iPhone에서도 작동!)에서 채팅, 미션 컨트롤, 파일 — 배경화면을 제외한 모든 기능을 사용할 수 있습니다."',
  '"cmp_tg_plat_title": "모든 플랫폼 지원"',
  '"cmp_tg_plat_desc": "Telegram은 iOS, Android, 데스크톱, 웹에서 사용 가능합니다. 어디서나 채팅할 수 있습니다."',
  '"cmp_cat_cost": "비용"',
  '"cmp_eclaw_cost_title": "무료 + 유료 옵션"',
  '"cmp_eclaw_cost_desc": "무료 봇(공유, 15개 메시지/일). 개인 봇 NT$288/월(전용, 무제한). 셀프 호스트: 무료."',
  '"cmp_tg_cost_title": "Bot API 무료"',
  '"cmp_tg_cost_desc": "Telegram Bot API는 무료입니다. 호스팅 및 LLM API 사용 비용은 직접 부담합니다. 비용을 완전히 제어할 수 있습니다."',
  '"cmp_cat_dev": "봇 개발"',
  '"cmp_eclaw_dev_title": "OpenClaw + Webhook"',
  '"cmp_eclaw_dev_desc": "OpenClaw 플랫폼(Zeabur)에서 구축합니다. exec+curl 푸시 모드를 사용합니다. MCP 스킬 문서가 제공됩니다."',
  '"cmp_tg_dev_title": "OpenClaw + Telegram 어댑터"',
  '"cmp_tg_dev_desc": "OpenClaw에서 구축하고 Telegram 채널 어댑터를 추가합니다. 메시지 라우팅에 Telegram Bot API를 사용합니다."',
  '"cmp_cat_mission": "Mission Control"',
  '"cmp_eclaw_mission_title": "통합 작업 허브"',
  '"cmp_eclaw_mission_desc": "내장 작업 보드(TODO/Mission/Done), 메모, 스킬, 규칙, 소울/개성 시스템을 갖추고 있습니다. 엔티티에 작업을 할당하고, 변경 시 푸시 알림, 버전 제어 협업을 지원합니다."',
  '"cmp_tg_mission_title": "내장 작업 시스템 없음"',
  '"cmp_tg_mission_desc": "Telegram에는 네이티브 작업 관리 기능이 없습니다. 프로젝트 추적을 위해 서드파티 봇이나 외부 도구(Trello, Notion)가 필요합니다. 엔티티 기반 할당 기능도 없습니다."',
  '"cmp_cat_attachments": "채팅 첨부 파일"',
  '"cmp_eclaw_attach_title": "사진, 음성 & 파일 + 파일 관리자"',
  '"cmp_eclaw_attach_desc": "사진 업로드(Flickr 클라우드), 음성 메시지 녹음, 파일 전송(최대 100MB)이 가능합니다. 엔티티/종류 필터링, 브로드캐스트 첨부, 배달 추적 기능이 있는 전용 파일 관리자 페이지가 있습니다."',
  '"cmp_tg_attach_title": "채팅 내 리치 미디어"',
  '"cmp_tg_attach_desc": "사진, 동영상, 파일, 스티커, 음성 및 동영상 메시지가 모두 채팅 내에서 인라인으로 사용됩니다. 파일은 Telegram 서버에 저장됩니다. 별도의 파일 관리자나 엔티티 수준 필터링은 없습니다."',
  '"cmp_tag_builtin": "내장"',
  '"cmp_tag_organized": "체계적"',
  '"cmp_tag_chat_only": "채팅만"',
  '"cmp_eclaw_best_for": "E-Claw는 이런 분께 최적..."',
  '"cmp_eclaw_best_1": "Android의 라이브 배경화면 + iPhone의 웹 포털"',
  '"cmp_eclaw_best_2": "실시간 프로액티브 푸시 업데이트"',
  '"cmp_eclaw_best_3": "멀티 엔티티 관리(최대 8개 봇)"',
  '"cmp_eclaw_best_4": "작업 할당 & 소울 시스템을 갖춘 Mission Control"',
  '"cmp_eclaw_best_5": "엔티티 수준 필터링이 있는 파일 관리자"',
  '"cmp_tg_best_for": "Telegram은 이런 분께 최적..."',
  '"cmp_tg_best_1": "기본 채팅만 필요한 분"',
  '"cmp_tg_best_2": "리치 미디어(사진, 스티커, 파일)가 필요한 분"',
  '"cmp_tg_best_3": "익숙한 채팅 UI, 새로운 앱이 필요 없는 분"',
  '"cmp_tg_best_4": "완전한 개발자 제어가 가능한 무료 Bot API"',
  '"cmp_cta_text": "E-Claw는 가장 완전한 AI 에이전트 협업 경험을 제공합니다. 왜 채팅만으로 만족하나요?"',
  '"cmp_cta_eclaw": "E-Claw 시작하기"',
  '"cmp_cta_telegram": "Telegram Bot에 대해 알아보기"',
  '"rn_1100_1": "채널 비교 페이지 — E-Claw vs Telegram 기능 나란히 비교"',
  '"rn_1100_2": "웹 포털 TapPay 기능 결제 유지보수 알림"',
  '"rn_1100_3": "Mission Control & 채팅 첨부 파일 비교 행"',
  '"rn_1100_4": "최대 Entity 수를 8개 슬롯으로 수정, 설정 설명 개선"',
  '"rn_190_1": "다국어 지원 — 웹 포털 및 Android용 8개 언어(EN, 繁中, 简中, 日本語, 한국어, ไทย, Tiếng Việt, Indonesia)"',
  '"rn_180_1": "일정 실행 기록 및 채팅 주석"',
  '"rn_180_2": "작업 저장 완료 토스트 알림"',
  '"rn_180_3": "Mission Control UI 개선"',
  '"rn_170_1": "채팅에서 여러 파일 업로드(파일당 최대 100MB)"',
  '"rn_170_2": "채팅 사진 아이콘을 다중 첨부 + 버튼으로 변경"',
  '"rn_170_3": "엔티티/종류 필터링 및 배달 추적이 있는 파일 관리자 페이지"',
  '"rn_160_1": "기기당 엔티티 제한(무료: 4, 프리미엄: 8)"',
  '"rn_160_2": "일정 카드 및 일정 관리 페이지"',
  '"rn_160_3": "Android 채팅 전체 화면 다크 스타일로 리팩터링"',
  '"rn_160_4": "하단 내비게이션 위치 일관성 및 엣지 패딩"',
  '"ai_chat_title": "E-Claw AI"',
  '"ai_chat_placeholder": "질문을 입력하세요..."',
  '"ai_chat_welcome": "안녕하세요! 저는 E-Claw AI입니다. 플랫폼에 대해 무엇이든 물어보세요."',
  '"ai_chat_error": "죄송합니다, 오류가 발생했습니다. 다시 시도해 주세요."',
  '"ai_chat_rate_limited": "메시지 한도에 도달했습니다. 나중에 다시 시도해 주세요."',
  '"ai_chat_uploading": "이미지 업로드 중..."',
  '"ai_chat_analyzing": "AI가 분석 중..."',
  '"ai_chat_thinking": "아직 처리 중..."',
  '"ai_chat_still_working": "시간이 걸리고 있습니다, 아직 작업 중..."',
  '"ai_progress_step": "단계"',
  '"ai_progress_read": "파일 읽는 중"',
  '"ai_progress_grep": "코드 검색 중"',
  '"ai_progress_glob": "파일 찾는 중"',
  '"ai_progress_bash": "분석 실행 중"',
  '"ai_progress_edit": "파일 편집 중"',
  '"ai_progress_write": "파일 쓰는 중"',
  '"ai_progress_thinking": "분석 중"',
  '"ai_progress_processing": "결과 처리 중"',
  '"chat_attach_photo": "사진"',
  '"chat_attach_video": "동영상"',
  '"chat_attach_file": "파일"',
  '"chat_file_too_large": "파일이 너무 큽니다(최대 100MB)"',
  '"chat_uploading": "업로드 중..."',
  '"chat_upload_error": "오류"',
  '"chat_upload_failed": "업로드 실패"',
  '"chat_wait_upload": "업로드가 완료될 때까지 기다려 주세요"',
  '"chat_schedule_tag": "예약"',
  '"feedback_ask_ai": "🤖 AI에게 물어보기"',
  '"feedback_ask_ai_title": "빠른 도움이 필요하신가요? AI에게 물어보세요"',
  '"feedback_ask_ai_desc": "피드백을 보내기 전에 즉각적인 답변을 받으세요"',
  '"mc_task_saved": "작업이 저장되었습니다"',
  '"sched_view_reply": "봇 답장 보기"',
  '"sched_bot_reply": "봇 답장"',
  '"sched_no_reply": "아직 답장이 없습니다"',
  '"sched_scheduled_msg": "예약 메시지"',
];

// ============================================================
// TH translations (160 keys, no mc_/sched_/chat_schedule_tag)
// ============================================================
const th = [
  '"faq_section_general": "ทั่วไป"',
  '"faq_q_what_is": "E-Claw คืออะไร?"',
  '"faq_a_what_is": "E-Claw คือแพลตฟอร์มความร่วมมือ AI Agent และการสื่อสาร A2A สำหรับ Android เชื่อมต่อบอท AI ของคุณเพื่อแสดงสถานะแบบเรียลไทม์ เปิดใช้งานการส่งข้อความแบบ Agent-to-Agent (A2A) บรอดแคสต์ไปยังหลาย Entity และจัดการเวิร์กโฟลว์หลายเอเจนต์ — ทั้งหมดจัดการผ่านแอป Android หรือเว็บพอร์ทัล"',
  '"faq_q_openclaw": "OpenClaw คืออะไร?"',
  '"faq_a_openclaw": "OpenClaw คือแพลตฟอร์มพัฒนาบอทที่อยู่เบื้องหลัง E-Claw นักพัฒนาบอทสร้างและโฮสต์บอทของตนบน OpenClaw (ขับเคลื่อนโดย Zeabur) จากนั้นสื่อสารกับอุปกรณ์ E-Claw ผ่าน webhook push และ exec+curl"',
  '"faq_q_free": "E-Claw ฟรีไหม?"',
  '"faq_a_free": "ใช่! E-Claw มีแผนฟรีพร้อมบอทที่ใช้ร่วมกัน (สูงสุด 15 ข้อความ/วัน ต่อบอทฟรี) บอทของคุณเอง (self-hosted) ไม่มีการจำกัดข้อความและฟรีตลอดไป"',
  '"faq_section_setup": "การตั้งค่าและการผูก"',
  '"faq_q_bind": "จะผูกบอทกับอุปกรณ์ของฉันได้อย่างไร?"',
  '"faq_a_bind": "ไปที่ Dashboard (ในแอปหรือเว็บพอร์ทัล) เลือกสล็อต Entity แล้วคลิก 「สร้างโค้ด」 คัดลอกคำสั่งผูกและวางในบอทที่ต้องการผูก บอทจะยืนยันการผูกโดยอัตโนมัติ"',
  '"faq_q_slots": "ฉันสามารถผูกบอทได้กี่ตัว?"',
  '"faq_a_slots": "แต่ละอุปกรณ์รองรับสล็อต Entity สูงสุด 8 สล็อต (0–7) แต่ละสล็อตสามารถผูกกับบอทต่างๆ ได้โดยอิสระ พร้อมสถานะ หน่วยความจำ และประวัติแชทของตัวเอง"',
  '"faq_q_web_vs_app": "ฉันต้องใช้แอป Android หรือสามารถใช้เว็บพอร์ทัลอย่างเดียวได้?"',
  '"faq_a_web_vs_app": "ทั้งสองทำงานได้อย่างอิสระ แอป Android ให้ประสบการณ์วอลเปเปอร์สด เว็บพอร์ทัลช่วยให้คุณจัดการ Entity แชท อัปโหลดไฟล์ และกำหนดค่าภารกิจ — ทั้งหมดจากเบราว์เซอร์ คุณสามารถใช้อย่างใดอย่างหนึ่งหรือทั้งสองได้"',
  '"faq_section_features": "คุณสมบัติ"',
  '"faq_q_broadcast": "บรอดแคสต์คืออะไร?"',
  '"faq_a_broadcast": "บรอดแคสต์ช่วยให้คุณส่งข้อความเดียวไปยัง Entity ที่ผูกไว้ทั้งหมดพร้อมกัน เหมาะสำหรับประกาศหรืออัปเดตที่บอททุกตัวต้องรับรู้ คุณสามารถติดตามว่า Entity ใดได้รับบรอดแคสต์ในรายงานการส่ง"',
  '"faq_q_speakto": "Speak-to คืออะไร?"',
  '"faq_a_speakto": "Speak-to คือโหมดการสนทนาโดยตรงที่คุณส่งข้อความไปยัง Entity เฉพาะและรับการตอบกลับ เหมือนการแชทแบบ 1 ต่อ 1 กับบอทของคุณ โดยบทสนทนาจะถูกบันทึกในประวัติแชท"',
  '"faq_q_mission": "Mission Control คืออะไร?"',
  '"faq_a_mission": "Mission Control คือระบบจัดการงานในตัว คุณสามารถสร้างงาน (TODO/Mission/Done) มอบหมายให้ Entity จัดการบันทึก กำหนดค่าทักษะและกฎ และกำหนดบุคลิกของบอท (「soul」) บอทจะได้รับการแจ้งเตือนเมื่องานของตนเปลี่ยนแปลง"',
  '"faq_section_dev": "การพัฒนาบอท"',
  '"faq_q_create_bot": "จะสร้างบอทของตัวเองได้อย่างไร?"',
  '"faq_a_create_bot": "บอทถูกสร้างบนแพลตฟอร์ม OpenClaw (โฮสต์บน Zeabur) ดูคู่มือผู้ใช้สำหรับบทช่วยสอน เอกสาร API และเอกสาร MCP skills เพื่อเริ่มต้น"',
  '"faq_q_telegram": "ฉันสามารถใช้บอทของฉันบน Telegram ได้ไหม?"',
  '"faq_a_telegram": "ใช่! บอท OpenClaw รองรับหลายช่องทาง คุณสามารถเพิ่มอะแดปเตอร์ช่องทาง Telegram ลงในบอทของคุณ ดูหน้าเปรียบเทียบช่องทางสำหรับความแตกต่างระหว่าง E-Claw และ Telegram"',
  '"faq_cta_text": "ยังมีคำถามอยู่ไหม? ดูคู่มือผู้ใช้สำหรับเอกสารโดยละเอียด"',
  '"cmp_title": "E-Claw vs Telegram - เปรียบเทียบช่องทาง"',
  '"cmp_eclaw_name": "E-Claw"',
  '"cmp_telegram_name": "Telegram"',
  '"cmp_subtitle": "E-Claw มอบประสบการณ์ความร่วมมือ AI Agent ที่สมบูรณ์ — การสื่อสาร A2A การแสดงผลสด การบรอดแคสต์แบบพุช การจัดการงาน และอีกมากมาย Telegram มีแค่แชท"',
  '"cmp_eclaw_tagline": "ช่องทางวอลเปเปอร์สดแบบ Native"',
  '"cmp_telegram_tagline": "ช่องทางส่งข้อความแบบแชท"',
  '"cmp_cat_setup": "การตั้งค่า"',
  '"cmp_eclaw_setup_title": "แอป Android หรือเว็บพอร์ทัล"',
  '"cmp_eclaw_setup_desc": "ใช้แอป Android หรือเว็บพอร์ทัล — แต่ละอย่างทำงานได้อย่างอิสระ ลงทะเบียน สร้างโค้ดผูก วางในบอท"',
  '"cmp_tg_setup_title": "ค้นหาบอทบน Telegram"',
  '"cmp_tg_setup_desc": "เปิด Telegram ค้นหาบอท กด /start — พร้อมแชททันที"',
  '"cmp_cat_interaction": "การโต้ตอบ"',
  '"cmp_eclaw_interact_title": "Push + Speak-to + Broadcast"',
  '"cmp_eclaw_interact_desc": "บอทพุชการอัปเดตสถานะไปยังวอลเปเปอร์ Speak-to สำหรับการสนทนาโดยตรง Broadcast เพื่อเข้าถึง Entity ทั้งหมด"',
  '"cmp_tg_interact_title": "แชทมาตรฐาน"',
  '"cmp_tg_interact_desc": "ส่งข้อความรับการตอบกลับ ประสบการณ์แชทบอทคลาสสิกพร้อมข้อความ รูปภาพ และปุ่ม inline"',
  '"cmp_cat_wallpaper": "วอลเปเปอร์สด"',
  '"cmp_eclaw_wp_title": "บูรณาการอย่างสมบูรณ์"',
  '"cmp_eclaw_wp_desc": "บอทควบคุมสถานะวอลเปเปอร์ (อารมณ์ ข้อความ แอนิเมชัน) หน้าจอหลักของคุณมีชีวิต"',
  '"cmp_tg_wp_title": "ไม่มีการควบคุมวอลเปเปอร์"',
  '"cmp_tg_wp_desc": "บอท Telegram ไม่สามารถอัปเดตวอลเปเปอร์สดบนอุปกรณ์ของคุณได้ มีเพียงประสบการณ์แชท"',
  '"cmp_tag_native": "รองรับ Native"',
  '"cmp_tag_unavailable": "ไม่พร้อมใช้งาน"',
  '"cmp_cat_push": "การแจ้งเตือน Push"',
  '"cmp_eclaw_push_title": "Push เชิงรุก"',
  '"cmp_eclaw_push_desc": "บอทพุชการอัปเดตโดยอัตโนมัติผ่าน API วอลเปเปอร์เปลี่ยนแปลงแบบเรียลไทม์โดยไม่ต้องดำเนินการของผู้ใช้"',
  '"cmp_tag_realtime": "เรียลไทม์"',
  '"cmp_tg_push_title": "การแจ้งเตือนข้อความ"',
  '"cmp_tg_push_desc": "การแจ้งเตือน Telegram มาตรฐานเมื่อบอทส่งข้อความ ผู้ใช้ต้องเปิดแอปเพื่ออ่าน"',
  '"cmp_tag_passive": "แบบ Passive"',
  '"cmp_cat_entity": "Multi-Entity"',
  '"cmp_eclaw_entity_title": "สูงสุด 8 Entity"',
  '"cmp_eclaw_entity_desc": "ผูกบอทต่างๆ กับสล็อต Entity ต่างๆ (0-7) แต่ละอันมีสถานะและหน่วยความจำอิสระ"',
  '"cmp_tag_multi": "Multi-Entity"',
  '"cmp_tg_entity_title": "1 บอท = 1 แชท"',
  '"cmp_tg_entity_desc": "บอท Telegram แต่ละตัวเป็นแชทแยกต่างหาก ไม่มีระบบสล็อต Entity แต่คุณสามารถเพิ่มบอทหลายตัวได้"',
  '"cmp_tag_manual": "ด้วยตนเอง"',
  '"cmp_cat_memory": "หน่วยความจำและบริบท"',
  '"cmp_eclaw_mem_title": "หน่วยความจำฝั่งเซิร์ฟเวอร์"',
  '"cmp_eclaw_mem_desc": "ประวัติแชทถูกเก็บไว้บนเซิร์ฟเวอร์ E-Claw หน่วยความจำที่ใช้ร่วมกันหรือส่วนตัวขึ้นอยู่กับแผน (ฟรี/ส่วนตัว)"',
  '"cmp_tg_mem_title": "หน่วยความจำที่บอทจัดการ"',
  '"cmp_tg_mem_desc": "หน่วยความจำขึ้นอยู่กับการใช้งานบอท สามารถใช้หน่วยความจำในตัวของ OpenClaw หรือที่เก็บข้อมูลภายนอกได้"',
  '"cmp_cat_format": "รูปแบบข้อความ"',
  '"cmp_eclaw_fmt_title": "ข้อความ + ฟิลด์สถานะ"',
  '"cmp_eclaw_fmt_desc": "ข้อความรวมข้อความ อารมณ์ สถานะแอนิเมชัน JSON ที่มีโครงสร้างผ่าน API สำหรับการควบคุมวอลเปเปอร์"',
  '"cmp_tg_fmt_title": "มีเดียหลากหลาย"',
  '"cmp_tg_fmt_desc": "ข้อความ รูปภาพ วิดีโอ ไฟล์ สติกเกอร์ แป้นพิมพ์ inline ตำแหน่ง และคุณสมบัติ Telegram อื่นๆ"',
  '"cmp_cat_platform": "แพลตฟอร์ม"',
  '"cmp_eclaw_plat_title": "Android + เว็บพอร์ทัล"',
  '"cmp_eclaw_plat_desc": "วอลเปเปอร์สดบน Android เว็บพอร์ทัล (ใช้งานได้บน iPhone ด้วย!) สำหรับแชท mission control ไฟล์ — ทุกคุณสมบัติยกเว้นวอลเปเปอร์"',
  '"cmp_tg_plat_title": "รองรับทุกแพลตฟอร์ม"',
  '"cmp_tg_plat_desc": "Telegram มีให้บน iOS Android เดสก์ท็อป และเว็บ แชทได้จากทุกที่"',
  '"cmp_cat_cost": "ค่าใช้จ่าย"',
  '"cmp_eclaw_cost_title": "ฟรี + ตัวเลือกแบบชำระเงิน"',
  '"cmp_eclaw_cost_desc": "บอทฟรี (ใช้ร่วมกัน 15 ข้อความ/วัน) บอทส่วนตัว NT$288/เดือน (ส่วนตัว ไม่จำกัด) Self-host: ฟรี"',
  '"cmp_tg_cost_title": "Bot API ฟรี"',
  '"cmp_tg_cost_desc": "Telegram Bot API ฟรี คุณจ่ายสำหรับการโฮสต์และการใช้งาน LLM API ควบคุมค่าใช้จ่ายได้อย่างสมบูรณ์"',
  '"cmp_cat_dev": "การพัฒนาบอท"',
  '"cmp_eclaw_dev_title": "OpenClaw + Webhook"',
  '"cmp_eclaw_dev_desc": "สร้างบนแพลตฟอร์ม OpenClaw (Zeabur) ใช้โหมด push exec+curl มีเอกสาร MCP skills ให้"',
  '"cmp_tg_dev_title": "OpenClaw + อะแดปเตอร์ Telegram"',
  '"cmp_tg_dev_desc": "สร้างบน OpenClaw เพิ่มอะแดปเตอร์ช่องทาง Telegram ใช้ Telegram Bot API สำหรับการกำหนดเส้นทางข้อความ"',
  '"cmp_cat_mission": "Mission Control"',
  '"cmp_eclaw_mission_title": "ศูนย์งานที่รวมไว้"',
  '"cmp_eclaw_mission_desc": "กระดานงานในตัว (TODO/Mission/Done) บันทึก ทักษะ กฎ และระบบ soul/บุคลิก มอบหมายงานให้ Entity การแจ้งเตือน push เมื่อมีการเปลี่ยนแปลง ความร่วมมือแบบ version control"',
  '"cmp_tg_mission_title": "ไม่มีระบบงานในตัว"',
  '"cmp_tg_mission_desc": "Telegram ไม่มีการจัดการงานแบบ native ต้องใช้บอทของบุคคลที่สามหรือเครื่องมือภายนอก (Trello, Notion) สำหรับการติดตามโครงการ ไม่มีการมอบหมายตาม Entity"',
  '"cmp_cat_attachments": "ไฟล์แนบในแชท"',
  '"cmp_eclaw_attach_title": "รูปภาพ เสียง & ไฟล์ + ตัวจัดการไฟล์"',
  '"cmp_eclaw_attach_desc": "อัปโหลดรูปภาพ (Flickr cloud) บันทึกข้อความเสียง ส่งไฟล์ (สูงสุด 100 MB) หน้าตัวจัดการไฟล์เฉพาะพร้อมการกรอง Entity/ประเภท การแนบบรอดแคสต์ และการติดตามการส่ง"',
  '"cmp_tg_attach_title": "มีเดียหลากหลายในแชท"',
  '"cmp_tg_attach_desc": "รูปภาพ วิดีโอ ไฟล์ สติกเกอร์ ข้อความเสียงและวิดีโอ — ทั้งหมดในแชท ไฟล์ถูกเก็บบนเซิร์ฟเวอร์ Telegram ไม่มีตัวจัดการไฟล์แยกต่างหากหรือการกรองระดับ Entity"',
  '"cmp_tag_builtin": "ในตัว"',
  '"cmp_tag_organized": "เป็นระเบียบ"',
  '"cmp_tag_chat_only": "แชทเท่านั้น"',
  '"cmp_eclaw_best_for": "E-Claw เหมาะสำหรับ..."',
  '"cmp_eclaw_best_1": "วอลเปเปอร์สดบน Android + เว็บพอร์ทัลสำหรับ iPhone"',
  '"cmp_eclaw_best_2": "การอัปเดต push เชิงรุกแบบเรียลไทม์"',
  '"cmp_eclaw_best_3": "การจัดการ Multi-Entity (สูงสุด 8 บอท)"',
  '"cmp_eclaw_best_4": "Mission Control พร้อมการมอบหมายงานและระบบ soul"',
  '"cmp_eclaw_best_5": "ตัวจัดการไฟล์พร้อมการกรองระดับ Entity"',
  '"cmp_tg_best_for": "Telegram เหมาะสำหรับ..."',
  '"cmp_tg_best_1": "ต้องการแค่แชทพื้นฐาน ไม่ต้องการอะไรเพิ่ม"',
  '"cmp_tg_best_2": "มีเดียหลากหลาย (รูปภาพ สติกเกอร์ ไฟล์)"',
  '"cmp_tg_best_3": "UI แชทที่คุ้นเคย ไม่ต้องการแอปใหม่"',
  '"cmp_tg_best_4": "Bot API ฟรีพร้อมการควบคุมนักพัฒนาแบบสมบูรณ์"',
  '"cmp_cta_text": "E-Claw มอบประสบการณ์ความร่วมมือ AI Agent ที่สมบูรณ์ที่สุด ทำไมต้องพอใจแค่แชท?"',
  '"cmp_cta_eclaw": "เริ่มต้นกับ E-Claw"',
  '"cmp_cta_telegram": "เรียนรู้เกี่ยวกับ Bot Telegram"',
  '"rn_1100_1": "หน้าเปรียบเทียบช่องทาง — เปรียบเทียบคุณสมบัติ E-Claw vs Telegram แบบเคียงข้างกัน"',
  '"rn_1100_2": "การแจ้งเตือนการบำรุงรักษาการชำระเงินสำหรับคุณสมบัติ TapPay บนเว็บพอร์ทัล"',
  '"rn_1100_3": "แถวเปรียบเทียบ Mission Control & ไฟล์แนบในแชท"',
  '"rn_1100_4": "แก้ไขจำนวน Entity สูงสุดเป็น 8 สล็อต ปรับปรุงคำอธิบายการตั้งค่า"',
  '"rn_190_1": "รองรับหลายภาษา — 8 ภาษาสำหรับเว็บพอร์ทัลและ Android (EN, 繁中, 简中, 日本語, 한국어, ไทย, Tiếng Việt, Indonesia)"',
  '"rn_180_1": "ประวัติการดำเนินการตามกำหนดเวลาและคำอธิบายประกอบแชท"',
  '"rn_180_2": "การแจ้งเตือน toast เมื่อบันทึกงาน"',
  '"rn_180_3": "การปรับปรุง UI ของ Mission Control"',
  '"rn_170_1": "อัปโหลดหลายไฟล์ในแชท (สูงสุด 100 MB ต่อไฟล์)"',
  '"rn_170_2": "เปลี่ยนไอคอนรูปภาพในแชทเป็นปุ่ม + สำหรับไฟล์แนบหลายรายการ"',
  '"rn_170_3": "หน้าตัวจัดการไฟล์พร้อมการกรอง Entity/ประเภทและการติดตามการส่ง"',
  '"rn_160_1": "จำกัด Entity ต่ออุปกรณ์ (ฟรี: 4, พรีเมียม: 8)"',
  '"rn_160_2": "การ์ดกำหนดเวลาและหน้าจัดการกำหนดเวลา"',
  '"rn_160_3": "รีแฟกเตอร์สไตล์มืดเต็มหน้าจอสำหรับแชทบน Android"',
  '"rn_160_4": "ความสม่ำเสมอของตำแหน่งการนำทางด้านล่างและระยะขอบ"',
  '"ai_chat_title": "E-Claw AI"',
  '"ai_chat_placeholder": "ถามคำถาม..."',
  '"ai_chat_welcome": "สวัสดี! ฉันคือ E-Claw AI ถามฉันเกี่ยวกับแพลตฟอร์มได้เลย"',
  '"ai_chat_error": "ขออภัย เกิดข้อผิดพลาด กรุณาลองอีกครั้ง"',
  '"ai_chat_rate_limited": "ถึงขีดจำกัดข้อความแล้ว กรุณาลองอีกครั้งในภายหลัง"',
  '"ai_chat_uploading": "กำลังอัปโหลดรูปภาพ..."',
  '"ai_chat_analyzing": "AI กำลังวิเคราะห์..."',
  '"ai_chat_thinking": "ยังประมวลผลอยู่..."',
  '"ai_chat_still_working": "ใช้เวลาสักครู่ ยังทำงานอยู่..."',
  '"ai_progress_step": "ขั้นตอน"',
  '"ai_progress_read": "กำลังอ่านไฟล์"',
  '"ai_progress_grep": "กำลังค้นหาโค้ด"',
  '"ai_progress_glob": "กำลังค้นหาไฟล์"',
  '"ai_progress_bash": "กำลังรันการวิเคราะห์"',
  '"ai_progress_edit": "กำลังแก้ไขไฟล์"',
  '"ai_progress_write": "กำลังเขียนไฟล์"',
  '"ai_progress_thinking": "กำลังวิเคราะห์"',
  '"ai_progress_processing": "กำลังประมวลผลผลลัพธ์"',
  '"chat_attach_photo": "รูปภาพ"',
  '"chat_attach_video": "วิดีโอ"',
  '"chat_attach_file": "ไฟล์"',
  '"chat_file_too_large": "ไฟล์ใหญ่เกินไป (สูงสุด 100MB)"',
  '"chat_uploading": "กำลังอัปโหลด..."',
  '"chat_upload_error": "ข้อผิดพลาด"',
  '"chat_upload_failed": "การอัปโหลดล้มเหลว"',
  '"chat_wait_upload": "กรุณารอให้การอัปโหลดเสร็จสิ้น"',
  '"feedback_ask_ai": "🤖 ถาม AI"',
  '"feedback_ask_ai_title": "ต้องการความช่วยเหลือด่วน? ถาม AI"',
  '"feedback_ask_ai_desc": "รับคำตอบทันทีก่อนส่งข้อเสนอแนะ"',
];

// ============================================================
// VI translations (160 keys)
// ============================================================
const vi = [
  '"faq_section_general": "Tổng quan"',
  '"faq_q_what_is": "E-Claw là gì?"',
  '"faq_a_what_is": "E-Claw là nền tảng cộng tác AI Agent và giao tiếp A2A trên Android. Liên kết các bot AI của bạn để hiển thị trạng thái thời gian thực, kích hoạt nhắn tin Agent-to-Agent (A2A), phát đến nhiều Entity và điều phối quy trình làm việc đa tác nhân — tất cả được quản lý từ ứng dụng Android hoặc cổng web."',
  '"faq_q_openclaw": "OpenClaw là gì?"',
  '"faq_a_openclaw": "OpenClaw là nền tảng phát triển bot đằng sau E-Claw. Các nhà phát triển bot xây dựng và lưu trữ bot của họ trên OpenClaw (được cung cấp bởi Zeabur), sau đó giao tiếp với thiết bị E-Claw qua webhook push và exec+curl."',
  '"faq_q_free": "E-Claw có miễn phí không?"',
  '"faq_a_free": "Có! E-Claw cung cấp gói miễn phí với các bot dùng chung (tối đa 15 tin nhắn/ngày cho mỗi bot miễn phí). Bot của riêng bạn (tự lưu trữ) không có giới hạn tin nhắn và luôn miễn phí."',
  '"faq_section_setup": "Cài đặt & Liên kết"',
  '"faq_q_bind": "Làm thế nào để liên kết bot với thiết bị của tôi?"',
  '"faq_a_bind": "Vào Dashboard (trong ứng dụng hoặc cổng web), chọn một khe Entity và nhấp 「Tạo mã」. Sao chép lệnh liên kết và dán vào bot bạn muốn liên kết. Bot sẽ tự động xác nhận liên kết."',
  '"faq_q_slots": "Tôi có thể liên kết bao nhiêu bot?"',
  '"faq_a_slots": "Mỗi thiết bị hỗ trợ tối đa 8 khe Entity (0–7). Mỗi khe có thể được liên kết với một bot khác nhau một cách độc lập với trạng thái, bộ nhớ và lịch sử trò chuyện riêng."',
  '"faq_q_web_vs_app": "Tôi có cần ứng dụng Android không, hay có thể chỉ dùng cổng web?"',
  '"faq_a_web_vs_app": "Cả hai hoạt động độc lập. Ứng dụng Android cung cấp trải nghiệm hình nền động. Cổng web cho phép bạn quản lý Entity, trò chuyện, tải lên tệp và cấu hình nhiệm vụ — tất cả từ trình duyệt của bạn. Bạn có thể dùng một hoặc cả hai."',
  '"faq_section_features": "Tính năng"',
  '"faq_q_broadcast": "Broadcast là gì?"',
  '"faq_a_broadcast": "Broadcast cho phép bạn gửi một tin nhắn duy nhất đến tất cả các Entity đã liên kết cùng lúc. Rất phù hợp cho các thông báo hoặc cập nhật mà mọi bot cần nhận. Bạn có thể theo dõi Entity nào đã nhận được broadcast trong báo cáo giao hàng."',
  '"faq_q_speakto": "Speak-to là gì?"',
  '"faq_a_speakto": "Speak-to là chế độ trò chuyện trực tiếp nơi bạn gửi tin nhắn đến một Entity cụ thể và nhận phản hồi. Giống như trò chuyện một-một với bot của bạn, với cuộc trò chuyện được lưu trong lịch sử trò chuyện."',
  '"faq_q_mission": "Mission Control là gì?"',
  '"faq_a_mission": "Mission Control là hệ thống quản lý nhiệm vụ tích hợp sẵn. Bạn có thể tạo nhiệm vụ (TODO/Mission/Done), giao cho Entity, quản lý ghi chú, cấu hình kỹ năng và quy tắc, và định nghĩa nhân cách của bot (「soul」). Bot được thông báo khi nhiệm vụ của chúng thay đổi."',
  '"faq_section_dev": "Phát triển Bot"',
  '"faq_q_create_bot": "Làm thế nào để tạo bot của riêng tôi?"',
  '"faq_a_create_bot": "Bot được xây dựng trên nền tảng OpenClaw (được lưu trữ trên Zeabur). Xem Hướng dẫn người dùng để biết hướng dẫn, tài liệu API và tài liệu kỹ năng MCP để bắt đầu."',
  '"faq_q_telegram": "Tôi có thể dùng bot của mình trên Telegram không?"',
  '"faq_a_telegram": "Có! Bot OpenClaw hỗ trợ nhiều kênh. Bạn có thể thêm bộ điều hợp kênh Telegram vào bot của mình. Xem trang So sánh kênh để biết sự khác biệt giữa E-Claw và Telegram."',
  '"faq_cta_text": "Vẫn còn câu hỏi? Xem Hướng dẫn người dùng để biết tài liệu chi tiết."',
  '"cmp_title": "E-Claw vs Telegram - So sánh kênh"',
  '"cmp_eclaw_name": "E-Claw"',
  '"cmp_telegram_name": "Telegram"',
  '"cmp_subtitle": "E-Claw mang đến trải nghiệm cộng tác AI Agent đầy đủ — giao tiếp A2A, hiển thị trực tiếp, phát push, nhiệm vụ và nhiều hơn nữa. Telegram chỉ có trò chuyện."',
  '"cmp_eclaw_tagline": "Kênh hình nền động Native"',
  '"cmp_telegram_tagline": "Kênh nhắn tin dựa trên trò chuyện"',
  '"cmp_cat_setup": "CÀI ĐẶT"',
  '"cmp_eclaw_setup_title": "Ứng dụng Android hoặc Cổng Web"',
  '"cmp_eclaw_setup_desc": "Dùng ứng dụng Android hoặc cổng web — mỗi cái hoạt động độc lập. Đăng ký, tạo mã liên kết, dán vào bot."',
  '"cmp_tg_setup_title": "Tìm Bot trên Telegram"',
  '"cmp_tg_setup_desc": "Mở Telegram, tìm bot, nhấn /start — sẵn sàng trò chuyện ngay."',
  '"cmp_cat_interaction": "TƯƠNG TÁC"',
  '"cmp_eclaw_interact_title": "Push + Speak-to + Broadcast"',
  '"cmp_eclaw_interact_desc": "Bot push cập nhật trạng thái lên hình nền. Speak-to để trò chuyện trực tiếp. Broadcast để tiếp cận tất cả Entity."',
  '"cmp_tg_interact_title": "Trò chuyện tiêu chuẩn"',
  '"cmp_tg_interact_desc": "Gửi tin nhắn, nhận phản hồi. Trải nghiệm chatbot cổ điển với văn bản, hình ảnh và nút inline."',
  '"cmp_cat_wallpaper": "HÌNH NỀN ĐỘNG"',
  '"cmp_eclaw_wp_title": "Tích hợp đầy đủ"',
  '"cmp_eclaw_wp_desc": "Bot điều khiển trạng thái hình nền (tâm trạng, tin nhắn, hoạt ảnh). Màn hình chính của bạn trở nên sống động."',
  '"cmp_tg_wp_title": "Không có điều khiển hình nền"',
  '"cmp_tg_wp_desc": "Bot Telegram không thể cập nhật hình nền động trên điện thoại của bạn. Chỉ có trải nghiệm trò chuyện."',
  '"cmp_tag_native": "Hỗ trợ Native"',
  '"cmp_tag_unavailable": "Không có"',
  '"cmp_cat_push": "THÔNG BÁO PUSH"',
  '"cmp_eclaw_push_title": "Push chủ động"',
  '"cmp_eclaw_push_desc": "Bot push cập nhật tự động qua API. Hình nền thay đổi theo thời gian thực mà không cần thao tác của người dùng."',
  '"cmp_tag_realtime": "Thời gian thực"',
  '"cmp_tg_push_title": "Thông báo tin nhắn"',
  '"cmp_tg_push_desc": "Thông báo Telegram tiêu chuẩn khi bot gửi tin nhắn. Người dùng cần mở ứng dụng để đọc."',
  '"cmp_tag_passive": "Thụ động"',
  '"cmp_cat_entity": "ĐA ENTITY"',
  '"cmp_eclaw_entity_title": "Tối đa 8 Entity"',
  '"cmp_eclaw_entity_desc": "Liên kết các bot khác nhau với các khe Entity khác nhau (0-7). Mỗi khe có trạng thái và bộ nhớ độc lập."',
  '"cmp_tag_multi": "Đa Entity"',
  '"cmp_tg_entity_title": "1 Bot = 1 Trò chuyện"',
  '"cmp_tg_entity_desc": "Mỗi bot Telegram là một cuộc trò chuyện riêng biệt. Không có hệ thống khe Entity, nhưng bạn có thể thêm nhiều bot."',
  '"cmp_tag_manual": "Thủ công"',
  '"cmp_cat_memory": "BỘ NHỚ & NGỮ CẢNH"',
  '"cmp_eclaw_mem_title": "Bộ nhớ phía máy chủ"',
  '"cmp_eclaw_mem_desc": "Lịch sử trò chuyện được lưu trữ trên máy chủ E-Claw. Bộ nhớ chia sẻ hoặc riêng tư tùy theo gói (miễn phí/cá nhân)."',
  '"cmp_tg_mem_title": "Bộ nhớ do bot quản lý"',
  '"cmp_tg_mem_desc": "Bộ nhớ phụ thuộc vào cài đặt bot. Có thể dùng bộ nhớ tích hợp của OpenClaw hoặc lưu trữ ngoài."',
  '"cmp_cat_format": "ĐỊNH DẠNG TIN NHẮN"',
  '"cmp_eclaw_fmt_title": "Văn bản + Trường trạng thái"',
  '"cmp_eclaw_fmt_desc": "Tin nhắn bao gồm văn bản, tâm trạng, trạng thái hoạt ảnh. JSON có cấu trúc qua API để điều khiển hình nền."',
  '"cmp_tg_fmt_title": "Đa phương tiện phong phú"',
  '"cmp_tg_fmt_desc": "Văn bản, ảnh, video, tệp, nhãn dán, bàn phím inline, vị trí và các tính năng Telegram khác."',
  '"cmp_cat_platform": "NỀN TẢNG"',
  '"cmp_eclaw_plat_title": "Android + Cổng Web"',
  '"cmp_eclaw_plat_desc": "Hình nền động trên Android. Cổng web (hoạt động trên iPhone cũng!) cho trò chuyện, mission control, tệp — tất cả tính năng trừ hình nền."',
  '"cmp_tg_plat_title": "Tất cả nền tảng"',
  '"cmp_tg_plat_desc": "Telegram có trên iOS, Android, máy tính để bàn và web. Trò chuyện từ bất cứ đâu."',
  '"cmp_cat_cost": "CHI PHÍ"',
  '"cmp_eclaw_cost_title": "Miễn phí + Tùy chọn trả phí"',
  '"cmp_eclaw_cost_desc": "Bot miễn phí (dùng chung, 15 tin nhắn/ngày). Bot cá nhân NT$288/tháng (riêng tư, không giới hạn). Tự lưu trữ: miễn phí."',
  '"cmp_tg_cost_title": "Bot API miễn phí"',
  '"cmp_tg_cost_desc": "Telegram Bot API miễn phí. Bạn trả cho lưu trữ và sử dụng LLM API. Kiểm soát hoàn toàn chi phí."',
  '"cmp_cat_dev": "PHÁT TRIỂN BOT"',
  '"cmp_eclaw_dev_title": "OpenClaw + Webhook"',
  '"cmp_eclaw_dev_desc": "Xây dựng trên nền tảng OpenClaw (Zeabur). Dùng chế độ push exec+curl. Có tài liệu MCP skills."',
  '"cmp_tg_dev_title": "OpenClaw + Bộ điều hợp Telegram"',
  '"cmp_tg_dev_desc": "Xây dựng trên OpenClaw, thêm bộ điều hợp kênh Telegram. Dùng Telegram Bot API để định tuyến tin nhắn."',
  '"cmp_cat_mission": "MISSION CONTROL"',
  '"cmp_eclaw_mission_title": "Trung tâm nhiệm vụ tích hợp"',
  '"cmp_eclaw_mission_desc": "Bảng nhiệm vụ tích hợp (TODO/Mission/Done), ghi chú, kỹ năng, quy tắc và hệ thống soul/nhân cách. Giao nhiệm vụ cho Entity, thông báo push khi có thay đổi, cộng tác kiểm soát phiên bản."',
  '"cmp_tg_mission_title": "Không có hệ thống nhiệm vụ tích hợp"',
  '"cmp_tg_mission_desc": "Telegram không có quản lý nhiệm vụ native. Cần bot bên thứ ba hoặc công cụ ngoài (Trello, Notion) để theo dõi dự án. Không có phân công theo Entity."',
  '"cmp_cat_attachments": "TỆP ĐÍNH KÈM TRONG CHAT"',
  '"cmp_eclaw_attach_title": "Ảnh, Giọng nói & Tệp + Trình quản lý tệp"',
  '"cmp_eclaw_attach_desc": "Tải ảnh lên (Flickr cloud), ghi âm tin nhắn thoại, gửi tệp (tối đa 100 MB). Trang Trình quản lý tệp chuyên dụng với lọc theo Entity/loại, đính kèm broadcast và theo dõi giao hàng."',
  '"cmp_tg_attach_title": "Đa phương tiện phong phú trong chat"',
  '"cmp_tg_attach_desc": "Ảnh, video, tệp, nhãn dán, tin nhắn giọng nói và video — tất cả trong chat. Tệp lưu trên máy chủ Telegram. Không có trình quản lý tệp riêng hoặc lọc theo cấp Entity."',
  '"cmp_tag_builtin": "Tích hợp sẵn"',
  '"cmp_tag_organized": "Có tổ chức"',
  '"cmp_tag_chat_only": "Chỉ chat"',
  '"cmp_eclaw_best_for": "E-Claw phù hợp nhất cho..."',
  '"cmp_eclaw_best_1": "Hình nền động trên Android + Cổng web cho iPhone"',
  '"cmp_eclaw_best_2": "Cập nhật push chủ động thời gian thực"',
  '"cmp_eclaw_best_3": "Quản lý đa Entity (tối đa 8 bot)"',
  '"cmp_eclaw_best_4": "Mission Control với phân công nhiệm vụ & hệ thống soul"',
  '"cmp_eclaw_best_5": "Trình quản lý tệp với lọc theo cấp Entity"',
  '"cmp_tg_best_for": "Telegram phù hợp nhất cho..."',
  '"cmp_tg_best_1": "Chỉ cần trò chuyện cơ bản, không cần gì khác"',
  '"cmp_tg_best_2": "Đa phương tiện phong phú (ảnh, nhãn dán, tệp)"',
  '"cmp_tg_best_3": "Giao diện chat quen thuộc, không cần ứng dụng mới"',
  '"cmp_tg_best_4": "Bot API miễn phí với toàn quyền kiểm soát của nhà phát triển"',
  '"cmp_cta_text": "E-Claw mang đến trải nghiệm cộng tác AI Agent hoàn chỉnh nhất. Tại sao chỉ bằng lòng với trò chuyện?"',
  '"cmp_cta_eclaw": "Bắt đầu với E-Claw"',
  '"cmp_cta_telegram": "Tìm hiểu về Bot Telegram"',
  '"rn_1100_1": "Trang so sánh kênh — So sánh tính năng E-Claw vs Telegram cạnh nhau"',
  '"rn_1100_2": "Thông báo bảo trì thanh toán cho các tính năng TapPay trên Cổng Web"',
  '"rn_1100_3": "Hàng so sánh Mission Control & Tệp đính kèm trong chat"',
  '"rn_1100_4": "Đã sửa số Entity tối đa thành 8 khe, cải thiện mô tả cài đặt"',
  '"rn_190_1": "Hỗ trợ đa ngôn ngữ — 8 ngôn ngữ cho Cổng Web và Android (EN, 繁中, 简中, 日本語, 한국어, ไทย, Tiếng Việt, Indonesia)"',
  '"rn_180_1": "Lịch sử thực thi lịch trình và chú thích chat"',
  '"rn_180_2": "Thông báo toast khi lưu nhiệm vụ"',
  '"rn_180_3": "Cải tiến giao diện Mission Control"',
  '"rn_170_1": "Tải nhiều tệp trong chat (tối đa 100 MB mỗi tệp)"',
  '"rn_170_2": "Thay biểu tượng ảnh trong chat bằng nút + cho đa đính kèm"',
  '"rn_170_3": "Trang Trình quản lý tệp với lọc theo Entity/loại và theo dõi giao hàng"',
  '"rn_160_1": "Giới hạn Entity trên mỗi thiết bị (miễn phí: 4, premium: 8)"',
  '"rn_160_2": "Thẻ lịch trình và trang quản lý lịch trình"',
  '"rn_160_3": "Cải tạo giao diện tối toàn màn hình cho Chat trên Android"',
  '"rn_160_4": "Tính nhất quán vị trí điều hướng dưới cùng và khoảng cách mép"',
  '"ai_chat_title": "E-Claw AI"',
  '"ai_chat_placeholder": "Đặt câu hỏi..."',
  '"ai_chat_welcome": "Xin chào! Tôi là E-Claw AI. Hỏi tôi bất cứ điều gì về nền tảng."',
  '"ai_chat_error": "Xin lỗi, đã xảy ra sự cố. Vui lòng thử lại."',
  '"ai_chat_rate_limited": "Đã đạt giới hạn tin nhắn. Vui lòng thử lại sau."',
  '"ai_chat_uploading": "Đang tải ảnh lên..."',
  '"ai_chat_analyzing": "AI đang phân tích..."',
  '"ai_chat_thinking": "Vẫn đang xử lý..."',
  '"ai_chat_still_working": "Đang mất một lúc, vẫn đang làm việc..."',
  '"ai_progress_step": "Bước"',
  '"ai_progress_read": "Đang đọc tệp"',
  '"ai_progress_grep": "Đang tìm kiếm mã"',
  '"ai_progress_glob": "Đang tìm tệp"',
  '"ai_progress_bash": "Đang chạy phân tích"',
  '"ai_progress_edit": "Đang chỉnh sửa tệp"',
  '"ai_progress_write": "Đang ghi tệp"',
  '"ai_progress_thinking": "Đang phân tích"',
  '"ai_progress_processing": "Đang xử lý kết quả"',
  '"chat_attach_photo": "Ảnh"',
  '"chat_attach_video": "Video"',
  '"chat_attach_file": "Tệp"',
  '"chat_file_too_large": "Tệp quá lớn (tối đa 100MB)"',
  '"chat_uploading": "Đang tải lên..."',
  '"chat_upload_error": "Lỗi"',
  '"chat_upload_failed": "Tải lên thất bại"',
  '"chat_wait_upload": "Vui lòng chờ tải lên hoàn tất"',
  '"feedback_ask_ai": "🤖 Hỏi AI"',
  '"feedback_ask_ai_title": "Cần trợ giúp nhanh? Hỏi AI"',
  '"feedback_ask_ai_desc": "Nhận câu trả lời ngay trước khi gửi phản hồi"',
];

// ============================================================
// ID translations (160 keys)
// ============================================================
const id = [
  '"faq_section_general": "Umum"',
  '"faq_q_what_is": "Apa itu E-Claw?"',
  '"faq_a_what_is": "E-Claw adalah platform kolaborasi AI Agent dan komunikasi A2A untuk Android. Hubungkan bot AI Anda untuk memvisualisasikan status real-time, mengaktifkan pesan Agent-to-Agent (A2A), menyiarkan ke beberapa Entity, dan mengatur alur kerja multi-agen — semuanya dikelola dari aplikasi Android atau portal web."',
  '"faq_q_openclaw": "Apa itu OpenClaw?"',
  '"faq_a_openclaw": "OpenClaw adalah platform pengembangan bot di balik E-Claw. Pengembang bot membangun dan meng-host bot mereka di OpenClaw (didukung oleh Zeabur), yang kemudian berkomunikasi dengan perangkat E-Claw melalui webhook push dan exec+curl."',
  '"faq_q_free": "Apakah E-Claw gratis?"',
  '"faq_a_free": "Ya! E-Claw menawarkan paket gratis dengan bot bersama (hingga 15 pesan/hari per bot gratis). Bot Anda sendiri (self-hosted) tidak memiliki batas pesan dan selalu gratis."',
  '"faq_section_setup": "Pengaturan & Pengikatan"',
  '"faq_q_bind": "Bagaimana cara menghubungkan bot ke perangkat saya?"',
  '"faq_a_bind": "Buka Dashboard (di aplikasi atau portal web), pilih slot Entity, dan klik 「Buat Kode」. Salin perintah pengikatan dan tempel ke bot yang ingin Anda hubungkan. Bot akan mengonfirmasi pengikatan secara otomatis."',
  '"faq_q_slots": "Berapa banyak bot yang dapat saya hubungkan?"',
  '"faq_a_slots": "Setiap perangkat mendukung hingga 8 slot Entity (0–7). Setiap slot dapat diikat ke bot yang berbeda secara independen dengan status, memori, dan riwayat obrolan masing-masing."',
  '"faq_q_web_vs_app": "Apakah saya perlu aplikasi Android, atau bisa menggunakan portal web saja?"',
  '"faq_a_web_vs_app": "Keduanya bekerja secara independen. Aplikasi Android memberikan pengalaman wallpaper langsung. Portal web memungkinkan Anda mengelola Entity, mengobrol, mengunggah file, dan mengonfigurasi misi — semuanya dari browser. Anda bisa menggunakan salah satu atau keduanya."',
  '"faq_section_features": "Fitur"',
  '"faq_q_broadcast": "Apa itu Broadcast?"',
  '"faq_a_broadcast": "Broadcast memungkinkan Anda mengirim satu pesan ke semua Entity yang terhubung sekaligus. Sangat cocok untuk pengumuman atau pembaruan yang harus didengar setiap bot. Anda dapat melacak Entity mana yang menerima siaran dalam laporan pengiriman."',
  '"faq_q_speakto": "Apa itu Speak-to?"',
  '"faq_a_speakto": "Speak-to adalah mode percakapan langsung di mana Anda mengirim pesan ke Entity tertentu dan mendapatkan balasan. Seperti obrolan satu-satu dengan bot Anda, dengan percakapan tersimpan dalam riwayat obrolan."',
  '"faq_q_mission": "Apa itu Mission Control?"',
  '"faq_a_mission": "Mission Control adalah sistem manajemen tugas bawaan. Anda dapat membuat tugas (TODO/Mission/Done), menugaskannya ke Entity, mengelola catatan, mengonfigurasi keterampilan dan aturan, serta mendefinisikan kepribadian bot Anda (「soul」). Bot mendapat notifikasi ketika tugas mereka berubah."',
  '"faq_section_dev": "Pengembangan Bot"',
  '"faq_q_create_bot": "Bagaimana cara membuat bot saya sendiri?"',
  '"faq_a_create_bot": "Bot dibangun di platform OpenClaw (di-host di Zeabur). Lihat Panduan Pengguna untuk tutorial, dokumentasi API, dan dokumentasi keterampilan MCP untuk memulai."',
  '"faq_q_telegram": "Bisakah saya menggunakan bot saya di Telegram juga?"',
  '"faq_a_telegram": "Ya! Bot OpenClaw mendukung beberapa saluran. Anda dapat menambahkan adaptor saluran Telegram ke bot Anda. Lihat halaman Perbandingan Saluran untuk perbedaan antara E-Claw dan Telegram."',
  '"faq_cta_text": "Masih ada pertanyaan? Lihat Panduan Pengguna untuk dokumentasi lengkap."',
  '"cmp_title": "E-Claw vs Telegram - Perbandingan Saluran"',
  '"cmp_eclaw_name": "E-Claw"',
  '"cmp_telegram_name": "Telegram"',
  '"cmp_subtitle": "E-Claw menawarkan pengalaman kolaborasi AI Agent yang lengkap — komunikasi A2A, visualisasi langsung, siaran push, tugas, dan lainnya. Telegram hanya memiliki obrolan."',
  '"cmp_eclaw_tagline": "Saluran wallpaper langsung Native"',
  '"cmp_telegram_tagline": "Saluran pesan berbasis obrolan"',
  '"cmp_cat_setup": "PENGATURAN"',
  '"cmp_eclaw_setup_title": "Aplikasi Android atau Portal Web"',
  '"cmp_eclaw_setup_desc": "Gunakan aplikasi Android atau portal web — masing-masing bekerja secara independen. Daftar, buat kode pengikatan, tempel ke bot."',
  '"cmp_tg_setup_title": "Cari Bot di Telegram"',
  '"cmp_tg_setup_desc": "Buka Telegram, cari bot, tekan /start — siap mengobrol segera."',
  '"cmp_cat_interaction": "INTERAKSI"',
  '"cmp_eclaw_interact_title": "Push + Speak-to + Broadcast"',
  '"cmp_eclaw_interact_desc": "Bot men-push pembaruan status ke wallpaper. Speak-to untuk percakapan langsung. Broadcast untuk menjangkau semua Entity."',
  '"cmp_tg_interact_title": "Obrolan Standar"',
  '"cmp_tg_interact_desc": "Kirim pesan, terima balasan. Pengalaman chatbot klasik dengan teks, gambar, dan tombol inline."',
  '"cmp_cat_wallpaper": "WALLPAPER LANGSUNG"',
  '"cmp_eclaw_wp_title": "Integrasi Penuh"',
  '"cmp_eclaw_wp_desc": "Bot mengontrol status wallpaper (suasana hati, pesan, animasi). Layar beranda Anda menjadi hidup."',
  '"cmp_tg_wp_title": "Tidak Ada Kontrol Wallpaper"',
  '"cmp_tg_wp_desc": "Bot Telegram tidak dapat memperbarui wallpaper langsung di ponsel Anda. Hanya pengalaman obrolan."',
  '"cmp_tag_native": "Dukungan Native"',
  '"cmp_tag_unavailable": "Tidak Tersedia"',
  '"cmp_cat_push": "NOTIFIKASI PUSH"',
  '"cmp_eclaw_push_title": "Push Proaktif"',
  '"cmp_eclaw_push_desc": "Bot men-push pembaruan secara otomatis melalui API. Wallpaper berubah secara real-time tanpa tindakan pengguna."',
  '"cmp_tag_realtime": "Real-time"',
  '"cmp_tg_push_title": "Notifikasi Pesan"',
  '"cmp_tg_push_desc": "Notifikasi Telegram standar saat bot mengirim pesan. Pengguna perlu membuka aplikasi untuk membaca."',
  '"cmp_tag_passive": "Pasif"',
  '"cmp_cat_entity": "MULTI-ENTITY"',
  '"cmp_eclaw_entity_title": "Hingga 8 Entity"',
  '"cmp_eclaw_entity_desc": "Hubungkan bot yang berbeda ke slot Entity yang berbeda (0-7). Masing-masing memiliki status dan memori independen."',
  '"cmp_tag_multi": "Multi-Entity"',
  '"cmp_tg_entity_title": "1 Bot = 1 Obrolan"',
  '"cmp_tg_entity_desc": "Setiap bot Telegram adalah obrolan terpisah. Tidak ada sistem slot Entity, tetapi Anda bisa menambahkan beberapa bot."',
  '"cmp_tag_manual": "Manual"',
  '"cmp_cat_memory": "MEMORI & KONTEKS"',
  '"cmp_eclaw_mem_title": "Memori Sisi Server"',
  '"cmp_eclaw_mem_desc": "Riwayat obrolan disimpan di server E-Claw. Memori bersama atau pribadi tergantung paket (gratis/personal)."',
  '"cmp_tg_mem_title": "Memori yang Dikelola Bot"',
  '"cmp_tg_mem_desc": "Memori bergantung pada implementasi bot. Bisa menggunakan memori bawaan OpenClaw atau penyimpanan eksternal."',
  '"cmp_cat_format": "FORMAT PESAN"',
  '"cmp_eclaw_fmt_title": "Teks + Bidang Status"',
  '"cmp_eclaw_fmt_desc": "Pesan mencakup teks, suasana hati, status animasi. JSON terstruktur melalui API untuk kontrol wallpaper."',
  '"cmp_tg_fmt_title": "Media Kaya"',
  '"cmp_tg_fmt_desc": "Teks, foto, video, file, stiker, keyboard inline, lokasi, dan lebih banyak fitur Telegram."',
  '"cmp_cat_platform": "PLATFORM"',
  '"cmp_eclaw_plat_title": "Android + Portal Web"',
  '"cmp_eclaw_plat_desc": "Wallpaper langsung di Android. Portal web (bekerja di iPhone juga!) untuk obrolan, mission control, file — semua fitur kecuali wallpaper."',
  '"cmp_tg_plat_title": "Semua Platform"',
  '"cmp_tg_plat_desc": "Telegram tersedia di iOS, Android, desktop, dan web. Mengobrol dari mana saja."',
  '"cmp_cat_cost": "BIAYA"',
  '"cmp_eclaw_cost_title": "Gratis + Opsi Berbayar"',
  '"cmp_eclaw_cost_desc": "Bot gratis (bersama, 15 pesan/hari). Bot personal NT$288/bulan (dedicated, tak terbatas). Self-host: gratis."',
  '"cmp_tg_cost_title": "Bot API Gratis"',
  '"cmp_tg_cost_desc": "Telegram Bot API gratis. Anda membayar untuk hosting dan penggunaan LLM API. Kontrol penuh atas biaya."',
  '"cmp_cat_dev": "PENGEMBANGAN BOT"',
  '"cmp_eclaw_dev_title": "OpenClaw + Webhook"',
  '"cmp_eclaw_dev_desc": "Bangun di platform OpenClaw (Zeabur). Gunakan mode push exec+curl. Dokumentasi keterampilan MCP disediakan."',
  '"cmp_tg_dev_title": "OpenClaw + Adaptor Telegram"',
  '"cmp_tg_dev_desc": "Bangun di OpenClaw, tambahkan adaptor saluran Telegram. Menggunakan Telegram Bot API untuk perutean pesan."',
  '"cmp_cat_mission": "MISSION CONTROL"',
  '"cmp_eclaw_mission_title": "Pusat Tugas Terintegrasi"',
  '"cmp_eclaw_mission_desc": "Papan tugas bawaan (TODO/Mission/Done), catatan, keterampilan, aturan, dan sistem soul/kepribadian. Tugaskan tugas ke Entity, notifikasi push saat ada perubahan, kolaborasi berbasis kontrol versi."',
  '"cmp_tg_mission_title": "Tidak Ada Sistem Tugas Bawaan"',
  '"cmp_tg_mission_desc": "Telegram tidak memiliki manajemen tugas native. Perlu bot pihak ketiga atau alat eksternal (Trello, Notion) untuk pelacakan proyek. Tidak ada penugasan berbasis Entity."',
  '"cmp_cat_attachments": "LAMPIRAN OBROLAN"',
  '"cmp_eclaw_attach_title": "Foto, Suara & File + Manajer File"',
  '"cmp_eclaw_attach_desc": "Unggah foto (Flickr cloud), rekam pesan suara, kirim file (hingga 100 MB). Halaman Manajer File khusus dengan filter Entity/jenis, lampiran broadcast, dan pelacakan pengiriman."',
  '"cmp_tg_attach_title": "Media Kaya dalam Obrolan"',
  '"cmp_tg_attach_desc": "Foto, video, file, stiker, pesan suara dan video — semuanya dalam obrolan. File tersimpan di server Telegram. Tidak ada manajer file terpisah atau filter tingkat Entity."',
  '"cmp_tag_builtin": "Bawaan"',
  '"cmp_tag_organized": "Terorganisir"',
  '"cmp_tag_chat_only": "Hanya Obrolan"',
  '"cmp_eclaw_best_for": "E-Claw paling cocok untuk..."',
  '"cmp_eclaw_best_1": "Wallpaper langsung di Android + Portal web untuk iPhone"',
  '"cmp_eclaw_best_2": "Pembaruan push proaktif secara real-time"',
  '"cmp_eclaw_best_3": "Manajemen multi-Entity (hingga 8 bot)"',
  '"cmp_eclaw_best_4": "Mission Control dengan penugasan tugas & sistem soul"',
  '"cmp_eclaw_best_5": "Manajer File dengan filter tingkat Entity"',
  '"cmp_tg_best_for": "Telegram paling cocok untuk..."',
  '"cmp_tg_best_1": "Hanya butuh obrolan dasar, tidak lebih"',
  '"cmp_tg_best_2": "Media kaya (foto, stiker, file)"',
  '"cmp_tg_best_3": "UI obrolan yang familiar, tidak perlu aplikasi baru"',
  '"cmp_tg_best_4": "Bot API gratis dengan kontrol penuh pengembang"',
  '"cmp_cta_text": "E-Claw menghadirkan pengalaman kolaborasi AI Agent paling lengkap. Mengapa puas hanya dengan obrolan?"',
  '"cmp_cta_eclaw": "Mulai dengan E-Claw"',
  '"cmp_cta_telegram": "Pelajari tentang Bot Telegram"',
  '"rn_1100_1": "Halaman perbandingan saluran — Perbandingan fitur E-Claw vs Telegram berdampingan"',
  '"rn_1100_2": "Pemberitahuan pemeliharaan pembayaran untuk fitur TapPay di Portal Web"',
  '"rn_1100_3": "Baris perbandingan Mission Control & Lampiran Obrolan"',
  '"rn_1100_4": "Jumlah Entity maksimum dikoreksi menjadi 8 slot, deskripsi pengaturan diperbaiki"',
  '"rn_190_1": "Dukungan multi-bahasa — 8 bahasa untuk Portal Web dan Android (EN, 繁中, 简中, 日本語, 한국어, ไทย, Tiếng Việt, Indonesia)"',
  '"rn_180_1": "Riwayat eksekusi jadwal dan anotasi obrolan"',
  '"rn_180_2": "Notifikasi toast saat tugas disimpan"',
  '"rn_180_3": "Peningkatan UI Mission Control"',
  '"rn_170_1": "Unggah banyak file dalam obrolan (hingga 100 MB per file)"',
  '"rn_170_2": "Mengganti ikon foto obrolan dengan tombol + untuk lampiran ganda"',
  '"rn_170_3": "Halaman Manajer File dengan filter Entity/jenis dan pelacakan pengiriman"',
  '"rn_160_1": "Batas Entity per perangkat (gratis: 4, premium: 8)"',
  '"rn_160_2": "Kartu jadwal dan halaman manajemen jadwal"',
  '"rn_160_3": "Perombakan gaya gelap layar penuh untuk Chat di Android"',
  '"rn_160_4": "Konsistensi posisi navigasi bawah dan jarak tepi"',
  '"ai_chat_title": "E-Claw AI"',
  '"ai_chat_placeholder": "Ajukan pertanyaan..."',
  '"ai_chat_welcome": "Halo! Saya E-Claw AI. Tanyakan apa saja tentang platform ini."',
  '"ai_chat_error": "Maaf, terjadi kesalahan. Silakan coba lagi."',
  '"ai_chat_rate_limited": "Batas pesan tercapai. Coba lagi nanti."',
  '"ai_chat_uploading": "Mengunggah gambar..."',
  '"ai_chat_analyzing": "AI sedang menganalisis..."',
  '"ai_chat_thinking": "Masih memproses..."',
  '"ai_chat_still_working": "Ini membutuhkan waktu, masih bekerja..."',
  '"ai_progress_step": "Langkah"',
  '"ai_progress_read": "Membaca file"',
  '"ai_progress_grep": "Mencari kode"',
  '"ai_progress_glob": "Menemukan file"',
  '"ai_progress_bash": "Menjalankan analisis"',
  '"ai_progress_edit": "Mengedit file"',
  '"ai_progress_write": "Menulis file"',
  '"ai_progress_thinking": "Menganalisis"',
  '"ai_progress_processing": "Memproses hasil"',
  '"chat_attach_photo": "Foto"',
  '"chat_attach_video": "Video"',
  '"chat_attach_file": "File"',
  '"chat_file_too_large": "File terlalu besar (maks 100MB)"',
  '"chat_uploading": "Mengunggah..."',
  '"chat_upload_error": "Kesalahan"',
  '"chat_upload_failed": "Unggahan gagal"',
  '"chat_wait_upload": "Harap tunggu unggahan selesai"',
  '"feedback_ask_ai": "🤖 Tanya AI"',
  '"feedback_ask_ai_title": "Butuh bantuan cepat? Tanya AI"',
  '"feedback_ask_ai_desc": "Dapatkan jawaban instan sebelum mengirim masukan"',
];

// ============================================================
// Correct insertion points (line number of env_placeholder_value)
// Process in REVERSE order to preserve earlier line numbers
// ============================================================
const insertPoints = [
  { lang: 'id',    lineNo: 10616, trans: id },
  { lang: 'vi',    lineNo: 9336,  trans: vi },
  { lang: 'th',    lineNo: 8056,  trans: th },
  { lang: 'ko',    lineNo: 6776,  trans: ko },
  { lang: 'ja',    lineNo: 5502,  trans: ja },
  { lang: 'zh-CN', lineNo: 4227,  trans: zhCN },
];

for (const { lang, lineNo, trans } of insertPoints) {
  const idx = lineNo - 1; // 0-indexed
  // Verify the line contains env_placeholder_value
  if (!lines[idx].includes('env_placeholder_value')) {
    throw new Error('Line ' + lineNo + ' does not contain env_placeholder_value for ' + lang + ': ' + lines[idx]);
  }
  // Add comma to the current last-key line
  lines[idx] = lines[idx] + ',';
  // Build new translation lines (comma after each except the last)
  const newLines = trans.map((t, i) => {
    const comma = i < trans.length - 1 ? ',' : '';
    return '        ' + t + comma;
  });
  lines.splice(idx + 1, 0, ...newLines);
  console.log(lang + ': inserted ' + trans.length + ' keys after line ' + lineNo);
}

fs.writeFileSync(filePath, lines.join(lineEnding), 'utf8');
console.log('Done! Total lines: ' + lines.length);
