gpt4 book ai didi

php - 只需要 xgettext 生成的翻译字符串,而不是源文件中的所有字符串

转载 作者:可可西里 更新时间:2023-11-01 01:08:55 28 4
gpt4 key购买 nike

真的很挣扎。

我最近设置了一个 bash shell 脚本来提取、连接和删除重复的字符串以翻译出整个网站的 View 页面(正在使用 MVC 框架),它看起来像这样:

for x in *.php; do xgettext --no-wrap --language=PHP -e --flag=_:1:pass-c-format -a "$x" -o "${x%.php}.pot"; done
msgcat -u -s --output-file=$WEBSITENAME-concat.pot *.pot
msguniq -u --output-file=$WEBSITENAME-unique.pot $WEBSITENAME-concat.pot
msgmerge -s -v -U $WEBSITENAME.po $WEBSITENAME-unique.pot

除了这两件事之外,上面的工作非常好,按照克服困难的顺序排列:

  1. 在整个网站源代码中,我一直小心确保所有需要翻译的字符串都包含在函数_( 'string to translate here' ) 中,但是 < strong>xgettext 命令根据我所知提取了文件中的几乎所有字符串,而不仅仅是被 _('') 函数包围的字符串。这意味着我生成的 .pot 文件包含变量名称、URL、格式字符串、函数参数、配置数据和其他不应传递给我们的翻译器的不适当字符串。由于网站的规模,手动删除这些是不切实际的——我们正在查看近 80,000 个字符串条目,这只是我需要在接下来的 6 年内以相同方式处理的数字的第一个网站周!如何将 xgettext 配置为仅提取用于翻译的字符串?

  2. 很多提取的字符串中都有换行符,这些换行符作为\n插入到字符串中。有什么方法可以配置 xgettext 不执行此操作,或者有一种简单的方法来删除它们吗?

我一直在阅读文档并在网络上搜索数小时甚至数天,试图找到特别是第 1 号问题的解决方案。 1,非常感谢 gettext 专家的帮助!提前致谢..

最佳答案

这里只是猜测,但您遇到的第一个问题可能是由 -a 选项引起的。来自xgettext manual :

-a, --extract-all           extract all strings

附带说明一下,您的 xgettext 调用似乎非常复杂。我当然不知道你到底想做什么,但对我来说下面的命令就足够了:

xgettext -L PHP --from-code=utf-8 *.php -o messages.pot

这会将所有包含在 _() 中的字符串保存到 messages.pot 中。

关于php - 只需要 xgettext 生成的翻译字符串,而不是源文件中的所有字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5569451/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com