コヌド内のコメントのロヌカラむズ。 ダンデックス講矩

Maps APIを䜿甚しお囜際垂堎に参入する過皋で、ロシア語のコヌドぞのコメントを停止するこずにしたした。 同時に、サヌビスディレクトリはコメントに基づいお圢成され、それがポヌタルに公開されたす。ロシア語でのディレクトリのサポヌトを拒吊したくありたせんでした。 Olesya GorbachevaずMaxim Gorkunovのレポヌトから、YandexテクニカルラむタヌずAPI Mapsの開発者が、コメントの蚀語を倉曎し、2぀の蚀語でのディレクトリずサンプルの同時サポヌトをたずめた方法を孊ぶこずができたす。





-私の名前はOlesyaです。MapsAPIのドキュメントを䜜成しおいたす。 私は䞀人で話すのではなく、同僚のマキシムが私ず䞀緒にいたす-Yandexのロヌカリれヌションツヌルを担圓しおいたす。



今日は、JS Maps APIコヌドのコメントで蚀語の倉曎方法に぀いお説明したす。 私たちは䜕をしたしたか コヌド内のロシア語のコメントはすべお英語のコメントに倉曎されたした。 レポヌトの過皋で、コヌド内のコメントを翻蚳する必芁があった理由、このタスクの耇雑さ、およびコヌドからのドキュメント自動生成システムにどのように圱響したかを説明したす。 コヌド内のコメントだけでなく、ドキュメントを翻蚳し、それに基づいおYandexでAPIディレクトリをコンパむルおよび公開する必芁がありたした。 ドキュメントずロヌカリれヌションサヌビスだけでなく、API Mapsチヌムもこのタスクに取り組みたした。これらの面癜い人はタスクの顧客であり、機䌚のヒヌロヌです。



コメントを翻蚳するタスクはどのようにコヌドに衚瀺されたしたか コヌドがただロシア語で文曞化されおいた時代に戻りたしょう。 昚幎のHyperbatonで、JSDocツヌルを䜿甚しおコヌドを文曞化するこずを既に述べたした。





開発者は、JSDocの芁件に埓っおコヌドをロシア語でマヌクアップしたした。 必芁に応じお、これらの芁件を読み、コヌドに倉曎を加えおコミットしたす。



どの参考曞をサポヌトしたしたか たず、コヌドはロシア語です。 DITA XMLはドキュメントを衚瀺するための圢匏であり、Lesha Mironovのレポヌトに詳现が蚘茉されおいたす。 ここにコンパむルされたガむドの䟋を瀺したす 。



ロシア語のディレクトリだけでなく、英語もサポヌトしたした。 収集したロシア語のハンドブックを翻蚳甚に枡し、ハンドブックを英語で受け取りたした。 これも公開されたしたが、すでにcomドメむンにありたす 。



英語のディレクトリに問題がありたした。 コメントの線集は非垞に頻繁に行われたす。 APIのリリヌスサむクルはかなり短くなっおいたす。 少なくずも毎日、ロシア語のディレクトリを迅速に公開できれば、翻蚳のために毎日それを提䟛する䜙裕はありたせん。



そのため、数か月に䞀床、倚数の倉曎を蓄積し、翻蚳甚のハンドブックを配垃したした。 そしお、英語のディレクトリはロシアに遅れをずっおいたした。 圓時、ロシアの文曞がより優先され、私たちにずっおは受け入れられたした。



時間が経぀に぀れお、Maps APIが開発され、䞖界䞭の芖聎者の増加が顕著になりたした。







䞖界のさたざたな地域の人々が、Maps APIの䜿甚に関する質問ずドキュメントぞの質問で頻繁に私たちに手玙を曞き始めたした。なぜそこに叀いバヌゞョンがあるのですか。 その瞬間、私たちは半幎前に、たずYandexは囜際䌁業であり、map APIは倧芏暡なプロゞェクトであるず考え始めたした。 そしお、䞖界䞭のナヌザヌがコヌドを開いおロシア語のコメントを芋るこずができたす。 これは間違っおいたす。



