nee*_*zer 8 php gettext xgettext
如何.po使用xgettext使用带有单个命令的PHP文件递归编译文件?
我的PHP文件存在于层次结构中,直接xgettext命令似乎没有递归地挖掘.
nee*_*zer 18
得到它了:
find . -iname "*.php" | xargs xgettext
Run Code Online (Sandbox Code Playgroud)
我-exec之前尝试使用,但这样一次只能运行一个文件.这将它们运行在一堆.
耶谢谷歌!
小智 6
对于WINDOWS命令行,simpe解决方案是:
@echo off
echo Generating file list..
dir html\wp-content\themes\wpt\*.php /L /B /S > %TEMP%\listfile.txt
echo Generating .POT file...
xgettext -k_e -k__ --from-code utf-8 -o html\wp-content\themes\wpt\lang\wpt.pot -L PHP --no-wrap -D html\wp-content\themes\wpt -f %TEMP%\listfile.txt
echo Done.
del %TEMP%\listfile.txt
Run Code Online (Sandbox Code Playgroud)
您无法通过一个命令来实现这一目标。xgettext 选项--files-from是你的朋友。
find . -name '*.php' >POTFILES
xgettext --files-from=POTFILES
Run Code Online (Sandbox Code Playgroud)
如果您确定没有太多源文件,您也可以find使用xargs:
find . -name "*.php" -print0 | xargs -0 xgettext
Run Code Online (Sandbox Code Playgroud)
但是,如果您的源文件太多,xargs将调用xgettext多次,以便不超过您平台的最大命令行长度。为了保护自己免受这种情况的影响,您必须使用 xgettext 选项-j,--join-existing首先删除过时的消息文件,然后从一个空文件开始,这样 xgettext 就不会退出:
rm -f messages.po
echo >messages.po
find . -name "*.php" -print0 | xargs -0 xgettext --join-existing
Run Code Online (Sandbox Code Playgroud)
将其与首先给出的简单解决方案与源文件列表进行比较POTFILES!
使用findwith--exec的效率非常低,因为它会xgettext -j为每个源文件调用一次来搜索可翻译的字符串。在特定情况下,xgettext -j它的效率甚至更低,因为 xgettext 必须messages.po在每次调用(即每个输入源文件)时读取不断增长的现有输出文件。
| 归档时间: |
|
| 查看次数: |
6406 次 |
| 最近记录: |