首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >pygtk+glade+localization

pygtk+glade+localization
EN

Stack Overflow用户
提问于 2012-11-15 10:20:22
回答 3查看 1.6K关注 0票数 7

默认地区在我的系统(Linux) - en_US。当我将地区设置更改为俄语(LANG=ru_RU ./show_form.py)时,python字符串"hello to me“将正确显示(在控制台中),而其他(glade表单)则以英语显示。(LANG=ru_rU.utf-8.Show_form.py-相同的结果)。

我做错了什么?

例如,我有简单的python代码(show_form.py):

代码语言:javascript
运行
复制
#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pygtk, gtk, gtk.glade
import locale, gettext

APP="show_form"
DIR="locale"

locale.setlocale(locale.LC_ALL, '')
gettext.bindtextdomain(APP, DIR)
gettext.textdomain(APP)
lang = gettext.translation(APP, DIR)
_ = lang.gettext
gettext.install(APP, unicode=False, codeset='utf-8', localedir=DIR)
print _("hello to me")

wTree = gtk.glade.XML("localize.glade")
gtk.glade.bindtextdomain(APP, DIR)

window = wTree.get_widget("window1")
window.connect("delete_event", lambda wid, we: gtk.main_quit())
window.show_all()
gtk.main()

和一些语言的.mo文件。.po文件如下:

代码语言:javascript
运行
复制
# Russian translations for PACKAGE package.                                     
# Copyright (C) 2012 THE PACKAGE'S COPYRIGHT HOLDER                             
# This file is distributed under the same license as the PACKAGE package.       
#  <asc@grodno>, 2012.                                                          
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-11-14 13:54+0300\n"
"PO-Revision-Date: 2012-11-14 13:58+0300\n"
"Last-Translator:  <aaa@bbb>\n"
"Language-Team: Russian\n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 16bit\n"
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"

#: show_form.py:14
msgid "hello to me"
msgstr "привет мне"

#: localize.glade.h:1
msgid "label text"
msgstr "метка"

#: localize.glade.h:2
msgid "button text"
msgstr "кнопка"

#: localize.glade.h:3
msgid "checkbutton text"
msgstr "галочка"

和en_US文件(像这样使用不同的msgstr)。还有带有标签、按钮和复选框的小格形。

Upd:

我的.mo文件创建字符串:

代码语言:javascript
运行
复制
intltool-extract --type=gettext/glade localize.glade

xgettext --language=Python --keyword=_ --keyword=N_ --output=show_form.pot show_form.py localize.glade.h

msginit --locale=ru --input=show_form.pot
msginit --locale=en_US --input=show_form.pot
msginit --locale=de_DE --input=show_form.pot

我在此之后更正了.po文件。

最后:

代码语言:javascript
运行
复制
msgfmt ru.po -o locale/ru/LC_MESSAGES/show_form.mo
msgfmt en_US.po -o locale/en_US/LC_MESSAGES/show_form.mo
msgfmt de.po -o locale/de/LC_MESSAGES/show_form.mo

Upd2:解决方案

代码语言:javascript
运行
复制
-wTree = gtk.glade.XML("localize.glade")
 gtk.glade.bindtextdomain(APP, DIR)
+wTree = gtk.glade.XML("localize.glade", "window1", APP)
EN

回答 3

Stack Overflow用户

发布于 2012-11-15 14:50:14

您需要使用[计]工具来翻译Glade文件。

票数 1
EN

Stack Overflow用户

发布于 2020-05-23 21:34:47

这在gtk2上很好,但是如果你在使用GTK3,事情会变得很混乱.

看一看:

使用区域设置绑定glade i18n

实际的标题是不同的,但它能起作用。我的股票按钮仍然有问题,但我的应用程序的其余部分开始是i18ned。

票数 0
EN

Stack Overflow用户

发布于 2021-09-06 14:40:13

来自。您的python代码似乎排序错误。

代码语言:javascript
运行
复制
lang = gettext.translation(APP, DIR)
lang.install(APP, unicode=False, codeset='utf-8', localedir=DIR)
_ = lang.gettext
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13395433

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档