100蚀語を話すようにWebアプリケヌションを教える方法ロヌカラむズ機胜





オンラむンサヌビスの重芁な機胜は、䞖界䞭のほずんどのナヌザヌが異なる蚀語を話すナヌザヌにアクセスできるこずです。 そのようなサヌビスを開発しおいお、さたざたな囜の人々にそのサヌビスを䜿甚しおもらいたい堎合は、翻蚳および適応、぀たりロヌカラむズする必芁がありたす。



この蚘事を曞くずいうアむデアは、 MoscowJSミヌティングの埌に生たれたした。 そこでは、Badooでのロヌカリれヌションプロセスがどのように進行しおいるかに぀いお話したした 。 しかし、この蚘事では、Webアプリケヌションの䟋でのロヌカリれヌションの機胜、ロヌカリれヌション゜リュヌションの存圚、およびBadooで独自の方法が採甚された理由に぀いおもう少しお話ししたいず思いたす。 心配するすべおの人に-猫の䞋で歓迎。



なぜですか



ロシア垂堎のみに焊点を圓おる堎合、おそらくロヌカラむズは必芁ないでしょう。少なくずも、あなたの補品が囜際的な芖聎者にずっお興味深いものになるたではロヌカラむズは必芁ありたせん。 その埌、アプリケヌションを新しい珟実に非垞に迅速に適応させる必芁がありたすが、これはそれほど単玔ではありたせん。 したがっお、あなたはすぐに決定し、質問に答える必芁がありたす  あなたは本圓にロヌカラむズが必芁ですか あなたが肯定的な答えに傟いおいるなら、あなたのサヌビスはさたざたな蚀語機胜のために準備される必芁がありたす。 䞀般に、このような機胜を考慮するこずができる手法ずツヌルは囜際化ず呌ばれたす。これは、远加の倉曎なしで、異なる蚀語で、異なる地域特性で動䜜するアプリケヌションを䜜成するプロセスです。







次に答える質問は、なぜロヌカラむズが重芁なのですか そしお、それは䞻にナヌザヌず顧客にずっお重芁です。なぜなら、それぞれがアプリケヌションを快適に䜿甚できるず感じるからです。 たずえば、ある囜の居䜏者は、英語をよく知っおいおも、母囜語で買い物をするこずを奜みたす。 たた、ほずんどの人は母囜語でサポヌトサヌビスを䜿甚するこずを奜みたす。 箄50か囜のペヌロッパを取り䞊げるず、実際にはそれぞれの囜に日付、数倀、通貚を衚瀺するための独自の地域機胜がありたす。 そしお、芖聎者を党䞖界に広げるず、䞭囜、むラン、アフガニスタン、サりゞアラビアなどの囜が珟れ、テキストは右から巊、たたは䞊から䞋に曞かれ、数字自䜓はむンドアラビア数字たたはペルシャ数字を䜿っお曞かれおいたす。



蚀語機胜



ロヌカラむズを導入する堎合、 たず蚀語のどの機胜に泚意する必芁がありたすか たず、日付ず時刻の衚瀺圢匏に泚意する必芁がありたす。 次の衚は、囜ごずのいく぀かの圢匏の䟝存関係を瀺しおいたす。 ご芧のずおり、ほずんどの囜では圢匏が異なりたす。

曞匏 日付の䟋 囜
yyyy.MM.dd 09.09.22 ハンガリヌ
yyyy-mm-dd 2016-09-22 ポヌランド、スりェヌデン、リトアニア、カナダ
yyyy / mm / dd 2016/09/22 むラン、日本
dd.MM.yyyy 2016幎9月22日 ロシア、スロベニア、トルコ、りクラむナ
M / d / yyyy 2016幎9月22日 アメリカ
時間の蚘録圢匏も囜によっお異なりたす。 たずえば、米囜、カナダ、オヌストラリア、ニュヌゞヌランドでは、12時間圢匏英語システムが䜿甚され、その他の地域では、24時間圢匏フランス語システムが䜿甚されたす。



次の機胜は、数倀圢匏ず通貚衚瀺です。 次の衚からわかるように、1000桁および小数点の区切り蚘号は、コンマ、ピリオド、たたは空癜文字のように芋える堎合がありたす。 たた、通貚蚘号の䜍眮は、蚀語だけでなく囜によっおも異なる堎合がありたす。 たずえば、ドむツやオヌストリアなどの囜は同じ蚀語を話したすが、通貚の圢匏は異なりたす。

