Refactor BottomNav to use localized labels for navigation items; added support for dynamic language selection based on device state. Updated locale files for English, Traditional Chinese, and Simplified Chinese to include bottom navigation labels.

This commit is contained in:
yangy
2026-05-11 17:42:18 +08:00
parent 68f06344dc
commit ae4ce8bb07
7 changed files with 552 additions and 192 deletions
+63 -2
View File
@@ -1,6 +1,7 @@
{
"home": {
"audioSet": "Audio setting",
"systemSet": "System",
"power": "Power",
"input": "Input",
"output": "Output",
@@ -12,6 +13,16 @@
"powerOffToastDemo": "Demo mode: disconnected from the device.",
"powerOffToastSent": "Shutdown command sent."
},
"vuPage": {
"title": "VU meter gallery"
},
"bottomNav": {
"community": "Community",
"hpEq": "HP-EQ",
"home": "Home",
"effects": "Effects",
"myAi": "My AI"
},
"source": {
"label": "Input/Output",
"input": {
@@ -134,7 +145,7 @@
"Standard": "Standard equalizer preset",
"edit": "Batch Edit",
"headset": "Add HeadSet",
"preamp": "Preamp",
"preamp": "Total gain",
"filters": {
"label": "Filters",
"options": [
@@ -203,7 +214,57 @@
"gain": "GAIN",
"q": "Q value",
"loadDeviceBtn": "confirm",
"peqNoneItem": "Unconfigured"
"peqNoneItem": "Unconfigured",
"eqUi": {
"batchEditTitle": "Batch edit",
"batchEditHint": "11 lines total: line 1 is Preamp, lines 211 are Filter 110. Saving overwrites the current headphone preset.",
"cancel": "Cancel",
"save": "Save",
"tabBrands": "Brands",
"tabModels": "Models",
"tabTarget": "Target",
"searchPlaceholder": "Search brand or model",
"searching": "Searching…",
"noSearchResults": "No matching brand or model",
"loading": "Loading…",
"noBrandMatch": "No matching brands",
"selectBrandFirst": "Choose a brand on the Brands tab first",
"brandLabel": "Brand:",
"modelFromSearchLabel": "Model from search:",
"noModelsForBrand": "No models for this brand",
"targetBrand": "Brand:",
"targetModel": "Model:",
"targetForm": "Form:",
"formAll": "All",
"confirmLoading": "Working…",
"confirmButton": "Confirm",
"selectModelFirst": "Select a model first",
"noTargets": "No target curves available",
"closeDrawer": "Close",
"toastBatchApplied": "Batch edit applied",
"toastBatchParseError": "Invalid batch edit format",
"toastBrandsFail": "Failed to load brands",
"toastModelsFail": "Failed to load models",
"toastCurveFail": "Failed to load curve",
"toastNewEqOk": "New headphone EQ saved",
"toastTargetSelected": "Target selected: {{name}}",
"deleteConfirm": "Delete headphone \"{{name}}\"?",
"toastDeleted": "Headphone removed",
"toastDeleteFail": "Failed to delete headphone",
"bassBoost": "Bass boost: fc {{fc}}, q {{q}}, gain {{gain}} dB",
"errMinLines": "At least 11 lines required (Preamp + 10 filters)",
"errPreampFirstLine": "Line 1 must look like Preamp:-5.96dB",
"errPreampValue": "Invalid Preamp value",
"errFilterLine": "Line {{line}} does not match the Filter format",
"errFilterNoRange": "Filter number {{no}} is out of range",
"errFilterType": "Invalid type for filter {{no}} ({{type}})",
"errFilterNumbers": "Invalid numbers for filter {{no}}",
"errFilterAll": "Filters 110 must all be present",
"chartCopyTo": "Copy to {{mode}}",
"chartLoadToDevice": "Load to device",
"toastChartCopied": "Copied to {{mode}}",
"toastChartLoadedDevice": "Loaded to device"
}
},
"dac": {
"balance": "Left-right balance",
+62 -1
View File
@@ -1,6 +1,7 @@
{
"home": {
"audioSet": "音訊設定",
"systemSet": "系統設定",
"power": "電源",
"input": "輸入源",
"output": "輸出端口",
@@ -12,6 +13,16 @@
"powerOffToastDemo": "演示模式:已中斷與裝置的連線",
"powerOffToastSent": "已傳送關機指令"
},
"vuPage": {
"title": "VU 表庫"
},
"bottomNav": {
"community": "社區",
"hpEq": "HP-EQ",
"home": "主頁",
"effects": "Effect",
"myAi": "我的AI"
},
"source": {
"label": "輸入/輸出",
"input": { "coaxial": "同軸", "optical": "光纖", "bluetooth": "藍牙", "rca": "類比RCA" },
@@ -137,7 +148,57 @@
"gain": "GAIN",
"q": "Q值",
"loadDeviceBtn": "確認載入",
"peqNoneItem": "尚未設定"
"peqNoneItem": "尚未設定",
"eqUi": {
"batchEditTitle": "批次編輯",
"batchEditHint": "共 11 行:第 1 行為 Preamp,第 211 行為 Filter 1–10。儲存後將覆寫目前耳機的參數。",
"cancel": "取消",
"save": "儲存",
"tabBrands": "品牌",
"tabModels": "型號",
"tabTarget": "目標",
"searchPlaceholder": "搜尋品牌或型號",
"searching": "搜尋中…",
"noSearchResults": "找不到相關品牌或型號",
"loading": "載入中…",
"noBrandMatch": "沒有符合的品牌",
"selectBrandFirst": "請先在「品牌」頁選擇品牌",
"brandLabel": "品牌:",
"modelFromSearchLabel": "已選搜尋型號:",
"noModelsForBrand": "此品牌暫無型號",
"targetBrand": "品牌:",
"targetModel": "型號:",
"targetForm": "Form",
"formAll": "全部",
"confirmLoading": "處理中…",
"confirmButton": "確認",
"selectModelFirst": "請先選擇型號",
"noTargets": "暫無可用目標曲線",
"closeDrawer": "關閉",
"toastBatchApplied": "批次編輯已套用",
"toastBatchParseError": "批次編輯格式錯誤",
"toastBrandsFail": "取得品牌列表失敗",
"toastModelsFail": "取得型號列表失敗",
"toastCurveFail": "取得曲線失敗",
"toastNewEqOk": "新耳機 EQ 已上報",
"toastTargetSelected": "已選目標:{{name}}",
"deleteConfirm": "是否刪除耳機「{{name}}」?",
"toastDeleted": "已刪除耳機",
"toastDeleteFail": "刪除耳機失敗",
"bassBoost": "低頻增強:fc {{fc}}q {{q}}gain {{gain}}dB",
"errMinLines": "至少需要 11 行(Preamp + 10 個濾波器)",
"errPreampFirstLine": "第 1 行應為 Preamp:-5.96dB 格式",
"errPreampValue": "Preamp 數值無效",
"errFilterLine": "第 {{line}} 行不符合 Filter 格式",
"errFilterNoRange": "Filter 編號 {{no}} 超出範圍",
"errFilterType": "Filter {{no}} 的類型無效({{type}}",
"errFilterNumbers": "Filter {{no}} 的數值無效",
"errFilterAll": "Filter 110 必須全部提供",
"chartCopyTo": "複製到 {{mode}}",
"chartLoadToDevice": "載入至裝置",
"toastChartCopied": "已複製到 {{mode}}",
"toastChartLoadedDevice": "已載入至裝置"
}
},
"dac": {
"balance": "左右平衡",
+62 -1
View File
@@ -1,6 +1,7 @@
{
"home": {
"audioSet": "音频设置",
"systemSet": "系统设置",
"power": "电源",
"input": "输入源",
"output": "输出端口",
@@ -12,6 +13,16 @@
"powerOffToastDemo": "演示模式:已断开与设备的连接",
"powerOffToastSent": "已发送关机指令"
},
"vuPage": {
"title": "VU 表库"
},
"bottomNav": {
"community": "社区",
"hpEq": "HP-EQ",
"home": "主页",
"effects": "Effect",
"myAi": "我的AI"
},
"source": {
"label": "输入输出",
"input": { "coaxial": "同轴", "optical": "光钎", "bluetooth": "蓝牙", "rca": "模拟RCA" },
@@ -137,7 +148,57 @@
"gain": "GAIN",
"q": "Q值",
"loadDeviceBtn": "确定载入",
"peqNoneItem": "未配置"
"peqNoneItem": "未配置",
"eqUi": {
"batchEditTitle": "批量编辑",
"batchEditHint": "共 11 行:第 1 行为 Preamp,第 211 行为 Filter 1–10。保存后将覆盖当前耳机的参数。",
"cancel": "取消",
"save": "保存",
"tabBrands": "品牌",
"tabModels": "型号",
"tabTarget": "目标",
"searchPlaceholder": "搜索品牌或型号",
"searching": "搜索中…",
"noSearchResults": "未找到相关品牌或型号",
"loading": "加载中…",
"noBrandMatch": "无匹配品牌",
"selectBrandFirst": "请先在「品牌」页选择品牌",
"brandLabel": "品牌:",
"modelFromSearchLabel": "已选搜索型号:",
"noModelsForBrand": "该品牌暂无型号",
"targetBrand": "品牌:",
"targetModel": "型号:",
"targetForm": "Form",
"formAll": "全部",
"confirmLoading": "处理中…",
"confirmButton": "确认",
"selectModelFirst": "请先选择型号",
"noTargets": "暂无可用目标曲线",
"closeDrawer": "关闭",
"toastBatchApplied": "批量编辑已应用",
"toastBatchParseError": "批量编辑格式错误",
"toastBrandsFail": "获取品牌列表失败",
"toastModelsFail": "获取型号列表失败",
"toastCurveFail": "获取曲线失败",
"toastNewEqOk": "新耳机 EQ 已上报",
"toastTargetSelected": "已选目标:{{name}}",
"deleteConfirm": "是否删除耳机「{{name}}」?",
"toastDeleted": "已删除耳机",
"toastDeleteFail": "删除耳机失败",
"bassBoost": "低频增强:fc {{fc}}q {{q}}gain {{gain}}dB",
"errMinLines": "至少需要 11 行(Preamp + 10 个滤波器)",
"errPreampFirstLine": "第 1 行应为 Preamp:-5.96dB 格式",
"errPreampValue": "Preamp 数值无效",
"errFilterLine": "第 {{line}} 行不符合 Filter 格式",
"errFilterNoRange": "Filter 编号 {{no}} 超出范围",
"errFilterType": "Filter {{no}} 的类型无效({{type}}",
"errFilterNumbers": "Filter {{no}} 的数值无效",
"errFilterAll": "Filter 110 必须全部提供",
"chartCopyTo": "复制到 {{mode}}",
"chartLoadToDevice": "加载至设备",
"toastChartCopied": "已复制到 {{mode}}",
"toastChartLoadedDevice": "已加载至设备"
}
},
"dac": {
"balance": "左右平衡",