我有多个域的程序,一些源文件包含具有不同文本域的dgettext()调用.
如何将gettext-strings提取到多个.po文件?例如,调用dgettext('one', 'Hello')应该转到one.po,并dgettext('two', 'Bye')转到two.po. xgettext只是忽略文本域并将所有内容放在单个文件中.
我正在使用PHP从数据库中生成.mo文件,并遇到了一个奇怪的问题:有些键可以工作,有些则没有.我认为生成的文件存在某种问题.如何检查.mo文件是否正确?
在我的Flask应用程序中,在main.py文件中,我定义了:
from flaskext.babel import gettext
....
def somefun():
return render_template('some.html', messages=messages)
Run Code Online (Sandbox Code Playgroud)
在模板文件some.html中,我用过:
<input type='text' name='keywords' value='{{ keywords|default('') }}' placeholder='{{ gettext('Search...') }}' />
Run Code Online (Sandbox Code Playgroud)
这给出了一个错误:
<input type='text' name='keywords' value='{{ keywords|default('') }}' placeholder='{{ gettext('Search...') }}' />
UndefinedError: 'gettext' is undefined
Run Code Online (Sandbox Code Playgroud)
如何导入此功能以供模板使用?
我需要从.po文件中提取消息.是否有Python模块可以做到这一点?我写了一个解析器,但它取决于平台(\r\nvs. \n).
有一个更好的方法吗?
我的英语php gettext默认语言让我们说
我希望在我的一个控制器中,用其他两种语言翻译一些单词并将它们全部放在一个数组中.
理想情况下我能做到
$word_sv = gettext($word, 'sv_SV');
$word_fi = gettext($word, 'fi_FI');
Run Code Online (Sandbox Code Playgroud)
但它不存在.
是每次更改整体gettext设置的唯一方法吗?
function setLang($lang){
putenv("LC_ALL=$lang");
setlocale(LC_ALL, $lang);
bindtextdomain("myPHPApp", "./locale");
textdomain("myPHPApp");
}
setLang('sv_SV');
$word_sv = gettext($word);
setLang('fi_FI');
$word_fi = gettext($word);
Run Code Online (Sandbox Code Playgroud)
相关:在谷歌上看到它:i18n与gettext但没有语言环境的麻烦?
这里是建议的答案解决方案:
使用gettext
单一价值
echo gettext( "Hello, world!\n" );
Run Code Online (Sandbox Code Playgroud)
复数
printf(ngettext("%d comment", "%d comments", $n), $n);
Run Code Online (Sandbox Code Playgroud)
英语谐音?
echo gettext("Letter");// as in mail, for Russian outputs "??????"
echo gettext("Letter");// as in character, for Russian outputs "?????"
Run Code Online (Sandbox Code Playgroud)
与英文单词"character"相同,它可以是一个人或一个字母的字符!gettext如何识别同义词的正确翻译?
我想让i18n使用我的OCaml代码(将短信翻译成用户的首选语言).大多数可翻译字符串是一小组函数之一的第一个非标记参数.例如
print "Feed '%s':" new_feedraise_safe "Local feed file '%s' does not exist" pathlog_warning ~ex "Error checking signature for %s" feed在GUI代码中,也~label应该提取参数中的字符串.
有什么方法可以自动提取这些字符串吗?为了使事情变得更有趣,我也使用了一些语法扩展(例如Lwt).
我看到有一个ocaml-gettext包,但是:
f_,s_,等).$NAME),然后也无法卸载,这也表明它没有被大量使用.人们实际使用/推荐什么?
我已经使用PHP和gettext本地化了一个从俄语到英语的网站,只需将所有字符串包装到__($string)函数中.
有用.
以下是要点:https://gist.github.com/Grawl/ba8f39b8398791c6a67e
但它不适用于中文翻译.我刚刚将编译.mo(和源.po)添加到locale/zh_CN/LC_MESSAGES/,访问/index.php?locale=zh_CN并且根本没有看到它被翻译.
中国人怎么了?
我是否要使用其他语言代码?
我用它zh_CN来映射中文,就像在WordPress中一样.
我不明白为什么.
更新:
问题出在HTML <meta>标签和charset从服务器进入Windows-1251.Chop俄罗斯PHP服务器.
在我设置<meta charset="GBK">并关闭AddDefaultCharset之后.htaccess,中文本地化终于开始起作用了.
毕竟,我添加了这些修改:
.htaccess:
- AddDefaultCharset UTF-8
+ AddDefaultCharset off
+ RewriteRule ^cn index.php?locale=zh_CN&charset=GBK [L]
Run Code Online (Sandbox Code Playgroud)
functions.php,包括在之前<!DOCTYPE html>:
+ $charset=$_GET["charset"];
+ if(!isset($charset)) {
+ $charset="UTF-8";
+ }
Run Code Online (Sandbox Code Playgroud)
head.php,<head>标签内容:
+ <meta charset="<?=$charset?>">
Run Code Online (Sandbox Code Playgroud)
因此,如果我没有将charset设置为get request,它将变为UTF-8,否则它将来自get request.对于Chiense我把它设置为GBK,就像在淘宝网上一样,浏览器设置了正确的字符集. …
我必须解决gettext识别ES6模板字符串的限制,并且我考虑将模板字符串的"非插值"作为编译步骤,以便在代码中只有"普通"字符串.
基本上我想要实现的是改变这一点
const adjective = 'wonderful'
const something = `Look, I am a ${adjective} string`
console.log(something)
> "Look, I am a wonderful string"
Run Code Online (Sandbox Code Playgroud)
进入这个
const adjective = 'wonderful'
const something = 'Look, I am a ${adjective} string'
console.log(something)
> "Look, I am a ${adjective} string"
Run Code Online (Sandbox Code Playgroud)
实现这一目标的一个残酷方法是使用sed,但它肯定不是更优雅(也可能是容易出错)
sed "s/\`/'/g" FILENAME
Run Code Online (Sandbox Code Playgroud)
想到任何更好,更清洁的想法?
javascript localization gettext ecmascript-6 template-strings
我突然在以前工作的代码中遇到了一个奇怪的错误.我最近从1.9.4升级到Django 1.9.6.
在我的一个观点中,我有:
from django.contrib import messages
from django.utils.translation import ugettext_lazy as _
messages.success(request, str( _('A string with a ') +
'<a target="_blank" href="/preview/' + mymodel.hash + '">' +
_('link!') + '</a>.'), extra_tags="safehtml"
)
Run Code Online (Sandbox Code Playgroud)
这现在给出了TypeError最后一行的第二行:
Can't convert '__proxy__' object to str implicitly
Run Code Online (Sandbox Code Playgroud)
为什么?我该如何解决?
这可以通过将第二个调用包装到ugettext_lazy()in中来解决str()(即代码变为str( _('link!') ).这样做可以使视图呈现正常.现在我的问题是:为什么?整个复合字符串已经包含在内str(),正如我所说,这段代码与之前版本的django一起工作得很好.这是一个错误吗?
gettext ×10
php ×4
localization ×3
python ×3
apache ×1
babel ×1
django ×1
ecmascript-6 ×1
flask ×1
javascript ×1
jinja2 ×1
locale ×1
mo ×1
ocaml ×1
po ×1
translation ×1