䟋 ロケヌル 囜
123 456,79€ るヌる ロシア
€123,456.79 en-US アメリカ
123,456,79€ デデ ドむツ
€123,456.79 脱AT オヌストリア
特に興味深いのは、䞭囜の䌝統的な数字です。 䞭囜語では、数字はロシア語などずは異なる方法で数字に分割されたす。 私たちは、数千に応じお倚数をグルヌプに分割するのに慣れおいたすが、䞭囜は数䞇に応じおグルヌプに分割したす。 たずえば、150.000.000ずいう数倀を1亿5000䞇ず曞き蟌みたす。 さらに、䞭囜人は「数倀迷信」を非垞に匷く信じおおり、数秘術を真剣か぀思慮深く捉えおいたす。 たずえば、数字4は「死ぬ」ずいう蚀葉のように聞こえたすが、䞭囜人はそれを避けようずしおいたす。 倚くのホテルでは、4番の郚屋、時には4階の郚屋も芋぀かりたせん。 たずえば、銀行口座にも同じこずが圓おはたりたす。単玔な䞭囜人の倢は、富ず繁栄の象城である8の数字を持぀こずです。



たた、米囜、ミャンマヌ、リベリアで䜿甚されおいる英語の察策システムが問題になる可胜性がありたす。 重芁な理由 火星に飛んで萜䞋した火星の人工衛星を思い出す䟡倀がありたす。宇宙機噚のチヌムはニュヌトンで力を䜿甚し、地球の゜フトりェアはポンド力を䜿甚したためです。 飛行䞭、間違いを疑った人はいなかった。 その結果、1億2500䞇ドルかかりたした。 そのため、ナヌザヌの慣習的な枬定で結果を衚瀺するこずを忘れないでください。



日付ず数倀の圢匏がわかったら、翻蚳機胜に進むこずができたす。 そしお、最も明らかな問題は、数字の埌の名詞の倉化です。 ご存じのずおり、ロシア語には耇数の圢匏が3぀ありたすが、英語には2぀しかありたせん。 ただし、このような圢匏が6぀ある蚀語もありたす。 たずえば、このリンクには、各蚀語のフォヌムのテヌブルがありたす。

ロシア語 英語
あなたは1぀の莈り物を持っおいたす 単数圢 あなたは1぀の莈り物を持っおいたす
あなたは5぀の莈り物を持っおいたす 耇数 あなたは5぀の莈り物を持っおいたす
2぀のギフトがありたす 少ない
次に、ブロック党䜓翻蚳の機胜を匷調衚瀺できたす。 考慮すべき機胜が十分にありたす。



1.フレヌズや文章党䜓を翻蚳したす 。 異なる蚀語の単語のシヌケンスは異なる可胜性があるため、それらをコンポヌネントに分割するこずはできたせん。









たずえば、15,311人䞭8,283人があなたのこずを気に入りたした。

英語の堎合、次のようになりたす。



<b>{{num_voters_yes_maybe}}</b> out of <b>{{num_voters_total}}</b> {{people}} liked you!
      
      





しかし、日本語では、同じ文はすでに異なっお芋えたす



 <b>{{num_voters_total}}</b>{{people}}<b>äž­{{num_voters_yes_maybe}}</b>人があなたを気に入っおいたす
      
      





この䟋からわかるように、日本語では、単語の逆順です。 したがっお、倚くの堎合ず同様に、 ' ' + pageNum + ' ' + total



だけ曞くこずはできたせん。



2.䞀郚の翻蚳は、性別によっお異なりたす。



以䞋の䟋からわかるように、英語で男性ず女性の䞡方に1぀のフレヌズを指定できる堎合、性別ごずにスロバキア語でフレヌズがありたす。



英語



 You got an award on <span>{{award_date}}</span>
      
      





スロバキア



 : Toto ocenenie si získal <span>{{award_date}}</span> : Toto ocenenie si získala <span>{{award_date}}</span>
      
      





3.改行はコンテキスト固有でなければなりたせん。 翻蚳者は、文、フレヌズ、たたは段萜党䜓の意味を知っおいる必芁がありたす。そうしないず、翻蚳者は誀解しお誀っお翻蚳する可胜性がありたす。 たずえば、「 この{{item}}を保存できたす 」などの文には、別の翻蚳がある堎合がありたす。「 この{{item}}を保存/保存できたす 。」 理想的には、翻蚳者は翻蚳甚の䞀連の行だけでなく、この行が配眮されおいる領域の画像も衚瀺する必芁がありたす。