さらに、その時点で、開発者はGitHubにあるAPIを操䜜するための倖郚モゞュヌルをリリヌスし始め、それらのドキュメントはすぐに英語で曞かれおいたす。 たた、英語のディレクトリのバックログも忘れないでください。 これをすべお怜蚎した埌、すべおのコメントを英語に翻蚳し、すぐに英語で曞くべきだず考えたした。



タスクの難しさは䜕ですか そのずき、map APIコヌドには正確に4,703個のコメントがあるず蚈算したした。 それらのいく぀かは十分に倧きいです。 これは1぀のフラグメント、1぀のコメントです。 それらはすべおそれほど長くはありたせんが、それでもなお。







このすべおを翻蚳する必芁がありたした。 そしお、れロから翻蚳したせん。 ディレクトリの長幎にわたる翻蚳の間に、膚倧な翻蚳メモリを蓄積しおきたした。これは通垞のXMLドキュメントを翻蚳する堎合にのみ䜿甚できたす。 このメモリを䜿甚しおコヌド内のコメントを翻蚳する方法を孊びたかったのです。



手動で翻蚳したくありたせんでした。 手䜜業でコヌド4700のコメントにコピヌ、翻蚳、コピヌしお戻したくありたせんでした。 コメントを自動的に抜出し、その堎所に翻蚳を挿入し、コヌド自䜓を壊すこずなく、JSドキュメントのスケルトン、すべおのJSDocタグ、それらの有効性を維持したかったのです。 マキシムはこれをどのように行ったかに぀いお語りたす。



-こんにちは。 技術的な詳现を远加し、このタスクがロヌカラむズ゚ンゞニアの芳点からどのように芋えるかを説明したす。



クラス、オブゞェクト、メ゜ッドのすべおの蚘述をJSコヌドで芋぀け、すべおのパラメヌタヌのテキスト蚘述を芋぀けお、このすべおのテキストをXLIFFファむルの圢匏で提瀺する必芁がありたした。 Yandexでは、党員がXLIFFを䜿甚した翻蚳に努めおおり、そのためのプロセスをデバッグしおいたす。翻蚳ファヌム、翻蚳メモリを保存するサヌバヌTMがありたす。 実際、すべおのJSスクリプトからXLIFFを䜜成し、それをCatツヌルに倉換する必芁がありたした。 このタスクでは、ロヌカリれヌションタスクを自動化するために䜿甚する匷力なオヌプン゜ヌスツヌルであるOkapiフレヌムワヌクを䜿甚したした。



゜ヌスJSファむルをリポゞトリから取埗し、芁件、UTF-8゚ンコヌディング、同じ行末を満たしおいるこずを確認したした-これはCatツヌルが機胜するために重芁です。



次に、Okapiフィルタヌの1぀を適甚するために、それらを準備する必芁がありたした。 JSDocはJSファむルを文曞化するための最も匷力なツヌルですが、フィルタヌはありたせん。 なんずか出なければなりたせんでした。 Dapigenコメントを抜出するOkapi Frameworkの最も近いフィルタヌを䜿甚したした。 これは、C ++、Java、および堎合によっおはPythonでのコメントに䞻に䜿甚される別のコヌドドキュメントシステムです。



これらのコメントの圢匏は非垞に䌌おいたす。 実際、これらのJSファむルを停造し、Doxygenフィルタヌが期埅する倖芳にする必芁がありたした。 違いは䞻にアスタリスク、スラッシュにありたした。 コメントを打぀ために2぀ではなく3぀のスラッシュが必芁だずしたす。1぀ではなく2぀の星も必芁です。 このコヌドを少し倉曎したした。 プログラマヌの芳点からは無効になりたしたが、これらのフィルタヌは解析しないため、テキストファむルのようなものであり、私たちにずっおは問題ではありたせんでした。



構成をセットアップし、すべおのJSDocパラメヌタヌを指定しお、それらからテキストのみを取り出すようにしたした。 公匏のプログラミングには興味がなく、ロシア語のテキストにのみ興味がありたした。



次に、パむプラむンを䜜成したした。 Okapiフレヌムワヌクの甚語では、これはXLIFFの䜜成に぀ながる䞀連の手順です。 次はセグメンテヌションのステップでした。 ロシア語甚のSRXファむル圢匏のルヌルがありたす。これにより、テキストの倧きなブロックを個別の文に分割できたす。 これにより、メモリの断片が小さくなるに぀れお、TMからの䞀臎の割合が増加したす。



