跳到主要内容

I18nManager

I18nManager 模块提供了管理从右到左(RTL)布局方向的工具方法,适用于阿拉伯语、希伯来语等 RTL 语言。它提供了控制 RTL 行为以及查询当前布局方向的方法。

示例

根据 RTL 调整位置和动画

如果你使用绝对定位来对齐元素,在 RTL 语言下可能无法正确对齐。使用 isRTL 可以动态调整对齐方向或动画方向。

开发调试

参考

属性

isRTL

typescript
static isRTL: boolean;

一个布尔值,指示应用当前是否处于 RTL 布局模式。

isRTL 的值由以下逻辑决定:

  • 如果 forceRTLtrue,则 isRTL 返回 true
  • 如果 allowRTLfalse,则 isRTL 返回 false
  • 其他情况下,满足以下条件时 isRTLtrue
    • iOS:
      • 设备上用户首选语言为 RTL 语言
      • 应用定义的本地化列表包含用户选择的语言(在 Xcode 项目文件中的 knownRegions = (...) 中定义)
    • Android:
      • 设备上用户首选语言为 RTL 语言
      • 应用的 AndroidManifest.xml<application> 元素上定义了 android:supportsRTL="true"

doLeftAndRightSwapInRTL

typescript
static doLeftAndRightSwapInRTL: boolean;

一个布尔值,指示在 RTL 模式下是否自动交换 left 和 right 样式属性。启用后,RTL 布局中 left 变为 right,right 变为 left。

方法

allowRTL()

typescript
static allowRTL: (allowRTL: boolean) => void;

启用或禁用应用的 RTL 布局支持。

参数:

  • allowRTL (boolean):是否允许 RTL 布局

重要说明:

  • 更改在下次应用启动时生效,不会立即生效
  • 此设置会在应用重启后持久保留

forceRTL()

typescript
static forceRTL: (forced: boolean) => void;

强制应用使用 RTL 布局,无论设备语言设置如何。此方法主要用于开发阶段测试 RTL 布局。

不建议在生产环境中强制开启 RTL,因为该设置需要完全重启应用才能生效,用户体验不佳。

参数:

  • forced (boolean):是否强制使用 RTL 布局

重要说明:

  • 更改在下次应用启动时完全生效,不会立即生效
  • 此设置会在应用重启后持久保留
  • 仅用于开发和测试。在生产环境中,你应该完全禁用 RTL 或正确处理 RTL(参见 isRTL

swapLeftAndRightInRTL()

typescript
static swapLeftAndRightInRTL: (swapLeftAndRight: boolean) => void;

在 RTL 模式下交换 left 和 right 样式属性。启用后,RTL 布局中 left 变为 right,right 变为 left。不会影响 isRTL 的值。