跳到主要内容

I18nManager

I18nManager 模块提供了用于管理对阿拉伯语、希伯来语等语言的从右到左 (RTL) 布局支持的实用工具。它提供了控制 RTL 行为和检查当前布局方向的方法。

示例

根据 RTL 更改位置和动画

如果绝对定位元素以与其他 flexbox 元素对齐,它们可能在 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 模式下是否应自动交换左右样式属性。启用时,在 RTL 布局中,左变为右,右变为左。

方法

allowRTL()

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

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

参数

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

重要提示

  • 更改在下一次应用程序启动时生效,而不是立即生效。
  • 此设置在应用程序重新启动后仍然保留。

forceRTL()

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

强制应用程序使用 RTL 布局,无论设备语言设置如何。这主要用于开发期间测试 RTL 布局。

避免在生产应用程序中强制使用 RTL,因为它需要完全重启应用程序才能生效,这会带来糟糕的用户体验。

参数

  • forced (布尔值):是否强制 RTL 布局

重要提示

  • 更改在下一次应用程序启动时完全生效,而不是立即生效。
  • 此设置在应用程序重新启动后仍然保留。
  • 仅用于开发和测试。在生产环境中,您应该完全禁止 RTL 或适当地处理它(参见 isRTL)。

swapLeftAndRightInRTL()

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

在 RTL 模式下交换左右样式属性。启用时,在 RTL 布局中,左变为右,右变为左。不影响 isRTL 的值。