Serge-Evernote継続的ローカリゼーションソリューション

今日、私は2008年以来Evernoteで働いていた(そして引き続き働き続けている)プロジェクトについてお話ししたいと思います。それは数日前にフリーソフトウェアになりました。







多くの開発者にとって、ローカライズは追加の問題層に関連しています:ローカライズされたリソースを最新の状態に保つ方法は? しかし、言語が2〜3ではなく、20〜30の場合はどうでしょうか。 時間内に翻訳のために新しい行を送信する方法は? しかし、翻訳中に開発が進み、ラインがなくても新しいラインがあった場合はどうでしょうか? 翻訳者から送信されたリソースファイルを保持する方法 このために、多くの人がローカリゼーションを単に妨害したり、後でローカライズしようとするのは秘密ではありません。



現在、Evernoteには世界中で1億5,000万人以上のユーザーがおり、これらのユーザーの70%以上が米国外にいます。毎月40以上のプロジェクトで15,000の新しい単語を26以上の言語に翻訳しすべての言語。 同時に、システム全体の技術サポートに1人が必要であり、それがたまにしか必要ありません。



これをどうやってやるの?



Evernoteサービスの開発が始まったばかりの頃、私たちは最初から会社を国際化したいと強く望んでいました。 これには、多くの言語のすべてのプラットフォームでEvernoteアプリケーションを迅速にローカライズする必要がありました。 そして同時に、このプロセスを開発者にとってできるだけ透過的にしたかったのです。 そのため、2008年にローカライズプロセスを簡素化および自動化し、このプロセスを継続するプラットフォームの作成を開始しました。



そして7年後、私たちがSerge( S tring E xtractionおよびR esource Generation E ngine)と呼んだこのプラットフォームは、 誰でも利用できるようなりました



Sergeを使用すると、バージョン管理システムにロックされている文字列を自動的に抽出して翻訳用に送信し、翻訳をローカライズされたリソースファイルに自動的に統合してバージョン管理システムに自動的に取り込むプロセスを設定できます。 Sergeは、開発者が一般にローカライズされたファイルを操作する必要性を排除します(彼らの懸念は、たとえば英語などのソースリソースのみを編集することです)。また、翻訳者(またはローカリゼーション機関)がさまざまなファイル形式に煩わされる必要がなくなります。 Sergeは、有料の翻訳者またはボランティアの助けを借りて、オンラインまたはオフラインでローカライズプロセスに統合できます。



このことはどのように機能しますか?



Sergeは、コマンドと1つ以上の構成ファイルを入力パラメーターとして使用するコマンドラインアプリケーションです。 各構成ファイルには、1つのローカライズプロジェクト(同期するリモートリポジトリ、翻訳サーバーとの通信方法、ファイルをスキャンするローカルディレクトリとマスク、ファイルを処理するパーサー、翻訳用に送信するファイルの名前付け方法、作成するエンコードの場所とエンコード方法)が記述されていますローカライズされたファイル、使用する追加プラグインなど)。



Sergeが各構成ファイルに対してsyncコマンドを実行すると、次のようになります。







  1. pull )変更は、リソースファイルとともにリモートリポジトリからダウンロードされます。
  2. pull-ts )転送は翻訳サーバーからダウンロードされます(ローカルファイルが更新されます)。
  3. ローカライズ )ローカライズは実際に行われます:

    1. リソースファイルが解析されます。 ファイルと行に関する情報は、内部データベースに入ります。
    2. 翻訳されたファイルは解析されます。 転送は内部ベースに分類されます。
    3. 翻訳ファイルは、ソースリソースファイルの変更された構造に従って更新されます。
    4. リソースファイルは、翻訳の変更に応じて更新されます。
  4. push-ts )翻訳付きの更新されたファイルが翻訳サーバーにアップロードされます。
  5. push )更新されたローカライズされたリソースファイルが外部リポジトリにアップロードされます。


Sergeが構成ファイルごとにこのサイクルを渡すとすぐに、サイクルを再開できるという事実によって、継続的なローカライズが実現します。 Evernoteの場合、すべてのプロジェクトのサイクル全体には約15分かかります。 つまり、エンジニアがリソースファイルに何らかの変更をコミットすると、15分以内にローカライズロボットからコミットが行われ、このリソースのすべてのローカライズされたコピーが対称的に変更されます。 翻訳者が翻訳を追加するか、既存の翻訳を変更すると、15分以内にその変更がリポジトリにコミットされます。 これらの変更により、CIビルドの起動とその後の自動テストがトリガーされます。これにより、国際化とローカリゼーションに関連するエラーをすばやく特定し、製品開発と並行して翻訳することができます。



Sergeアーキテクチャはプラグイン上に構築されています。 Sergeは、20を超えるファイル形式のいくつかのタイプのバージョン管理システム、およびシステムの動作を変更するプラグイン(たとえば、ローカライズされたファイルの前処理と後処理、ファイルで直接翻訳する言語のリストを指定する機能など)をサポートしています。 Serge Webサイトには、製品、プラグイン、インストール、および構成のドキュメントが含まれています。



Sergeソースを開くことで、個々の開発者と大企業の両方がローカライズプロセスを見直し、ローカライズを開発サイクルに緊密に統合できるようになることを心から願っています。 そして、もちろん、コメント、希望、エラーメッセージを歓迎します。



ローカライズは簡単です!



All Articles