4.翻蚳リ゜ヌスの再利甚は安党ではない堎合がありたす。 たずえば、「保存」ファむルず「保存」蚭定には、䞀郚の蚀語で異なる名前が付いおいる堎合がありたす。 たたは、スレッドのような単語は「スレッド」ず翻蚳するこずも、「スレッド」ず翻蚳するこずもできたす。



ここで、おそらく、Webアプリケヌションのロヌカラむズ時に遭遇する最も䞀般的な機胜を特定したした。 しかし、これはロヌカリれヌションが圱響するすべおではありたせん。デザむン機胜もそれに起因する可胜性があるためですたずえば、日本語ず䞭囜語ではより倧きなフォントが必芁です。䞀郚の蚀語では、テキストがたずえば英語の2倍になりたす。 カラヌパレット異なる文化の赀ず緑は反察のものを意味したす。たずえば、日本語の赀いチェックマヌクは䜕か間違ったこずをしたこずを意味したす。 䜿甚されおいる画像はい、アゞアのアゞア人、ペヌロッパのペヌロッパ人を衚瀺するのが良いでしょうや、特定の囜や文化に特城的な他の倚くの偎面。 これはすべお蚘事の範囲倖ですが、芚えおおく䟡倀がありたす。



それでは、むンタヌネットを芋お、クラむアントのロヌカリれヌションにどのツヌルが存圚するのか芋おみたしょう。



クラむアントのロヌカラむズ方法



むンタヌフェヌスの開発ず耇雑なビゞネスロゞックの実装により、開発者はすでにクラむアントでのロヌカリれヌションの倚くの問題を解決する必芁がありたした。 ECMAScriptが特定の時点たで提䟛しおいた囜際化の可胜性はかなり乏しかったため、Closure、Globalize、YUI、Moment.jsなどのラむブラリや開発者自身の゜リュヌションの䞀郚が登堎し始めたした。 それらはすべおECMAScriptの可胜性を拡倧し、囜際化のギャップを埋めたしたが、゜リュヌションには異なるプログラミングむンタヌフェむスず、たずえば文字列比范に関連する特定の制限がありたした。 そのため、2012幎12月にECMA-402暙準が登堎したした。これは、アプリケヌションを囜際化する際のフロント゚ンド開発者の生掻を簡玠化するこずになっおいたす。 しかし、これは本圓にそうですか この暙準が今私たちに提䟛するものを芋おみたしょう。



ECMAScript囜際化API



これは、蚀語たたは囜の蚀語的および文化的特性に適応するためのECMAScriptプログラミングむンタヌフェむスを蚘述する暙準です。 䜜業は、数倀Intl.NumberFormat、日付Intl.DateTimeFormat、および文字列比范Intl.Collat​​orをフォヌマットする機胜を提䟛するIntlオブゞェクトを介しお行われたす。 珟圚、すべおの最新ブラりザヌでサポヌトされおいたす。 最近サポヌトを远加した最埌のブラりザヌはSafari でした 。叀いブラりザヌの堎合はpolyfillを䜿甚できたす。



この暙準の倧きなプラスは、Google、Microsoft、Mozilla、Amazonのサポヌトで開発されたずいうこずです。 耇数圢ず性別の圢匏、数字の解析などを考慮しお、文字列をフォヌマットする機胜が远加されたす。 これがすべお非垞にゆっくりず起こっおいるのは残念です。 たずえば、暙準自䜓は2013幎に承認され、最も人気のあるブラりザヌによるサポヌトは2016幎にのみ実珟されたした。その間、Intlオブゞェクトの機胜はかなり制限され、翻蚳する機胜は提䟛されたせん。 したがっお、サヌドパヌティの゜リュヌションを䜿甚するか、ただ承認されおいない圢匏のポリフィルを䜿甚する必芁がありたす。



長所





短所





ECMAScript囜際化APIの䟋



 var mFormat = new Intl.NumberFormat("ru", { style: "currency", currency: "GBP" }).format(1234567.93); console.log(mFormat); // 1 234 567,93 £ var nFormat = new Intl.NumberFormat('ru-RU').format(1000.15); console.log(nFormat); // "1 000,15" var utc = new Intl.DateTimeFormat("en-US", { timeZone: "utc", hour: "numeric", minute: "numeric" }); console.log(utc.format(new Date())); // 2:38 PM
      
      





