标签: gettext

gettext:将dgettext()字符串提取到domain.po文件

我有多个域的程序,一些源文件包含具有不同文本域的dgettext()调用.

如何将gettext-strings提取到多个.po文件?例如,调用dgettext('one', 'Hello')应该转到one.po,并dgettext('two', 'Bye')转到two.po. xgettext只是忽略文本域并将所有内容放在单个文件中.

localization gettext

9
推荐指数
1
解决办法
1695
查看次数

如何检查.mo文件的有效性?

我正在使用PHP从数据库中生成.mo文件,并遇到了一个奇怪的问题:有些键可以工作,有些则没有.我认为生成的文件存在某种问题.如何检查.mo文件是否正确?

php gettext mo po

9
推荐指数
1
解决办法
2015
查看次数

Flask-Babel如何在Jinja模板文件中使用翻译

在我的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)

如何导入此功能以供模板使用?

python gettext jinja2 babel flask

9
推荐指数
1
解决办法
1万
查看次数

使用python解析gettext` .po`文件

我需要从.po文件中提取消息.是否有Python模块可以做到这一点?我写了一个解析器,但它取决于平台(\r\nvs. \n).

有一个更好的方法吗?

python gettext

9
推荐指数
2
解决办法
6244
查看次数

翻译多种语言

我的英语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但没有语言环境的麻烦?


编辑

这里是建议的答案解决方案:

php locale translation gettext internationalization

9
推荐指数
1
解决办法
1784
查看次数

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如何识别同义词的正确翻译?

php gettext

9
推荐指数
1
解决办法
1873
查看次数

OCaml中的Gettext支持

我想让i18n使用我的OCaml代码(将短信翻译成用户的首选语言).大多数可翻译字符串是一小组函数之一的第一个非标记参数.例如

  • 文字输出: print "Feed '%s':" new_feed
  • 错误: raise_safe "Local feed file '%s' does not exist" path
  • 记录: log_warning ~ex "Error checking signature for %s" feed

在GUI代码中,也~label应该提取参数中的字符串.

有什么方法可以自动提取这些字符串吗?为了使事情变得更有趣,我也使用了一些语法扩展(例如Lwt).

我看到有一个ocaml-gettext包,但是:

  • 似乎只支持一组固定的功能(f_,s_,等).
  • OPAM说没有用它.
  • 它无法安装(必须首先取消设置$NAME),然后也无法卸载,这也表明它没有被大量使用.

人们实际使用/推荐什么?

ocaml gettext internationalization

9
推荐指数
1
解决办法
206
查看次数

中文本地化不适用于PHP gettext扩展,因为它适用于英语

我已经使用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,就像在淘宝网上一样,浏览器设置了正确的字符集. …

php apache localization gettext chinese-locale

9
推荐指数
1
解决办法
569
查看次数

你能把ES6模板字符串"愚蠢"到普通字符串吗?

我必须解决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

9
推荐指数
1
解决办法
1428
查看次数

python gettext错误:无法隐式地将'__proxy__'对象转换为str

我突然在以前工作的代码中遇到了一个奇怪的错误.我最近从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一起工作得很好.这是一个错误吗?

python django gettext

9
推荐指数
1
解决办法
2114
查看次数