我想开始使用gettext来处理我在Web项目上的翻译(PHP 5).由于它是一个广泛使用的标准,具有良好的声誉,它似乎是最好的选择.
但是,我也听到有关服务器不兼容的事情,并且它是非线程安全的.这对我使用它的项目意味着什么?由于我构建了许多人使用的东西,因此我的代码工作非常重要.
我们是在谈论小问题(比如仍在使用PHP 4的人)还是主要的问题,比如在websevers上分发和安装gettext的问题很少?
在php(或者通常是gettext)中,当gettext看到变量为动态内容时,它会做什么?
我有2个案例.
1)让我说我有<?=$user1?> poked John <?=$user2?>.也许在某种语言中,单词的顺序是不同的.gettext如何处理?(不,我不是在构建facebook,这只是一个例子)
2)假设我将一些类别存储在数据库中.它们很少,但它们存储在数据库中.如果我这样做<?php echo gettext($data['name']); ?> 会怎么样?我希望翻译人员也翻译这些类别名称,但它是否必须在数据库中完成?
谢谢
我发现是字符串的翻译(msgid)是空的,所有gettext工具都会将字符串视为未翻译.
这有解决方法吗?我确实希望有一个空字符串作为此项目的翻译.
我有两个中型Web应用程序,我正在合并为一个.它们都是本地化的GetText并且具有大量的常见字符串,因此手动合并它们会非常烦人.合并这两个PO文件的最快方法是什么?
我有几个问题:
我知道gettext是什么.我读了一些他们提到xgettext的帖子,并对两者之间的区别感到好奇.
如何在Windows上安装xgettext?
最后,是否有人有关于如何安装库的教程php-gettext http://savannah.nongnu.org/projects/php-gettext/(这个通常不附带PHP)我已经读过它了在一篇文章中,我不知道如何让它在Windows中运行.问题是,有时当你进行更改时,你需要重启Apache以使用PHP附带的gettext查看新数据(但是使用库不需要重新启动它)所以我想使用库进行开发.谢谢!
到目前为止,我见过的关于使用gettext而不是数组的唯一两件好事是我不必创建"问候""子数组"(或其所谓的).而且我不必为"默认语言"创建文件夹.
是否有其他使用gettext和php数组用于多语言网站的优点和成本?
使用GETTEXT:
西班牙/ messages.po:
#: test.php:3
msgid "Hello World!"
msgstr "Hola Mundo"
Run Code Online (Sandbox Code Playgroud)
index.php文件:
<?php echo _("Hello World!"); ?>
Run Code Online (Sandbox Code Playgroud)
?的index.php LANG =西班牙语:
<?php echo _("Hello World!"); ?> turns to Hola Mundo
Run Code Online (Sandbox Code Playgroud)
使用PHP ARRAYS:
lang.en.php
<?php
$lang = array(
"greeting" => "Hello World",
);
?>
Run Code Online (Sandbox Code Playgroud)
lang.es.php
<?php
$lang = array(
"greeting" => "Hola Mundo",
);
?>
Run Code Online (Sandbox Code Playgroud)
index.php文件:
<?php echo $lang['greeting']; ?> greeting turns to Hello World
Run Code Online (Sandbox Code Playgroud)
的index.php?LANG =西班牙语
<?php echo $lang['greeting']; ?> greeting turns to Hola Mundo
Run Code Online (Sandbox Code Playgroud)
(我首先使用gettext,但我的共享免费托管Zymic不支持.我不想使用Zend_translate,我发现它对我的简单任务来说太复杂了,所以我最终使用了php define,但后来又有人告诉我应该使用数组)
我在django网站的I18N流程中.
我选择了两个可能很好的django-apps:
从您的角度来看,这两种技术的优缺点是什么?
django translation gettext django-models internationalization
使用基于Python的Babel gettext实用程序,是否有任何技术可以保留文件更新中的翻译者注释和旧("过时")翻译(标记为#~)?.po.pot
第一次过时的翻译在.po文件中并pybabel update运行时,翻译将标记为#~.这样,一方面,它被视为注释,直到翻译人员查看并更改它才会被使用,但另一方面,它不会被删除,因此翻译人员可以引用它,或者复制文本从它到其他翻译.
但是,下次pybabel update运行时,会从文件中永久删除所有注释.这意味着标记的翻译#~也会被删除.
例如,使用Babel版本0.9.6和Jinja2版本2.6,以及以下文件:
./babel.ini:
[jinja2: **/templates/**.html]
encoding = utf-8
Run Code Online (Sandbox Code Playgroud)
./templates/test.html:
<html><body>
<h1>{% trans %}My website{% endtrans %}</h1>
</body></html>
Run Code Online (Sandbox Code Playgroud)
./i18n/pt_PT/LC_MESSAGES/messages.po:
# ... header stuff generated from
# pybabel init -l pt_PT -d i18n -i i18n/messages.pot ...
# Don't forget, I want to remember something about this!
#~ msgid "My web page"
#~ msgstr "A minha página de …Run Code Online (Sandbox Code Playgroud) 我正在使用Django在基于Web的应用程序上做一些i18n,它使用gettext作为其i18n基础.翻译应该存储在数据库中似乎是一个明显的想法,并不难做到,但文件系统上的po文件仍在使用中.为什么是这样?
我目前的怀疑是,gettext作为一个完善的软件包的可靠性/熟悉程度简直超过了开发数据库的优势所带来的好处.还有其他重要原因继续将翻译存储在文件系统中吗?
是否可以使用类似gettext的内容来翻译R脚本.如果是这样,怎么样?如果没有,我还有其他选择吗?
gettext ×10
php ×4
django ×2
arrays ×1
babel ×1
localization ×1
multilingual ×1
po ×1
python ×1
r ×1
translation ×1
xgettext ×1