ここにもう少し䟋がありたす 。



ご芧のずおり、暙準にはただ倚くのものが実装されおおらず、Webアプリケヌション開発者が盎面するすべおの機胜が考慮されおいるわけではありたせん。 したがっお、䞊で曞いたように、倚くは既補の゜リュヌションを探すか、独自の゜リュヌションを開発する必芁がありたす。 珟時点では、倚くの解決策があり、それぞれに長所ず短所がありたす。 Googleに目を向けるず、怜玢で最初の結果はi18next 、 FormatJS 、 Globalize 、 jQuery.i18nなどになりたす。 これらのラむブラリの䞭には独自の゜リュヌションを提䟛するものもあれば、ECMA-402暙準に準拠しようずするものもありたす。 たずえば、Google怜玢で最初の結果を提䟛する2぀のラむブラリを取り䞊げ、それらの機胜を確認しおください。



i18next



開発者によるず、これはクラむアントずサヌバヌnode.jsの䞡方で囜際化を行うための非垞に人気のあるラむブラリです。 圌女にずっお、倚くのプラグむン、ナヌティリティがあり、異なるフレヌムワヌクず統合したす。 翻蚳ファむルをアップロヌドできる翻蚳者向けのむンタヌフェヌスを提䟛したすが、残念ながら既に支払われおいたす。 本圓に倚くのものが実装されおおり、ラむブラリは成長し続けおいたすが、もちろん良いこずです。 ただし、ECMA-402仕様には準拠しおおらず、メッセヌゞの構造圢匏はICUメッセヌゞ構文ではなく独自のものです。 さらに、数倀ず日付をフォヌマットするには、 moment.jsたたはnumbers.jsをロヌドする必芁がありたす。 したがっお、これらのラむブラリをプロゞェクトにロヌドし、必芁な蚀語のロケヌルをラむブラリに远加する必芁がありたす。



長所





短所





ラむブラリの操䜜に関する詳现情報およびその他の䟋に぀いおは、 公匏Webサむトをご芧ください 。



フォヌマットjs



圢匏JSは、囜際化のためのJavaScriptラむブラリのモゞュラヌコレクションです。 ECMA-402、ICU、CLDR芏栌に基づいおおり、Dust、Ember、Handlebarsなどの倚くのフレヌムワヌクおよびテンプレヌト゚ンゞンず統合されおいたす。 このラむブラリは、必芁に応じお、囜際化に察応するためにポリフィルをダりンロヌドするか、ブラりザの機胜を䜿甚したす。 さらに、クラむアントずサヌバヌの䞡方で䜜業をサポヌトしたす。



長所





短所





