ブログに戻る

ウェブアプリケーションでのRTLサポートの実装

3 min read 分で読める
WebReact

概要

世界の20カ国以上がアラビア語、ヘブライ語、ペルシャ語、ウルドゥー語など、右から左に読み書きすることをご存知ですか?適切なサポートがないと、これらの言語向けに設計されたウェブアプリケーションは混乱し、読みにくくなる可能性があります。そのため、ウェブアプリケーションを構築する際にはRTL(Right-to-Left)サポートを考慮することが不可欠です。

前提条件

RTLサポートを有効にするには、まずウェブアプリケーションに複数言語サポートを実装する必要があります。国際化(i18n)の基本知識が必要です。

RTLサポートの有効化

HTMLにはRTLの組み込みサポートがあります:

<html dir="rtl" lang="ar">
</html>

RTLが必要な言語の定義

右から左のサポートが必要なすべての言語で構成される配列を作成します:

export const RTLLanguages = ['ur', 'ar', 'he']
  • ur はウルドゥー語
  • ar はアラビア語(標準)
  • he はヘブライ語

動的HTML方向

Next.jsでの実装例:

import { useRouter } from "next/router";
import { RTLLanguages } from "constants/languages";

function MyApp({ Component, pageProps }) {
  const { locale = "en" } = useRouter();

  useEffect(() => {
    const dir = RTLLanguages.includes(locale) ? "rtl" : "ltr";
    document?.querySelector("html")?.setAttribute("dir", dir);
    document?.querySelector("html")?.setAttribute("lang", locale);
  }, [locale]);

  return <Component {...pageProps} />;
}

TailwindCSSでのスタイリング

TailwindCSS v3にはrtl:ltr:モディファイアでRTL言語の組み込みサポートがあります:

<div class="ltr:ml-4 rtl:mr-4">
  両方向に適切なマージンを持つコンテンツ
</div>

ベストプラクティス

RTLサポートを実装する際の考慮事項:

  1. レイアウトのミラーリング - ナビゲーション、サイドバー、アイコンをミラーリング
  2. テキスト配置 - テキストを右揃えに
  3. 方向性アイコン - 矢印と方向性アイコンを反転
  4. 数字と日付 - RTL言語でも左から右のまま

結論

RTLサポートの実装は、世界中のユーザーにサービスを提供する包括的なウェブアプリケーションを作成するために不可欠です。TailwindCSSとNext.jsを使用すると、実装が簡単で保守可能になります。