継続的なローカライズの設定に関する一連の記事の続き。 ここで最初のものを見つけることができます。 この記事では、サンプルテストプロジェクトを使用して、Serge-Smartcat-GitLabバンドルを統合し、Serge構成ファイルを構成する方法を説明します。 Ubuntuの手順。
vagrantfileを介したインストール
Ubuntuを手元に持っているサーバーがない場合は、Vagrantを使用できます。 仕組み:
- 指示に従って VagrantとVirtualBoxをインストールします。
- vagrantfileとbashスクリプトをダウンロードします。
- 指示に従って vagrantfileを起動します 。
Vagrantビルドの結果は、SergeがSmartcatプラグインとともにインストールされるUbuntuを備えた仮想マシンです。 必要なすべてのファイルがコピーされ、sshキーが作成されます。 プロジェクトのセットアップとアプリケーションの起動にすぐに進むことができます。
手動インストール
ユーザー作成
サージユーザーグループを作成します。
sudo groupadd serge
ホームディレクトリ/ usr / local / sergeでsergeユーザーを作成します。
sudo useradd -g serge serge -m -d /usr/local/serge
Sergeをインストール
Sergeの完全なドキュメントはこちらです。
ローカルパッケージデータベースのメタデータを更新します。
sudo apt-get -qq update
ビルドツールと必要なパッケージをインストールします。 インストールを開始する前に、Perl 5.10以降がインストールされていることを確認してください。
sudo apt-get -qq -y install build-essential libssl-dev libexpat-dev unzip wget
sergeユーザーのホームディレクトリに移動し、必要な依存関係をすべて備えたSergeをインストールします。
cd /usr/local/serge sudo -u serge wget https://github.com/evernote/serge/archive/master.zip -O serge-master.zip sudo -u serge unzip serge-master.zip sudo -u serge unlink serge-master.zip cd serge-master sudo cpan App::cpanminus sudo cpanm --installdeps . sudo -u serge sudo ln -s /usr/local/serge/serge-master/bin/serge /usr/local/bin/serge
Smartcatプラグインのインストール
sudo cpanm HTTP::Daemon@6.01 sudo cpanm Serge::Sync::Plugin::TranslationService::Smartcat sudo cpan install LWP::Protocol::https
キー作成
sergeユーザーがGitLabで使用するsshキーを使用して、sergeユーザーを作成します。
sudo -u serge ssh-keygen -t rsa -N "" -f .id_rsa_serge
GitLabとの統合
GitLabでsergeユーザーを作成し、すべての開発者リポジトリに追加します。
id_rsa_serge.pubファイルからGitLabのsergeユーザープロファイル設定にsshキーをコピーします。 これは、SergeがGitLabで文字列を送受信できるようにするために必要です。
インストールが完了しました!
Smartcat統合
開始するには、以下を行う必要があります。
- Smartcatにサインアップします 。
- 翻訳する言語を指定してプロジェクトを作成します。 プラグインをセットアップするとき、Smartcatで使用される言語コードが必要になります 。
- project_id 、 tokenおよびtoken_idを取得します。
- support@smartcat.aiに書き込み、Sergeファイル解析サポートを有効にするように依頼します
Serge-Smartcatの構成
セットアップに進む前に、一般的な動作原理を説明します。 標準のローカライズサイクルには5つのステップが含まれます。
- pull-リポジトリから新しい行を取得します。
- pull-ts -Smartcatからローカライズされた文字列を取得します(Smartcatプラグインが有効になっています)。
- ローカライズ -リポジトリからのすべてのソース形式が解析されて.poファイルに変換され、受信した翻訳は.poファイルに書き込まれます。 すべての行はSerge翻訳メモリデータベースに書き込まれます。
- push- ts-最初の手順で受信した新しい行は、Smartcatに送信されます(Smartcatプラグインを使用)。
- push-ローカライズされた文字列はGitLabでコミットされます。
別のCATシステムとの統合を使用できます。たとえば、 Pootleのプラグインがあります。
Sergeおよびgitリポジトリ
Sergeはどの行を翻訳のために送信するのかをどのように知るのですか 新しい行を決定するために、標準のgitツールが使用されます:masterブランチと現在のブランチの違いが取られます。 差分は翻訳のために送信されます。
重要 :原則として、masterブランチは保護されているため、diffを定義するために追加の翻訳ブランチが使用されます。これをbase-translateと呼びます。 つまり、マスターでリリースをマージした後、マスターを追加でbase-translateに保持する必要があります。
ここには重要なポイントがあります。 一方で、開発者が翻訳の対象となる瞬間を理解するようにプロセスを構築する必要があります。それにより、techpecが円を描いて走り、頭を抱えないようにします。 そして、タイトルだけが修正されたようです。
動作原理
Sergeはリポジトリに入り、すべてのブランチを取得し、それらをマスターブランチと比較し始めます。 diffが見つかった各ブランチに対して、Smartcatプロジェクトで翻訳するドキュメントのセットを作成します。 関係のないブランチの混inにとらわれず、各開発者の近くに「ブランチを削除したことを覚えていますか?」という質問を立てないために、プレフィックスを使用すると便利です。 たとえば、Sergeは、 translate-プレフィックスを持つブランチでのみ機能します。
また、翻訳の準備ができている既読および承認済みのテキストが、prefix translateのブランチに分類されることも重要です。 結局のところ、コミットの履歴を解析したい人は誰もいません。彼らはどんな種類のテキストで、なぜdiffはこのように見えるのか理解しようとしませんか?
コンテンツの準備
コンテンツ準備プロセスは次のとおりです。
問題の声明。 タスクが定式化段階にあるとき、テキストがすでにそこに表示されている場合がありますが、そのテキストは変更されずにアプリケーションで終了するはずです。 もしそうなら、コピーライターとテクニカルライターがそれらを完成させるのを手伝います。
レイアウトの開発。 デザイナーがレイアウトを準備すると、テクニカルライターとコピーライターがすべてのテキストを読み上げました。 したがって、英語の推定レイアウトは開発に分類されます。 開発者はテキストについて考える必要はなく、レイアウトから既製の行を取得するだけです。
開発。 残念ながら、前の手順ではすべての可能な種類のテキストを網羅することはできません。 たとえば、レイアウトにはバリデータ、APIエラー、一部のモーダルウィンドウは含まれません。 開発プロセス中に行を追加する必要があった場合、テクニカルライターとコピーライターは必要なすべてのテキストを開発者に提供します。
したがって、ある時点で、開発中のコードの一部に必要なすべての新しいテキストがブランチに含まれている状態になります。 この時点で、prefix translate-を使用して新しいブランチが作成され、Sergeは翻訳プロセスを開始できます。 翻訳の準備ができると、開発者は翻訳ブランチから翻訳を取得し、チームで受け入れられたgitフローに基づいて行動します。
このプロセスにより、開発者のローカリゼーションプロセスへの関与が最小限に抑えられ、手作業の量も最小限に抑えられます。ブランチを作成するだけで済みます。
チューニングプロセスの詳細な説明は、チームが同様の配置とプロセスを持っているという事実に大きく依存しています。
プロジェクトのセットアップ
サージとしてログイン:
sudo -Hu serge -i
グループディレクトリを作成します。
mkdir groups
このディレクトリは、GitLabのリポジトリに対応するプロジェクトをホストします。 リポジトリグループとその場所の構造を繰り返して、ナビゲーションを容易にすることは理にかなっています。
最初のプロジェクトのディレクトリを作成します。
cd groups mkdir myproject cd myproject
Serge構成ファイルをコピーします。 真夜中の司令官をインストールし、ファイルマネージャーを使用してファイルを管理できます。 MCをインストールする前に、sergeアカウントからログアウトする必要があります。
exit sudo apt install mc sudo -Hu serge -i
/ usr / local / serge / serge-master / bin / tools / feature-branch-config-generatorからコピーするファイル:
- サージ設定ファイル: myproject.cfg
- ジョブテンプレートファイル: myproject.inc
- .sergeテンプレート: myproject.serge.tmpl
- ブランチを手動で追加するためのファイル: myproject_branches.txt
- GitLabと連携するためのスクリプト: fbcgen.pl
cp /usr/local/serge/serge-master/bin/tools/feature-branch-config-generator/{myproject.cfg,myproject.inc,myproject.serge.tmpl,myproject_branches.txt} /usr/local/serge/serge-master/groups/myproject cp /usr/local/serge/serge-master/bin/tools/feature-branch-config-generator/fbcgen.pl /usr/local/serge/serge-master/
プラグインログを記録するためのファイルを作成します。
mkdir log cd log touch smartcat.log
myproject.incを構成する
- 名前フィールドで、プロジェクトで使用されるリソースファイル形式を指定します。
- マスクのIDを入力します。yourproject%。%Yourformat%。%Yourmasterbranchname%。
- destination_languagesフィールドで、翻訳する言語を指定します。
- ソースをマスク./%yourproject%/%yourmasterbranch%/res/enで埋めます。
- output_file_pathにマスク./%yourproject%/%yourmasterbranch%/res/% LANG%/%FILE%を入力します。
- source_matchにマスクを入力します。%Yourformat%。
- リソースファイルの形式に応じて、解析に必要なプラグインを指定します。 プラグインはサージドキュメントにリストされています 。 ts_file_pathにマスク./po/%yourproject%/% LOCALE%/%FILE%.poを入力します。
- master_jobにmask%yourproject%。%Yourformat%。%Yourmasterbranch%を入力します。
残りのパラメーターは変更されません。
myproject.serge.tmplを構成します
- project_id-SmartcatのプロジェクトID
- token_id、token-Smartcatからのデータ
- remotepath-ここでは、パラメーターの名前とその値の両方を正しく指定する必要があります{%yourmasterbranch %% ssh_path_to_your_repo%#%yourmasterbranch%}
- $ FBCGEN_DIR_PADDED-%ssh_path_to_your_repo%#FBCGEN_BRANCH
- id-job.yourmasterbranch
- 名前-yourproject
- source_language-en
- destination_languages-翻訳が必要な言語
- source_dir-./branches/yourmasterbranch/%path_to_resource_files%
- source_match-en。%yourformat%
- db_source-DBI:SQLite:dbname -./% yourproject%.db3
- db_namespace-%yourproject%
- ts_file_path-./po/PROJECT_ID_IN_SMARTCAT/% LANG%/%FILE%.po
- output_file_path-./branches/%yourmasterbranch%/%path_to_resource_files%/% LOCALE%。 %yourformat%
- output_lang_rewrite {
zh-hans zh-cn '' zh-hant-tw zh-tw
}-このパラメーターを使用すると、言語指定を再定義できます。 プロジェクトの言語指定がSmartcatで使用されている指定と一致しない場合は、それらを再定義できます。 - master_job-job。%yourmasterbranch%
- @inherit-。#jobs /:%yourmasterbranch%
- source_dir(FBCGEN_BRANCH_JOBS内)-./branches/$FBCGEN_DIR/%path_to_resource_files%/
- output_file_path(FBCGEN_BRANCH_JOBS内)-./branches/$FBCGEN_DIR/%path_to_resource_files%/% LOCALE%。 %yourformat%
重要! source_path_prefixでは、終点はpoint%FBCGEN_BRANCHでなければなりません。
Smartcatプラグインの呼び出しは、適切なセクションmyproject.serge.tmplに追加する必要があります
sync { ts { plugin Smartcat data { project_id 12345678-1234-1234-1234-1234567890123 token_id 12345678-1234-1234-1234-1234567890123 token 1_qwertyuiopasdfghjklzxcvbn push { disassemble_algorithm_name Serge.io PO } pull { complete_projects NO complete_documents YES } log_file ./log/smartcat.log } }
いくつかのパラメーターの説明:
- disassemble_algorithm_name Serge.io PO -Sergeに渡されたキーハッシュを使用します。 このパラメーターは、pull-tsおよびpush-tsコマンドの実行時間を最適化するために必要です。
- complete_projects NO-プロジェクト内のすべてのドキュメントが完成した場合にのみ、Smartcatから行を選択します。 統合のために、SmartcatのプロジェクトはGitLabのリポジトリと同義であり、一連のドキュメントが含まれています。 ドキュメントは、リポジトリ内のブランチの数と翻訳が行われる言語のデカルト積です。 つまり、リポジトリに6つの言語に翻訳する必要がある2つのブランチがある場合、12のドキュメントがプロジェクトに作成されます。
- complete_documents YES-ドキュメントのステータスがdoneの場合、Smartcatから行を選択します。 これは、リポジトリへのコミットの数を最小限にするために行われます。
カスタムプロジェクトの例
以下は、6言語のプロジェクトの構成ファイルです。 プロジェクトは、ソース行をjs形式で保存します。 5文字のファイル命名形式が使用されます。 リソースファイルへのパス:./branches/base-translate/client/src/translations。
myproject.cfg
myproject.inc
myproject.serge.tmpl
sync { ts { plugin Smartcat data { project_id %project_id% token_id %token_id% token %token% push { disassemble_algorithm_name Serge.io PO } pull { complete_projects NO complete_documents YES } } } vcs { plugin git data { local_path ./branches add_unversioned YES name L10N Robot email l10n-robot@example.com remote_path { base-translate git@gitlab.loc:common/myproject.git
アプリケーションの起動
リポジトリを複製する
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" git clone -b base-translate git@gitlab.loc:groups/myproject.git branches/base-translate/
ローカリゼーションサイクル
.sergeファイルが形成されます:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" /usr/local/serge/serge-master/fbcgen.pl myproject.cfg
すべてのリポジトリブランチからの変更の取得:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge pull --initialize myproject.local.serge
Smartcatからのすべてのブランチの翻訳変更のコレクション:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge pull-ts myproject.local.serge
データベースと.poの形成:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge localize myproject.local.serge
リポジトリからSmartcatに新しいデータを送信する:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge push-ts myproject.local.serge
受け取った転送を適切なブランチのリポジトリに送信する:
GIT_SSH_COMMAND="ssh -i /usr/local/serge/serge-master/.id_rsa_serge" serge push myproject.local.serge
次の記事は、統合の特殊なケースのトラブルシューティングと説明に専念します。
最終記事: 20のプロジェクト、20の言語、昨日の締め切り。 パート3