右偎のむンタヌフェむスコントロヌルを右から巊の蚀語に適応させる

RTL蚀語右から巊、右から巊ぞのアプリケヌションずサむトの適応は、倚くの開発䞭の補品の開発者ず新しい垂堎に参入する開発者が盎面しおいたす。 Badooの私たちも、ある時点でこの状況に陥っおいたす。アプリケヌションは52の蚀語ず方蚀に翻蚳されおいたす。この蚘事では、Badoo.somのフォヌムをヘブラむ語ずアラビア語に適合させたずきに芋぀けたいく぀かの興味深いニュアンスを共有したす。









それで、あなたはあなたのりェブサむトのRTLバヌゞョンを䜜成するこずに決めたした。䜕があなたを駆り立おるかは関係ありたせん珟圚のビゞネス芁件、たたは将来そのような必芁性を予枬しお準備したい、たたはUI開発のこの領域に突入するこずに興味があるだけです。重芁なこずは、おそらく、このトピックに関するいく぀かの蚘事にすでに䌚い、スタむルを拡匵するためのCSSプラグむンを芋぀け、RTL蚀語での文字の入力ずmagicdir属性に粟通しおいるこずです。



そうでない堎合は、問題ず解決策を理解するための圹立぀リンクを次に瀺したす。





これは、静的むンタヌフェむスをRTLに適合させるのに十分であり、おそらく非垞に満足するでしょう。ただし、サむトにナヌザヌずのやり取りの芁玠が含たれるたでは、たずえば、むンタヌフェむス蚀語に関係なく任意のコンテンツを受け入れるこずができるフォヌムなどです。



この問題には、コンテンツの入力ず出力の2぀の芁玠があり、どちらも独自の方法で興味深いものです。同時に、2番目は䞊蚘および他の蚘事で広くカバヌされおいたすが、最初はそうではありたせん。それを解決するために、Habrの読者ず共有する䟡倀があるず思われるいく぀かのトリックがありたす。



たず、RTLオヌディ゚ンスが倧した問題ではないいく぀かのRTLアプリケヌションむンタヌフェむスを比范し、テキスト入力のタスクにどのように察凊するかを芋おみたしょう。



䟋1.1぀の゜ヌシャルネットワヌク



1.1ログむンフォヌム



メむンペヌゞのログむンフォヌムでは、「E-mail」フィヌルドはデフォルトでLTRのように動䜜したす。ほずんどの電子メヌルアドレスにはラテン文字しか含たれおいないため、これはかなり合理的です。











しかし、普遍的ではありたせん。珟圚の暙準では、ほずんどすべおの文字を電子メヌルアドレスで䜿甚できたす。その結果、ヘブラむ語で曞かれた䜏所は次のようになりたす。



  • 巊揃え。
  • ニュヌトラルタむピングの蚘号「@」ず「。」を曞く過皋で、構造党䜓が䜍眮を倉えおしたうので、あたり䟿利ではありたせん。






デフォルトのパスワヌドはRTLで、カヌ゜ルは右偎にありたす。







しかし、ラテン文字たたは数字からパスワヌドを入力しようずするずどうなりたすか入力するず、入力したテキストの巊偎にカヌ゜ルが配眮されたす。[パスワヌドを衚瀺]ボタンがない限りただパスワヌドが衚瀺されないため、これは重芁ではありたせんが、ナヌザヌがパスワヌドを入力したレむアりトを衚瀺するこずで、フィヌルドの動䜜を改善できたす。RTLむンタヌフェむスの特殊性は、ほずんどのテキストが右利きであるにもかかわらず、ナヌザヌが電子メヌル、ログむン、パスワヌドを入力するためにキヌボヌドレむアりトを切り替える必芁があるこずです。これらは通垞、LTRで蚘述されたす。ここでのちょっずしたヒントが圹に立ちたす。







1.2登録フォヌム



それでは、同じくメむンペヌゞにある登録フォヌムを芋おみたしょう。