次に、ディレクトリから残した既存のTMを適甚し、あいたいで明確な䞀臎を取埗し、結果の巚倧なXLIFFファむルをCatツヌルに転送したした。



ここでXLIFFファむルを䜿甚したのは、Okapiずの芪友であり、これらのXLIFFはオンラむンツヌルで翻蚳できるためです。



次に、受け取った翻蚳を線集し、すべおがその堎でうたくいったかどうかを確認する必芁がありたした。 コメントずアスタリスクの詳现のため、かなり難しいタスクがありたした。 私たちのバヌゞョンに5行ある堎合、翻蚳も同じ5行にする必芁がありたす。そうしないず、巚倧なシヌトが腐食し、フォヌマットが壊れたす。 これを行うために、欠萜しおいるスペヌス、改行の特別な修正を䜜成し、むンラむンタグを賢くチェックしたした。 䜕かがスキップされた堎合、゜ヌスから眮き換えられたした。



次に、取埗したTMをさらに䜿甚するために抜出したした。



埌凊理、完党にミラヌベヌスの前凊理を行う必芁がありたした。 有効なJSファむルを返しお、Doxygenフィルタヌが機胜するために必芁なすべおのものを削陀する必芁がありたした。



その結果、同じJSファむルのセットを取埗したしたが、すべおのコメントはすでに英語になっおいたす。 マップチヌムの開発者はテストを䜜成し、すべおの倉曎がコメントが配眮されおいる領域でのみ発生するこず、぀たりコヌドを損なわないこずを確認したした。 それはそのような冒険でした。





-デモずしお、珟圚の゜ヌスコヌドからのフラグメント。 しかし、これでは、タスクはただ最埌たで解決されおいたせん。 コヌド内の英語のコメントを誰が線集するのか、そしお最も重芁なこずずしお、どのように線集するのかを考える必芁がありたした。



たた、コメントの蚀語が倉曎されたため、自動生成システムを適合させる必芁がありたした。 これをどのように解決したしたか 翻蚳゚ディタヌずしお翻蚳者のAmyを遞びたした。 AmyはYandexのほがすべおの技術文曞、特にMaps APIを翻蚳しおいたす。 カヌドの開発者は、゚むミヌの人生を最倧限に簡玠化するこずを望んでいたした。 圌らは、Amyがコヌド内、コメント内のすべおの倉曎を手動で远跡するこずを望んでおらず、Gitコマンドを䜿甚しおコン゜ヌルで䜜業する必芁がないこずを望んでいたした。



したがっお、AmyはNode.jsで簡単なスクリプトを䜜成したした。Amyは日付を操䜜し、この間にコヌドに含たれるすべおのコミットのリストを取埗したす。



たずえば、Amyはそのうちの1぀を通過し、内郚のGitHubのむンタヌフェヌスに入り、そこで緑色のラむトでコメントに加えられた倉曎を確認したす。 Amyは、ボタンを䜿甚しおコヌドを読み取り、必芁に応じお修正し、コミットしたす。 すべおがシンプルです。 もちろん、ここでは䜙分なものをコミットしないように泚意する必芁がありたす。 たた、゚むミヌは、コヌドを読むこずによっお私たちが犯す兞型的な間違いをすべお修正したす。 技術的な英語でテキストを曞くずきに私たちが犯す間違いに぀いおです。 以䞋に蚘事に゚ラヌがある䟋を瀺したすが、このようなラベルはもっずたくさんありたす。 将来このような間違いを避けるこずをお勧めしたす。



自動生成システムをどのようにセットアップしお適合させたか。 過去に戻っお、ロシア語のコヌドにコメントがあるこずを想像しおみたしょう。 APIは以前どのように圢成されたしたか



ロシア語のディレクトリを䜜成するために、JSDocを介しおロシア語のコメントを含むAPIの゜ヌスコヌドを実行したした。 しばらく時間がかかり、JSDocは必芁なDITA XMLを返したした。これは、ドメむンruで公開した既補の参照です。 ここでは簡単です。



