feat(locale): 实现前端多语言覆盖与生效语言逻辑
- 新增 effectiveLanguage 字段,统一界面语言解析依据 - 支持前端语言覆盖(德语/西班牙语/法语)优先显示,回退设备语言 - setUiLanguage 方法实现前端或设备语言切换逻辑与持久化 - 当设备语言发生变化时自动清除前端语言覆盖,保证同步一致 - BottomNav 组件和 ConnectionPlaceholder 组件调整使用 effectiveLanguage 获取语言包 - 多语言数据更新,新增德语、西班牙语、法语、韩语支持及语言选项扩展
This commit is contained in:
@@ -216,7 +216,7 @@ export default function SelectPage() {
|
||||
|
||||
const [location, setLocation] = useLocation();
|
||||
|
||||
const { updateSetting, deviceState } = useDevice();
|
||||
const { updateSetting, effectiveLanguage, setUiLanguage } = useDevice();
|
||||
|
||||
const [state, setState] = useState<{
|
||||
|
||||
@@ -238,7 +238,7 @@ export default function SelectPage() {
|
||||
|
||||
const pageTitle = usePageTitleWithConnection(state?.title ?? "");
|
||||
|
||||
const dacVolumeDirectText = resolveLocalePack(deviceState?.language).dac?.dacVolumeDirect;
|
||||
const dacVolumeDirectText = resolveLocalePack(effectiveLanguage).dac?.dacVolumeDirect;
|
||||
|
||||
|
||||
|
||||
@@ -316,6 +316,22 @@ export default function SelectPage() {
|
||||
|
||||
|
||||
|
||||
// 语言选择:设备语言(0/1/2)下发设备,de/es/fr(3/4/5)仅前端切换,
|
||||
// 由 setUiLanguage 内部区分,避免向不支持多语言的设备下发无效值。
|
||||
if (key === "language") {
|
||||
setSaving(true);
|
||||
try {
|
||||
await setUiLanguage(idx);
|
||||
} finally {
|
||||
setSaving(false);
|
||||
}
|
||||
selectPageState = null;
|
||||
setLocation(back);
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
const apiField = KEY_TO_SETTING[key];
|
||||
|
||||
if (apiField) {
|
||||
|
||||
Reference in New Issue
Block a user