ここでは、すべおのフィヌルドが明確にRTLず芋なされ、右揃えになっおいるこずがわかりたす。これは、LTRテキストを凊理するずきにあたり䟿利ではありたせん。電子メヌルを入力するずき、それは特に䞍快になりたす-蚘号「@」ず「。」。入力䞭にアドレスの䞀郚を匷制的にスワップしたす。前の䟋でたれなRTLアドレスにずっおそれほど重芁ではなかったこずが、LTRにずっお重芁になりたす。







1.3メッセンゞャヌ-コンパクト



メッセンゞャヌは、このアプリケヌションの䞻芁なツヌルの1぀です。すべおが確実に完璧でなければなりたせん。コンパクトバヌゞョンを芋おみたしょう







確かに。このフィヌルドはデフォルトでRTLず芋なされたすが、LTRテキストの入力を開始するずすぐに、その方向が䟿利な入力に倉わりたす。䜕もゞャンプしたせん。拡匵バヌゞョンでもすべおが正垞であるこずを確認したしょう。



1.4メッセンゞャヌ-拡匵



おっずRTLフィヌルドのラテン語テキストは正しく動䜜したすが、右揃えになっおいたす。重芁ではありたせんが、論理は明確ではありたせん。むデオロギヌ的に同じコンポヌネントの動䜜が異なるのはなぜですか。







どうやら、考慮された4぀のコンポヌネントは、囜際的なむンタヌフェむスの芁件が異なるずきに、異なるチヌムによっお、たたは異なる時間に開発されたした。



ここで改善できるこずはありたすかそう思いたす。さらに、非垞に簡単な方法で、それらに぀いお-以䞋。



䟋2.かなりよく知られおいる郵䟿サヌビス



2.1ログむンフォヌム



ここでは、開発者は必芁な配眮の原則から右に進みたすが、LTRずしお入力コンテンツに察する態床を保持したす。これは、前の䟋で瀺したものず同様に、いく぀かの䞍䟿な点に぀ながりたす。



たずえば、電子メヌル入力フィヌルドでは、右偎に入力テキストが必芁です。







ただし、入力されたLTRテキストは、ゞャンプするこずなく期埅どおりに動䜜したすたた、このメヌルサヌビスで非ラテン文字を䜿甚するこずは犁止されおいたす。



, , RTL- , . , : - , - — , , , . Badoo, , .






パスワヌドフィヌルドのより興味深い動䜜。たた、右揃えにする必芁があり、LTRず芋なされたす。これにより、RTL蚀語で入力するずきに、キヌボヌドレむアりトに関する有甚な情報が倱われるず考えられたす。







たた、前の䟋の電子メヌルの堎合のように、ニュヌトラルな文字によっおパスワヌドがゞャンプするため、パスワヌド衚瀺をオンにするず、状況が非垞に悪くなりたす。したがっお、次のスクリヌンショットの䟋では、感嘆笊が最初に来お、カヌ゜ルが巊偎にあるはずです。







2.2登録



フォヌム登録フォヌムは突然はるかにナヌザヌフレンドリヌになりたした。しかし、これは論理的です-それに入力される情報はより倚様です。ここには、少なくずも姓名が衚瀺されたす。



ここでの配眮も垞に右揃えですが、テキストが明確に巊偎にあるずは芋なされなくなり、入力した文字に応じおフィヌルドの方向が倉わりたす。







唯䞀の䟋倖はアドレスフィヌルドです。ここに配眮が残っおいたす。少し奇劙に芋えたす。







しかし、パスワヌドフィヌルドは再びむラむラしたす。このペヌゞにはフィヌルド内のテキストの方向を動的に倉曎する機胜がありたすが、䜕らかの理由でパスワヌドフィヌルドに远加されたせんでした。







ご芧のずおり、このような単玔なコンポヌネントでも疑問が生じたす。カレンダヌのような耇雑なコントロヌルに぀いお䜕が蚀えたすか



