我目前正在使用PHP中的gettext。
Gettext使用缓存。这是一件好事,但是当我更新我的翻译时,我无法访问它们,这很烦人。
我读过除了重启Web服务器之外我们无法刷新缓存,这不是一个可行的解决方案。 其他人使用具有不同名称的.mo文件的副本来强制它们再次加载。
我正在搜索gettext缓存内存中文件的时间,以考虑我的应用程序是否可以在字符串出现之前等待那段时间。但我找不到那些信息......持续时间是无限的吗?
我无法想象一个像gettext这样受欢迎的项目还没有找到解决这个问题的解决方案。它是特定于PHP的吗?
预先感谢我将拥有的冬天。 问候。
答案 0 :(得分:5)
每个使用gettext的应用程序在应用程序运行时始终使用缓存,文件可能在启动/首次使用时打开,然后存储在内存中直到关闭。 PHP作为apache的一部分(通过mod_php)不断运行,而不是启动和关闭。
如果您使用php-cgi,则不会出现此问题,因为PHP在需要时由apache启动。
Gettext最初是为桌面应用程序开发的,没有长时间运行的服务器端应用程序,“sysadmin”无法控制停止和启动。您不希望桌面应用在运行时发生变化。
答案 1 :(得分:1)
出于同样的原因,我们选择不使用内置于PHP的gettext,而是使用php-gettext。你将失去一点性能(我们无法衡量),但你有更好的灵活性。
答案 2 :(得分:0)
php-gettext与stream一起工作似乎有点过时了。我上次检查Worrdpress读取文件并将它们转换为数组...不是真的有效。
我仍然喜欢使用gnu gettext,在我的情况下我需要通过执行以下操作重启phpfpm:
服务php5.6-fpm-sp restart。
希望对其他人有用。