たずえば、ICU圢匏の翻蚳甚テキストは次のようになりたす。



 { gender, select, female {{ count, plural, =0 {   } one {  # } few {  # } other {  # } }} other {{ count, plural, =0 {   } one {  # } few {  # } other {  # } }} }
      
      





このリンクで䜜業を確認できたす。 䞊蚘の䟋を䜿甚しお、ロケヌル「ru」を入力したす。 このフォヌマットは䞀芋耇雑ですが、蚀語の倚くの機胜を考慮に入れるこずができたす。 同様のフォヌマットで動䜜する翻蚳者にずっお䟿利なシステムにただ出䌚っおいないのは私だけです。



ご芧のずおり、倚くの゜リュヌションがありたすが、遞択する必芁があるだけです。 しかし、ロヌカラむズのプロセスは、ロヌカリれヌション甚のシステムを遞択し、蚀語のさたざたな機胜に察凊しようずするだけでは終わりたせん。 翻蚳システムは開発プロセスに密接に統合する必芁があり、開発者ず翻蚳者の䞡方にずっお単䞀のむンフラストラクチャを衚し、次のようないく぀かの重芁な質問に答える必芁がありたす。





そしお、これらの質問に察する答えがある堎合にのみ、仕事に䟿利な統合されたロヌカリれヌションシステムがあるず蚀えたす。



Badooが囜際垂堎に参入したずき、これらすべおの質問ず蚀語機胜に泚意を払わなければなりたせんでした。 すでに遠い時代には、ロヌカリれヌションのための同様のシステムが存圚しおも、それらはすべおの芁件を満たしおいたせんでした。もちろん、ロヌカリれヌションのための独自のシステムを開発する必芁がありたした Habré倚蚀語アプリケヌション。 このシステムは、プロセス党䜓にうたく統合され、透過的であり、開発プロセスを遅らせないようにする必芁がありたすたずえば、1日に2回「リリヌス」されるため、新補品のアむデアが実皌働環境ですぐに芋぀かるこずが非垞に重芁です。 さらに、圌女はWebだけでなく、iOS、Android、Windows Phoneなど、他のすべおのプラットフォヌムずも連携でき、メヌルニュヌスレタヌにも䜿甚できる必芁がありたした。



クラむアントずサヌバヌ間の共通の通信圢匏以䞋、プロトコルず呌びたす、たたは「認蚌」ず呌ばれるようになったため、倚くのテキストがサヌバヌから送信され始めたした。 クラむアントに倧量の転送を保存する必芁がないため、このアプロヌチは私たちにずっお䟿利でした。このアプロヌチのおかげで、たずえば、トヌクンのABテストを実行したり、ナヌザヌのアクションに䟝存するトヌクンを䜜成したりできたす。 各クラむアントは、必芁な翻蚳を自宅に保存するこずもできたす。 翻蚳を保存する堎所クラむアントたたはサヌバヌは、プロトコルの開発を担圓するチヌムが決定したす。 䞀郚の翻蚳が曎新された堎合、各クラむアントは新しい翻蚳をリク゚ストできたす翻蚳は頻繁に曎新され、新しいリリヌスは特定の頻床でアプリケヌションストアに衚瀺されるため。 このメカニズムをホットレクセムアップデヌトず呌びたす。



䞊の図からわかるように、ロヌカラむズプロセスでは、クラむアントの開発者や翻蚳者だけでなく、他の倚くのチヌムずも忙しくしおいたす。 たずえば、䞊で曞いたように、MAPIチヌムはプロトコルを蚭蚈し、翻蚳を保存する堎所を決定したす。 BackOfficeチヌムは、翻蚳者、翻蚳者、そしおもちろん翻蚳を行うための䟿利なむンタヌフェヌスを提䟛し、SRVサヌバヌ開発者たたはフロント゚ンドクラむアント開発者チヌムが目的の翻蚳を生成しお衚瀺したす。 さらに、このようなシステムを䜜成したずき、それに基づいお、ナヌザヌが参加できる共同翻蚳システム https://translate.badoo.com/ を䜜成できたした。 そしお、それらは各囜の珟地の特城を考慮しお翻蚳を行うのに本圓に圹立ちたす。



おわりに



開発者や翻蚳者だけでなく、プロゞェクトのさたざたなチヌムに圱響を䞎えるため、アプリケヌションのロヌカラむズプロセスは非垞に深刻で骚の折れる䜜業であるこずは明らかです。 そしお、この蚘事の最埌で、アプリケヌションをロヌカラむズするずきの䞻芁な瞬間にもう䞀床泚意を向けたいず思いたす。



  1. ロヌカリれヌションは、「䞊に」実装するためのかなり耇雑な手順です。 必芁な堎合は、プロゞェクトの最初から䜜成する必芁がありたす。
  2. ロヌカリれヌションリ゜ヌスはアプリケヌションに䟝存しない必芁がありたす。
  3. ロヌカリれヌションは行だけでなく、蚭蚈時にも考慮される必芁がありたす。
  4. 開発者だけでなく翻蚳者にずっおもシステムを䟿利にしお、翻蚳プロセスを自動化したす。
  5. 翻蚳の品質がわからない堎合は、テキストをたったく翻蚳しないこずをお勧めしたす。
  6. 各囜ず蚀語の文化的特城を考慮に入れるようにしおください。
  7. デザむン、レむアりト、色、䜿甚枈み画像はロヌカラむズの察象にする必芁がありたす。


おそらく私はこのトピックに関するすべおを持っおいたす。 ロヌカリれヌションプロセスの新しい埮劙さをご自身で孊んでいただければ幞いです。 あなた自身の興味深い経隓がある堎合は、コメントずコメントでそれを共有しおください。 りェブを再びすばらしいものにしたしょう



Vyacheslav Volkov、フロント゚ンド開発者、Badoo



All Articles