You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GTK文件选择器对话框是否自带按钮与标题的本地化默认字符串?

GTK文件选择器的本地化默认文本问题

背景

  • Windows和macOS的系统内置文件选择器,无需手动设置按钮或标题文本,会自动根据系统语言完成本地化。
  • Linux下多数应用使用GTK,但GTK文件选择器要求开发者手动传入按钮和标题文本,示例代码如下:
dialog = gtk_file_chooser_dialog_new ("Open File",
                                      parent_window,
                                      action,
                                      "_Cancel",
                                      GTK_RESPONSE_CANCEL,
                                      "_Open",
                                      GTK_RESPONSE_ACCEPT,
                                      NULL);

若留空或设为NULL,按钮和标题将无任何文本,不会显示默认值。

问题

GTK是否自带一套本地化的默认按钮和标题文本供开发者调用?

补充说明

  • 不希望使用gettext:该方案需要应用自行维护各语言翻译库,无法覆盖GTK支持的所有语言。
  • GTK消息对话框(如gtk_message_dialog_new)可通过传入GTK_BUTTONS_OK_CANCEL这类常量,在用户安装对应语言包后自动显示翻译后的按钮文本,但文件选择器似乎没有类似机制。

答案

GTK确实提供了获取本地化默认文本的方式,你可以借助GTK内置的翻译资源,通过对应API获取系统已安装语言包中的标准文本,无需自行维护翻译文件。

不同GTK版本的实现方式

GTK 2

使用gtk_stock_lookup()获取stock项目的本地化标签:

// 获取"打开"按钮的本地化文本
const gchar *open_label = gtk_stock_lookup(GTK_STOCK_OPEN)->label;
// 获取"取消"按钮的本地化文本
const gchar *cancel_label = gtk_stock_lookup(GTK_STOCK_CANCEL)->label;

// 创建对话框时传入这些文本
dialog = gtk_file_chooser_dialog_new(gtk_stock_lookup(GTK_STOCK_OPEN)->label,
                                      parent_window,
                                      GTK_FILE_CHOOSER_ACTION_OPEN,
                                      cancel_label, GTK_RESPONSE_CANCEL,
                                      open_label, GTK_RESPONSE_ACCEPT,
                                      NULL);

GTK 3+

GTK 3开始逐步废弃stock items,推荐通过预定义动作获取本地化标签:

// 获取"打开"动作的本地化标签
GActionGroup *app_actions = gtk_application_get_action_group(GTK_APPLICATION(app), "win");
GAction *open_action = g_action_group_get_action(app_actions, "open");
const gchar *open_label = gtk_action_get_label(GTK_ACTION(open_action));

// 取消按钮可直接调用GTK内置翻译
const gchar *cancel_label = _("Cancel");

这里的_()会调用GTK的内置翻译域,只要系统安装了对应语言包,就能自动返回本地化文本。

GTK 4

GTK 4中GtkFileChooserDialog被GtkFileChooserNative替代,它会优先使用桌面环境的原生文件选择器(自动继承系统本地化文本);若回退到GTK自带的文件选择器,仍可通过上述方式获取内置翻译文本。

内容的提问来源于stack exchange,提问作者Bernard

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 16:16:20