1

私はpootleを使用して、PHPYiiプロジェクトで.poファイルを翻訳できるようにしています。

翻訳者が.poファイルを更新すると、Pootleは翻訳をプルおよびプッシュできます。これとは別に、サイトで作業している開発者がいます。開発者は、翻訳ファイルを更新して、翻訳するテキストを追加することもできます。

Yiiでは、.poファイルを次の場所に配置する必要があります。

yii-project / protected / messages / en_gb / messages.po

Pootleでは、ディレクトリ構造が次のようになっている必要があります。

pootle / yii-project / en_GB / messages.po

pootleをプル&プッシュするには、.gitディレクトリがpootle / yii-project/.gitにある必要があります。

git sparse checkoutを使用してみましたが、ファイルがpootle / yii-project / protected / messages / en_gb / messages.poにプルされますが、残念ながらpootleはそれを取得しません。

他の場所でリポジトリをプルしてからソフトリンクを実行することはできません。そうすると、pootleは.gitディレクトリを見つけることができなくなります。

私が本当にやりたいのは、ディレクトリのスパースチェックアウトと結果を別のディレクトリにマップすることです。つまり、チェックアウトです。

pootle / yii-project / protected / messages /-> pootle / yii-project

開発者または翻訳者のいずれかがファイルを更新できるようにしたいので、git-subtreeを使用したくありません。余分なプルオーバーヘッドが気に入らないため、サブモジュールを使用したくありません。開発者には、新しい機能に関連するすべての変更を1回のコミットに含める必要があります(メインプロジェクトでの1回のコミットではなくサブモジュールに1つ)。

助言がありますか?

4

1 に答える 1

0

git sparsecheckout を使用しても解決策が見つかりませんでした。

代わりに、サブモジュールを使用しました。

最初に yii-project/protected/messages ディレクトリを抽出し、yii-project-translations という名前の新しいリポジトリを作成しました。

次に、翻訳を含む各ディレクトリを小文字にしました。たとえば、次のようになります。

git mv en_GB en_gb

次に、新しいリポジトリを元の yii プロジェクトにサブモジュールとして含めました。

cd yii-project/
git subtree split --prefix=protected/messages --branch=yii-project-translations
cd protected/
git rm -rf ./messages
mkdir messages
pushd messages
git init
git remote add origin git-server:yii-project-translations
git pull ../../ yii-project-translations
git push origin -u master
popd

そして、このリポジトリを pootle プロジェクトとして複製しました。

cd $POOTLE_HOME/translations/
git clone gitolite@git.algo.travel:yii-project-translations yii-project

最後に、pootle データベースのいくつかのテーブルを小文字のディレクトリ名に更新したので、すべてがうまく結び付きました。

update pootle_app_language set code = lower(code);
update pootle_app_directory set pootle_path = lower(pootle_path);
update pootle_app_translationproject set real_path = lower(real_path), pootle_path = lower(pootle_path); 

@michal-cihar - Weblate は素晴らしいですね。pootle パスに沿って 90% を取得する前にそれを見つけていたら、それを使用していたでしょう。ありがとう!

于 2013-01-03T14:47:33.130 に答える