我每次运行时都需要在项目中执行一些操作(准备gettext*.mo消息文件)git pull.有没有合适的git钩子,我可以用于此目的吗?
我正在尝试从我的共享主机更新Git.为此,我遵循以下步骤:
./configure --prefix=$HOME/dev/git/src --without-tcltkmake然后make install我被困在第4点.当我运行make命令时,我得到以下内容:
user@ssh1:~/dev/git/src$ make
SUBDIR gitweb
SUBDIR ../
make[2]: ? GIT-VERSION-FILE ? est ? jour.
GEN git-instaweb
SUBDIR perl
SUBDIR git_remote_helpers
SUBDIR templates
MSGFMT po/build/locale/is/LC_MESSAGES/git.mo
/bin/sh: msgfmt: command not found
make: *** [po/build/locale/is/LC_MESSAGES/git.mo] Erreur 127
Run Code Online (Sandbox Code Playgroud)
编译器抛出msgfmt command not found错误.
我用Google搜索它,它似乎与gettext包有关.
知道如何在共享主机上修复该错误吗?
我正在寻找一个.po/.mo编辑器.我使用gettext作为翻译文件,但不喜欢poEdit.它必须在Windows Vista上运行,如果它内置于Visual Studio 2008中,它会更好,所以我可以开发和翻译
我真的想要一些能帮助我翻译并使翻译更容易的东西.我想有建议和拼写检查
[没有选择?如果真的没有选择,我也可以做一些事情并编写代码,这样翻译就很容易了.您甚至可以整合http://dict.leo.org或查看Google翻译为查询提供的内容.]
我正在尝试翻译一个字符串.
{% load i18n %}
{% trans "Well, Hello there, how are you?" %}
Run Code Online (Sandbox Code Playgroud)
至...
Hola amigo, ¿que tal?
Run Code Online (Sandbox Code Playgroud)
我的settings.py文件包含:
LOCALE_PATHS = (
os.path.join(BASE_DIR, 'translations'),
)
Run Code Online (Sandbox Code Playgroud)
我得到了这个:
(env)glitch:translations nathann$ django-admin.py compilemessages
CommandError: Can't find msgfmt. Make sure you have GNU gettext tools 0.15 or newer installed.
Run Code Online (Sandbox Code Playgroud)
我也不明白这个错误信息.
(env)glitch:ipals nathann$ django-admin.py makemessages -l es
CommandError:
This script should be run from the Django Git tree or your project or
app tree. If you did indeed run it from the Git checkout …Run Code Online (Sandbox Code Playgroud) 我使用PHP的EOF字符串来格式化HTML内容,而不必担心必须转义引号等.如何在此字符串中使用该函数?
<?php
$str = <<<EOF
<p>Hello</p>
<p><?= _("World"); ?></p>
EOF;
echo $str;
?>
Run Code Online (Sandbox Code Playgroud) 我们正准备将我们的PHP网站翻译成各种语言,PHP中的gettext支持看起来就像是要走的路.
我看到的所有教程都建议使用英文文本作为消息ID,即
gettext("你好!")
但这真的是个好主意吗?假设市场营销人员希望将文本更改为"你好,你们!".那么你不必更新所有语言文件,因为该字符串 - 实际上是消息ID - 已经改变了吗?
拥有某种通用ID(例如"hello.message")和英文翻译文件会更好吗?
我一直在谷歌搜索最后一小时左右试图找到一个完整的工作示例的PHP文件中的gettext - 所有源文件,po文件,正确的路径等.只是一个"你好世界"与所有必需的文件.
我想知道是否有人有这样一个有效的例子.提前致谢.
我正在为我们的网络应用程序开发多语言支持.我们在gettext库周围使用Django的助手.除了如何处理包含重要HTML标记的句子之外,一切都非常容易.这是一个简单的例子:
Please <a href="/login/">log in</a> to continue.
Run Code Online (Sandbox Code Playgroud)
以下是我能想到的方法:
更改链接以包括整个句子.无论在这种情况下改变是否是一个好主意,该解决方案的问题在于,当两者理想地独立时,UI变得依赖于i18n的需要.
将上面的整个字符串标记为翻译(包括格式).然后,翻译字符串也将直接包含HTML.这样做的问题是更改HTML格式需要更改所有翻译.
紧紧耦合多个翻译,然后使用字符串插值来组合它们.例如,可以单独标记短语"Please%s to continue"和"log in"进行翻译,然后合并."登录"已本地化,然后包装在HREF中,然后插入到翻译的短语中,这使%s保持翻译以标记链接应该去的位置.这种方法使代码复杂化并破坏了翻译字符串的独立性.
还有其他选择吗?其他人如何解决这个问题?
目前在项目上使用Gettext,.po文件很好地保存在版本控制之下.
PO文件当然包含翻译,但除此之外,它们还包含一些元数据 - 有关可翻译字符串所在的确切文件和行号的信息.
问题是每次更新PO文件时,元数据的变化比实际的翻译要多得多.这使得以后很难从版本控制差异中看到实际更改的内容 - 您只看到文件名和行号的无数更改.像那样:
- #: somefile.js:43
- #: somefile.js:45
- #: somefile.js:118
+ #: somefile.js:203
+ #: somefile.js:215
msgid "Translate me please"
msgstr "Tõlgi mind palun"
- #: somefile.js:23
- #: somefile.js:135
+ #: otherfile.js:23
+ #: otherfile.js:135
msgid "Note"
msgstr "Märkus"
- #: andThatFile.js:18
#: orThisFile.js:131
- msgid "Before I was like this"
- msgstr "Selline olin ma enne"
+ msgid "I happen to be changed"
+ msgstr "Paistab, et mind muudeti"
Run Code Online (Sandbox Code Playgroud)
当然,一个简单的解决方法是在xgettext输出中禁用filename/linenumber注释的生成.但实际上我发现这些文件名在翻译时非常有用.
我当然不可能是唯一一个不喜欢他的PO文件的差异的人.建议?
这可能是一个愚蠢的问题,但这里有.
我见过几个项目使用一些翻译库(例如gettext)和普通英语占位符一起工作.例如:
_("Please enter your name");
Run Code Online (Sandbox Code Playgroud)
而不是抽象的占位符(这一直是我本能的偏好)
_("error_please_enter_name");
Run Code Online (Sandbox Code Playgroud)
我已经看到有关SO的各种建议与前一种方法一起工作,但我不明白为什么.我不知道如果你需要改变英语措辞,你会怎么做?因为如果将实际文本用作所有现有翻译的密钥,则还必须编辑所有翻译,并更改每个密钥.或者不是吗?
这不是很麻烦吗?为什么这是行业标准?
以这种方式做这绝对不是正确的规范化.我没有看到这种方法有很大的优势吗?