我使用pootle来允许人们翻译PHP项目中的.po文件。
一旦翻译器更新了.po文件,updated就可以拉出和推送翻译。另外,我们有开发人员在网站上工作,他们也可能更新翻译文件,以添加更多的文本,以被翻译。
Yii要求.po文件位于:
yii-project/protected/messages/en_gb/messages.po
Pootle要求目录结构为:
pootle/yii-project/en_GB/messages.po
为了让pootle拉动和推送,.git目录需要位于pootle/yii/..git中。
我尝试过使用git稀疏签出,但这会将文件拖到pootle/yii-project/protected/messages/en_gb/messages.po中,不幸的是,该文件没有被选中。
我无法在其他地方拉动存储库,然后再调用softlink,因为pootle将无法找到.git目录。
我真正想要做的是对一个目录进行稀疏签出,并将结果映射到另一个目录,即签出:
项目/受保护/信息/ -> pootle/yii项目
我不想使用git子树,因为我希望这些文件能够由开发人员或翻译人员更新。我不想使用子模块,因为我不喜欢额外的拉开销,我们希望开发人员在单个提交中包含与新特性相关的所有更改(而不是在主项目上提交一个,在子模块上包含一个)。
有什么建议吗?
发布于 2013-01-03 14:47:33
我们找不到解决办法。
相反,我们使用了子模块。
我们首先提取了yii项目/受保护/消息目录,并创建了一个名为yii翻译的新存储库。
然后,我们降低了每个目录,包括翻译-例如:
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 Weblate看起来很棒。如果我在这条路上有90%的人遇到它,我就会用它。谢谢!
https://stackoverflow.com/questions/13865660
复制相似问题