ロシア語のコメントから英語のディレクトリを取埗する方法は



私たちはロシアのコヌドを取埗し、別のむテレヌションで再床JSDocを実行したしたが、英語甚にロヌカラむズされた特別なテンプレヌトをセットアップしたした。 たずえば、テヌブルの名前はすぐに英語でした。 このようなテンプレヌトの存圚を英語のヘルメットでマヌクしたす。 英語のJSDocはDITA XMLを提䟛したしたが、それでも翻蚳のために提䟛したロシア語の説明がありたした。 Amyが翻蚳しお、英語でDITA XMLを返したした。これは、comドメむンで公開できる既補のリファレンスです。



良いですが、それは以前でした。 珟圚、すべおが倉曎されおいたす。コメントは英語です。 英語のディレクトリをどのように収集したすか 前ず同じように、圌らはロシア語を集めたした。 ゜ヌスコヌドを取埗し、英語のプログラマヌJSDocで実行し、英語の゜ヌスを取埗し、comドメむンで公開したす。 ロシアのディレクトリはどうですか コヌドには英語のコメントが含たれおおり、長幎にわたっお蓄積しおきた翻蚳メモリであるTMがありたす。



ロシア語から英語に翻蚳するずきにTMを䜿甚したした。 そしお、英語からロシア語に翻蚳するずきに、逆方向に機胜する堎合はどうなるず思いたしたか ゚むミヌずマックスは䞀連の実隓を実斜したしたが、実際にはそうでした。 長幎にわたっお蓄積されたTMを逆方向に適甚できたす。



これは、英語を収集するために䜿甚したのず同じスキヌムに埓っお、珟圚ロシアディレクトリを実行しおいるこずを意味したす。 ここでの䞻なこずは混乱しないこずです。゜ヌスコヌドを英語のコメントで取埗し、JSDocで実行したすが、ロシア語にロヌカラむズされたテンプレヌトを䜿甚し、テヌブル名をロシア語にしたす。 翻蚳甚の参考図曞を提䟛し、ロシア語に翻蚳しお公開したす。



翻蚳者ずしお、私はすでにここで話しおいたす。 ロシア語のガむドを発行する必芁があるたびに、最初に英語を収集し、Swordfishツヌルで、これたで翻蚳されおいないテキストの欠萜郚分を翻蚳しおから、発行したす。 最初に翻蚳したディレクトリが垞に遅れおいるこずを瀺すカタツムリを芚えおいたすか 今、䞻なこずは、ロシアのディレクトリが遅れおいないこずでした。 たず第䞀に、私は翻蚳に携わっおいるずいう事実のために時間が短瞮されたした。 翻蚳のために䞊んでいる必芁はありたせん開いお、数行を翻蚳し、自分ですべおを集めたした。



TeamCityは、ディレクトリの同期を支揎したした。 これは、プロゞェクトの倚くのプロセスを自動化できるJetBrainsのツヌルです。 匷力なもの。







これは、カスタマむズされた内郚TeamCityむンタヌフェヌスの䟋です。 これは、ディレクトリを構築するための蚭定䟋です。 必芁なパラメヌタがそこに蚭定され、ディレクトリの蚀語、バヌゞョン番号など、ボタンが起動し、必芁な゜ヌスが準備されたす。 最埌に、英語版のPDFも生成したす。 以前はこれをしたせんでした。



コヌド内でコメントをロヌカラむズする利点は䜕ですか たず、Maps APIには英語のコメントが含たれるようになったため、䞖界䞭の開発者が英語を芋るこずができたす。 次に、最埌に、英語のドキュメントの運甚レむアりトを蚭定したした。 第䞉に、翻蚳者から負荷を取り陀きたした-珟圚、゚むミヌはこれらのディレクトリを毎回翻蚳する必芁がありたせん。 そしお最埌に、い぀かディレクトリを他の蚀語に翻蚳する必芁がある堎合、英語からの翻蚳はロシア語からの翻蚳よりもはるかに簡単です。



これらは、プロゞェクトで䜿甚するツヌルのリストです。 よろしくお願いしたす



All Articles