我每次运行时都需要在项目中执行一些操作(准备gettext*.mo消息文件)git pull
.有没有合适的git钩子,我可以用于此目的吗?
我正在尝试从我的共享主机更新Git.为此,我遵循以下步骤:
./configure --prefix=$HOME/dev/git/src --without-tcltk
make
然后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的各种建议与前一种方法一起工作,但我不明白为什么.我不知道如果你需要改变英语措辞,你会怎么做?因为如果将实际文本用作所有现有翻译的密钥,则还必须编辑所有翻译,并更改每个密钥.或者不是吗?
这不是很麻烦吗?为什么这是行业标准?
以这种方式做这绝对不是正确的规范化.我没有看到这种方法有很大的优势吗?