Anaconda环境下PyGObject更改locale设置不生效问题求助
问题根因
conda-forge 源提供的 gtk3 包默认未内置多语言翻译文件,和 MSYS2 预打包全语言资源的构建规则不同,因此即使系统 locale 配置正确,GTK 原生组件也无法加载对应的本地化文本。
解决步骤
- 第一步:安装 GTK3 语言包
直接从 conda-forge 通道安装包含全语言翻译的资源包:
conda install -c conda-forge gtk3-lang
- 第二步:修正代码内环境变量配置
安装语言包后如果仍不生效,需要在导入 PyGObject 相关模块前,显式指定 GTK 加载翻译的路径以及语言环境变量:
import os import locale # 配置西班牙语环境变量 os.environ['LANG'] = 'es_ES.UTF-8' os.environ['LC_ALL'] = 'es_ES.UTF-8' # 自动获取当前 conda 环境路径,指定 GTK 翻译文件加载前缀 conda_prefix = os.environ.get('CONDA_PREFIX', '') if conda_prefix: os.environ['GTK_DATA_PREFIX'] = conda_prefix # 初始化 locale 配置 locale.setlocale(locale.LC_ALL, '') # 之后再导入 GI 相关模块 import gi gi.require_version('Gtk', '3.0') from gi.repository import Gtk
- 第三步:验证配置
运行测试代码确认原生组件显示语言:
test_dialog = Gtk.FileChooserDialog( title="Seleccionar archivo", parent=None, action=Gtk.FileChooserAction.OPEN ) test_dialog.add_buttons( Gtk.STOCK_CANCEL, Gtk.ResponseType.CANCEL, Gtk.STOCK_OPEN, Gtk.ResponseType.OK ) test_dialog.run() test_dialog.destroy()
如果仍显示英文,可检查 $CONDA_PREFIX/share/locale/es/LC_MESSAGES 目录下是否存在 gtk30.mo 文件,确认西班牙语翻译文件已正确安装。
内容的提问来源于stack exchange,提问作者anvaro98
相关产品推荐
相关产品推荐