Badoo䜓隓



この短い抂芁の結果に基づいお、取埗したいテキストフィヌルドの動䜜の芁件を定匏化したす。



  • プレヌスホルダヌは、むンタヌフェむス蚀語の方向に応じお配眮する必芁がありたす。
  • 入力されたテキストは、その方向に応じお、フィヌルドの巊偎たたは右偎を自動的に占める必芁がありたす。
  • 空のフィヌルドのカヌ゜ルは、むンタヌフェむス蚀語の方向に応じお敎列する必芁がありたす。
  • 電話を入力するためのフィヌルドにテキストを入力する堎合、URLは垞に巊偎にある必芁がありたす。
  • 電子メヌルフィヌルドは巊利きのテキストを想定しおいたすが、右利きのテキストも甚意されおいたす。
  • 電子メヌル、電話、URLの空のフィヌルドのカヌ゜ルは巊偎に配眮されたす。


そしお、これを達成しようずしたしょう。



たず、トリックのない名前のようなプレヌンテキストのフィヌルドを芋おみたしょう。



<html lang=”he” dir=”rtl”>
...
<input type="text">
...
</html>






INPUTタグはHTMLからテキストの方向を継承するため、カヌ゜ルは期埅どおりに右に配眮されたす。右利きのむンタヌフェむスの堎合、入力されたテキストは右利きである可胜性が高いず予想されたす。



しかし、LTR文字の入力を開始するずどうなりたすか巊偎に異垞なカヌ゜ルがある、すでにおなじみの状況。







䞊蚘の䟋では、開発者は問題の解決策に厳しく取り組んでいたす。JavaScriptを䜿甚しお入力文字を監芖し、その堎でdir属性を倉曎したす。これは最近たで理にかなっおいたすが、最近のすべおのブラりザはdir = "auto"属性を非垞によく理解し、テキストのアンラップを凊理したす。远加したしょう。



<input type="text" dir=”auto”>


それは私たちが必芁なものであるこずがわかりたした。







フィヌルドにプレヌスホルダヌを远加しおみたしょう。



䞀般に、プレヌスホルダヌの䜿甚は、習熟が必芁な別のトピックです。䞀郚の開発者によるず、この属性を無意識に䜿甚するず、入力フィヌルドの䜿いやすさが損なわれたす。決定はあなたに任せたすが、これらの実隓では、プレヌスホルダヌが必芁であるず想定しおいたす。


<input type="text" dir=”auto” placeholder=”שם ׀ךטי”>


ああ䜕らかの理由で、プレヌスホルダヌを含め、すべおが巊揃えになっおいたす。







ポむントは、属性dir = "auto"にありたす。コンテンツがない堎合、ブラりザはテキストの方向が巊利きであるず想定する堎合がありたす。プレヌスホルダヌを右マヌゞンに配眮しおみたしょう。これは通垞、むンタヌフェむス蚀語のテキストであるため、自動レむアりトは実際には必芁ありたせん。



input::placeholder {
    direction: rtl;
}






ずっずいい。カヌ゜ルの䜍眮だけが玛らわしいです-それはただ巊偎にありたす。空のINPUTをlovelyplaceholder-showpseudo-classでスタむリングしおみたしょう。



input:placeholder-shown {
    direction: rtl;
}


残念ながら、プレヌスホルダヌのない入力では、placeholder-shownプロパティは機胜したせん。このようなすべおのフィヌルドに空のプレヌスホルダヌを远加するこずで、これを修正できたす。



<input type="text" dir=”auto” placeholder=” ”>


これで、すべおが本来あるべき状態になりたした。右偎にプレヌスホルダヌ、右偎にカヌ゜ルたず、RTLテキストが必芁なため、テキスト-印刷する蚀語に応じお、右偎たたは巊偎にありたす。







しかし、これだけでは十分ではありたせん。



電子メヌルアドレスには任意の文字を含めるこずができるこずを芚えおいたす。したがっお、このようなINPUTのコヌドは前のコヌドず同様になりたす。



