如何使用 EXPO/react-native 在 iOS 中实现 RTL

IKK*_*KKA 5 android ios reactjs react-native expo

我在我的 React Native 应用程序文件名中添加了两个本地化文件(阿拉伯语和英语),例如ar.jsonen.json

\n\n

我的en.json文件看起来像

\n\n
"fieldNames": {\n    "enterEmail" : "Enter the email address"\n  },\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的ar.json文件看起来像

\n\n
"fieldNames": {\n    "enterEmail" : "\xd8\xa3\xd8\xaf\xd8\xae\xd9\x84 \xd8\xb9\xd9\x86\xd9\x88\xd8\xa7\xd9\x86 \xd8\xa7\xd9\x84\xd8\xa8\xd8\xb1\xd9\x8a\xd8\xaf \xd8\xa7\xd9\x84\xd8\xa5\xd9\x84\xd9\x83\xd8\xaa\xd8\xb1\xd9\x88\xd9\x86\xd9\x8a"\n  },\n
Run Code Online (Sandbox Code Playgroud)\n\n

我的string/index.js文件如下所示:

\n\n
import * as Localization from \'expo-localization\';\nimport i18n from \'i18n-js\';\n\nimport en from \'./en.json\';\nimport ar from \'./ar.json\';\n\ni18n.fallbacks = true;\ni18n.translations = { en, ar };\ni18n.locale = Localization.locale;\n\nexport const string = value => i18n.t(value);\n\nexport default i18n;\n
Run Code Online (Sandbox Code Playgroud)\n\n

我使用的文件之一如下

\n\n
<Text>{string(\'fieldNames.enterEmail\')}</Text>\n
Run Code Online (Sandbox Code Playgroud)\n\n

两种语言的本地化都运行良好。

\n\n

但是当我选择阿拉伯语时,它在 iOS 中不与右侧对齐。

\n\n

在我的 Android 设备中,它工作正常。\n此问题仅出现在 iOS 中。

\n\n

你能帮我解决这个问题吗

\n

MJ *_*dio 1

RTL 与本地化(l10n) 无关。相反,Internalization(i18n) 可以。

如果您使用startandright前缀代替leftandright,那么您的 RTL 将被实现。

例如,您可以使用RTLmarginStart代替marginLeft