You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

React Native中实现简易国际化后文本翻译存在明显延迟的原因排查求助

React Native中实现简易国际化后文本翻译存在明显延迟的原因排查求助

各位大佬好!我自己捣鼓了一个简易的国际化实现,用AsyncStorage存用户偏好语言,核心代码大概是下面这样的,但现在遇到个头疼的问题——每次打开APP或者切换语言后,翻译后的文本显示有明显延迟,经常先闪一下默认的印尼语,过会儿才跳转到目标语言,体验特别拉胯。想请大家帮忙看看可能是哪里出了问题,或者有没有优化的方向?

先贴下我的核心代码:

import AsyncStorage from '@react-native-async-storage/async-storage';

// 提前定义的多语言字典
const dictionary = {
  "id": {
    "greeting": "Halo!",
    "welcome": "Selamat datang!"
    // 其他印尼语翻译项
  },
  "en": {
    "greeting": "Hello!",
    "welcome": "Welcome!"
    // 其他英语翻译项
  }
};

// 翻译函数:传入语言和短语,返回对应翻译
export function translate(lang: string, phrase: string) {
  if (lang == null || lang === undefined || lang === ""){
    return dictionary["id"][phrase];
  }
  return dictionary[lang][phrase];
}

// 从AsyncStorage获取用户偏好语言
export async function getPreferredLanguage() {
  try {
    const lang = await AsyncStorage.getItem('preferred_lang');
    return lang;
  } catch (e) {
    console.error('获取偏好语言失败', e);
    return 'id'; // 失败时 fallback 到印尼语
  }
}

我目前在组件里是这么用的:用useEffect异步获取语言,更新状态后再传给翻译函数,代码大概是这样:

import { useState, useEffect } from 'react';
import { Text } from 'react-native';
import { translate, getPreferredLanguage } from './i18n';

function Greeting() {
  const [lang, setLang] = useState<string | null>(null);

  useEffect(() => {
    async function fetchUserLang() {
      const preferredLang = await getPreferredLanguage();
      setLang(preferredLang);
    }
    fetchUserLang();
  }, []);

  return <Text>{translate(lang, 'greeting')}</Text>;
}

我自己初步怀疑是不是AsyncStorage的异步特性搞的鬼,但又摸不准具体哪里处理不到位。想请大家帮忙排查下可能的延迟原因,或者有没有什么简单的优化技巧能解决这个闪屏/延迟的问题?


内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.08 14:00:21