Utility FunctionsLocales

getLocaleDirection

getLocaleDirection 函数的 API 参考

概览

getLocaleDirection 函数无需 GT class 实例即可判断某个 locale 的文本方向(从左到右或从右到左)。它使用 Intl.Locale API,为任意有效的 BCP-47 语言代码提供精确的方向检测。

该函数常用于根据 locale 为 HTML 元素设置 dir 属性。

import { getLocaleDirection } from 'generaltranslation';

const direction = getLocaleDirection('ar-SA');
console.log(direction); // "rtl(从右到左)"

const englishDirection = getLocaleDirection('en-US');
console.log(englishDirection); // "ltr(从左到右)"

参考资料

参数

Prop

Type

参数说明

参数说明
locale用于检查文本方向的 BCP-47 语言代码

返回值

'ltr' | 'rtl' - 该 locale 的文本方向:

  • 'ltr':从左到右(大多数语言,包括英语、西班牙语、法语、德语、中文、日语等)
  • 'rtl':从右到左(阿拉伯语、希伯来语、波斯语、乌尔都语及其他闪族/中东语言)

行为

方向检测算法

该函数使用 Intl.Locale API 的 textInfo.direction 属性:

  1. 为传入的 locale 创建一个 Intl.Locale 对象
  2. 读取 textInfo.direction 属性以确定语言的书写方向
  3. 对从右向左的语言返回 'rtl',其他语言返回 'ltr'
  4. 若 locale 无效或引发错误,则默认返回 'ltr'

RTL 语言识别

可自动检测以下 RTL 语言:

  • 阿拉伯语arar-SAar-EGar-AE 等)
  • 希伯来语hehe-IL
  • 波斯语/法尔西语fafa-IR
  • 乌尔都语urur-PKur-IN
  • 普什图语ps
  • 信德语sd
  • 库尔德语(索拉尼)ckb
  • 以及其他从右到左的文字

错误处理

  • 无效或格式不正确的语言代码将默认设置为 'ltr'
  • 对无效输入不会抛出异常
  • 针对边缘情况具备健壮的后备行为

示例

基本方向检测

import { getLocaleDirection } from 'generaltranslation';

// 从左到右(LTR)语言
console.log(getLocaleDirection('en-US')); // "ltr"
console.log(getLocaleDirection('es-ES')); // "ltr"
console.log(getLocaleDirection('fr-FR')); // "ltr"
console.log(getLocaleDirection('ja-JP')); // "ltr"
console.log(getLocaleDirection('zh-CN')); // "ltr"

// 从右到左(RTL)语言
console.log(getLocaleDirection('ar-SA')); // "rtl"
console.log(getLocaleDirection('he-IL')); // "rtl"
console.log(getLocaleDirection('fa-IR')); // "rtl"
console.log(getLocaleDirection('ur-PK')); // "rtl"

注意

  • 对所有从左到右书写的语言(全球大多数语言)返回 'ltr'
  • 对从右到左书写的语言(阿拉伯语、希伯来语、波斯语等)返回 'rtl'
  • 使用现代 Intl.Locale API 进行精确检测
  • 兼容所有 BCP-47 语言代码

后续步骤

这份指南怎么样?

getLocaleDirection