我有一个仅适用于 HE 的 Expo 应用程序,而 RTL 在某些情况下不起作用。
在使用 RTL 系统语言的设备上,HE 工作正常,但当系统语言为 EN(或任何 LTR 语言)时,应用程序在首次加载时将为 LTR。
所以,我的问题是如何强制应用程序始终为 RTL,无论系统语言如何?
现在,我正在尝试像这样强制它(此代码位于index.js中,我正在使用expo-router):
import 'expo-router/entry'
import { I18nManager } from 'react-native'
I18nManager.forceRTL(true)
I18nManager.allowRTL(true)
此外,我尝试预构建项目更新本机文件,如here,并使用 XCode 在测试 TestFlight 中部署,但没有成功。
您还有其他解决方案吗?
L.E.
我创建了一个修改器,可以根据其他帖子的建议更新 AppDelegate.mm:
#import <React/RCTI18nUtil.h>
并在didFinishLaunchingWithOptions中:
[[RCTI18nUtil sharedInstance] allowRTL:YES];
[[RCTI18nUtil sharedInstance] forceRTL:YES];
所以,我不是手动更新 AppDelegate.mm,而是使用 expo prebuild 中的修改器 - 仍然无法在系统语言为英语的设备上工作
您可以使用react-native-restart包来重新加载应用程序包,以防卡住。