Better Translateホーム
GitHub
はじめる
  • はじめに
  • ミッション
  • インストール
  • CLI
  • スキル
  • RTL
  • 変更履歴
アダプター
  • コア
  • React
  • Expo
  • Astro
  • MD & MDX
  • Next.js
  • TanStack Router

RTL

@better-translate/coreにはRTLサポートが組み込まれています。 configで右から左に書くロケールを宣言し、getDirectionまたはisRtlを使用して 実行時に方向をクエリします。

使用するタイミング

アプリがアラビア語、ヘブライ語、ペルシア語、ウルドゥー語などの言語をサポートする必要がある場合にRTLサポートを使用します。 directionヘルパーを使用すると、別のルックアップテーブルを管理せずに、 HTML要素のdir属性を型安全に設定できます。

方向の宣言

configureTranslationsの呼び出しにdirectionsキーを追加します。 省略したロケールはデフォルトで"ltr"になります。

tsx
1import { configureTranslations } from "@better-translate/core";23const translator = await configureTranslations({4  availableLocales: ["en", "ar"] as const,5  defaultLocale: "en",6  messages: { en, ar },7  directions: {8    ar: "rtl",9  },10});

方向のクエリ

getDirectionを呼び出すと、任意のロケールに対して"ltr"または"rtl"が取得できます。 isRtlを呼び出すと、真偽値の省略形が取得できます。

tsx
1translator.getDirection({ locale: "ar" }); // "rtl"2translator.getDirection({ locale: "en" }); // "ltr"34translator.isRtl({ locale: "ar" }); // true5translator.isRtl({ locale: "en" }); // false

呼び出しごとの上書き

config.rtlを渡すと、設定された方向を単一の呼び出しで上書きできます。 これはメッセージの検索には影響せず、解決される方向のみ変更されます。

tsx
1// RTLロケールでもLTRを強制2translator.t("greeting", {3  locale: "ar",4  config: { rtl: false },5});67// LTRロケールでもRTLを強制8translator.t("greeting", {9  locale: "en",10  config: { rtl: true },11});

HTMLへの適用

ルート要素のdir属性をレンダリングする際にgetDirectionを使用します。

tsx
1// html要素で(例:Next.jsのレイアウト内)2<html lang={locale} dir={translator.getDirection({ locale })}>34// 特定のコンテナで5<div dir={translator.getDirection({ locale })}>6  {t("greeting")}7</div>

主要なソースファイル

  • packages/core/src/types.ts
  • packages/core/src/create-configured-translator.ts
  • packages/core/src/normalize-config.ts

続きはこちら

Coreアダプターを見るNext.jsアダプターを見る