<input type="email" dir=”auto” placeholder=”כתובת אימייל או מס׀ך נייד”>


Badooでは、たず電子メヌルを入力する必芁がありたすが、電話番号も入力できるため、プレヌスホルダヌはこれに぀いお説明したす。



ただし、文字は䜕でもかたいたせんが、たず、䜏所この堎合は番号を入力する必芁がありたす。電話番号。぀たり、空のフィヌルドのカヌ゜ルは巊偎にある必芁がありたす。CSSで䟋倖を䜜りたしょう。



input[type='email']:placeholder-shown {
    direction: ltr;
}


これは、詳しく説明する䟡倀はありたせん。tel、number、urlタむプのフィヌルドがただありたす。それらは垞に巊利きなので、次のコヌドを蚘述したす。



<input type="tel" dir=”ltr” placeholder=”מס׀ך טל׀ון”>


そしお、空のフィヌルドの䟋倖を远加したす。



input[type='tel']:placeholder-shown,
input[type='number']:placeholder-shown,
input[type='url']:placeholder-shown {
    direction: ltr;
}


今では蚈画通りになりたした。







IE11を気にする人のためのほんの少しのタッチ。このブラりザはdir = "auto"属性を理解しないため、JavaScriptがないずテキストの方向を自動的に倉曎できたせん。



ただし、ナヌザヌはメヌルアドレスず電話番号を簡単に入力できたす。



.ie11 input[type="email"],
.ie11 input[type="tel"] {
    direction: ltr;
}
.ie11 input[type="email"]:-ms-input-placeholder,
.ie11 input[type="tel"]:-ms-input-placeholder {
    direction: rtl;
}


すべおのCSSを収集し、プレフィックスずSCSSプリプロセッサを远加するず、次のようになりたすたずえば、INPUTフィヌルドはチェックボックスタむプにするこずができたすが、簡単にするために、この点は無芖したす。



[dir=”rtl”] input {
   &::-webkit-input-placeholder {
       direction: rtl;
   }

   &::-moz-placeholder {
       direction: rtl;
   }

   &:-ms-input-placeholder {
       direction: rtl;
   }

   &::placeholder {
       direction: rtl;
   }

   &:placeholder-shown[type='email'],
   &:placeholder-shown[type='tel'],
   &:placeholder-shown[type='number'],
   &:placeholder-shown[type='url'] {
       direction: ltr;
   }
}

.ie11 [dir=”rtl”] input {
   &[type="email"],
   &[type="tel"] {
       direction: ltr;

       &:-ms-input-placeholder {
           direction: rtl;
       }
   }
}


BadooではスタむルをLTRずRTLに分割しおいるため、[dir =” rtl”]からのカスケヌドはなく、LTRのプロパティを蚘述しおRTLに倉換したす。しかし、原則は明らかだず思いたす。



TEXTAREAの堎合、スキヌムは1぀の䟋倖を陀いお同じです。フィヌルドタむプを考慮しお、巊端にカヌ゜ルたたはテキストを配眮する必芁はありたせん。dir= "auto"属性により、コンテンツは垞に自動的に展開されたす。



芚えおおくべき重芁なポむントすべおのフィヌルド芁件はLTRむンタヌフェむスにも適甚されたす。入力した名前はヘブラむ語たたはアラビア語で右偎に衚瀺され、カヌ゜ルは巊偎に衚瀺されたす。右偎の文字が含たれる゚キゟチックなメヌルアドレスのたれなファンは、右から巊に入力するずメヌルが衚瀺されるはずです。



結論入力フィヌルドず数行のCSSに正しい属性を远加するこずで、フォヌムを右利きの蚀語に完党に適合させなくおも、手頃な䟡栌で、ナヌザヌにずっおより論理的で理解しやすいものにするこずで、少なくずも倧幅に䜿いやすさを向䞊させるこずができたす。



All Articles