Web アプリケーションで RTL 言語レイアウトをサポートする
このブログ投稿では、Web アプリケーションで RTL (右から左) 言語サポートを効果的に実装するための基本的なステップを案内します。
はじめに
Logto は、カスタマーアイデンティティおよびアクセス管理 (CIAM) ソリューションのより良い選択肢です。これはオープンソースであり、活気のあるコミュニティに支えられています。最近、私たちのコミュニティ(クレジット @zaaakher)が Logto 管理コンソールと Logto サインインエクスペリエンスの両方へのアラビア語の翻訳を貢献し、アラビア語を話すユーザーにとってよりアクセスしやすくしました。
しかし、翻訳があるだけでは十分ではないことを理解しています。UI レイアウトが右から左 (RTL) 言語用に最適化されていることを確認する必要があります。このチュートリアルでは、RTL 互換性における一般的な課題について説明し、それらを Web アプリケーションでどのように解決するかを説明します。
RTL Web アプリケーションはどのように見えるのか?
左から右 (LTR) の Web アプリケーションでは、レイアウトは画面の左側から始まるように設計されています。コンテンツは左から右に流れ、スクロールバーは画面の右側にあります。対照的に、RTL Web アプリケーションは画面の右側から始まります。コンテンツは右から左に流れ、スクロールバーは画面の左側にあります。
Logto コンソールのスクリーンショットを例として示します:
RTL 互換性における課題
LTR Web アプリケーションを RTL フレンドリーに変換する際には、以下のような課題に直面することがあります:
- テキストの配置:RTL モードではテキストの配置を右揃えにする必要があります。
- コンテンツの方向:RTL モードではコンテンツの方向を右から左にする必要があります。例:ナビゲーションサイドバー、チャートなど。
- スクロールバーの位置:RTL モードではスクロールバーは画面の左側にあるべきです。
- アイコンと画像:一部のアイコンや画像は RTL モードで反転する必要があります。例:シェブロンアイコンなど。
- 日付と数字のローカライズ:日付のフォーマットと "アラビア・インディック数字 (٠١٢٣٤٥٦٧٨٩)" を RTL モードで使用し、"西洋アラビア数字 (0-9)" の代わりに利用します。
- 間隔、位置付け、その他: フォーカスする必要がある他の細かい調整には、マージンとパディング、ボーダー半径、絶対位置付け、アニメーションなどが含まれます。
上記の課題を克服するにはどうすればよいか?
ここ に、Logto を RTL フレンドリーにするために実施したいくつかのヒントとコツを示します:
HTML 属性 dir="rtl"
を使用する
現在の言語がアラビア語または他の RTL 言語である場合、Web アプリケーションのルート要素に HTML 属性 dir="rtl"
を適用します。
これはブラウザにコンテンツが RTL モードで表示されるべきことを理解させ、最初の 3 つの課題(テキストの配置、コンテンツの方向、スクロールバーの位置)を自動で調整します。ただし、カスタムスクロールバーを使用している場合は、位置を手動で調整する必要があるかもしれません。
RTL モードでアイコンを反転させるコンポーネントを実装する。
言語が RTL の場合、CSS の transform: scaleX(-1);
を使用してアイコンを水平に反転させることができます。これは React と TypeScriptで記述された例です:
このコンポーネントを使用してアイコンコンポーネントを包むと、RTL モードでアイコンを自動的に反転させます。