如果启动器项的本地化界面名称不在 .desktop 文件中,那么它们在哪里定义?

如果启动器项的本地化界面名称不在 .desktop 文件中,那么它们在哪里定义?

启动器的命名

- 在多数情况下...
界面在大多数情况下,启动器的名称在(第一)行中定义,以以下内容开头:

Name=

其对应.desktop文件:

在此处输入图片描述

- 从 .desktop 文件进行本地化命名
为了本地化命名,一些应用程序(例如 Thunderbird)使用具有特定语言名称的详尽列表:

在此处输入图片描述


- 但是如果 .desktop 文件中没有定义本地化名称,那么它在哪里定义呢?
然而在某些情况下,图标的名称不同,但文件中却没有该名称.desktop

在此处输入图片描述

这个名字和文件有什么关联.desktop

语境

几年前,我写了QLE 快速列表编辑器。该版本使用了国际界面名称。我现在正在重写它Gtk+,但需要找到一种可靠的方法来显示本地化的启动器名称。

笔记

毫无疑问,这个问题与这个,但并不完全是重复的;我想知道信息存储在哪里,以便自己获取本地化名称。


编辑

作为证明, 的内容gnome-screenshot.desktop,名为舍尔马夫德鲁克本地化(翻译:截屏)文件中没有字符串“Scermafdruk”的踪迹……

[澳大利亚]

[Desktop Entry]
Name=Screenshot
Comment=Save images of your screen or individual windows
Keywords=snapshot;capture;print;
Exec=gnome-screenshot --interactive
Terminal=false
Type=Application
Icon=applets-screenshooter
StartupNotify=true
Categories=GTK;GNOME;Utility;
NotShowIn=KDE;
X-GNOME-Bugzilla-Bugzilla=GNOME
X-GNOME-Bugzilla-Product=gnome-utils
X-GNOME-Bugzilla-Component=screenshot
Actions=Screen;Window;Area
X-Ubuntu-Gettext-Domain=gnome-screenshot

[Desktop Action Screen]
Name=Take a Screenshot of the Whole Screen
Exec=gnome-screenshot
OnlyShowIn=Unity;

[Desktop Action Window]
Name=Take a Screenshot of the Current Window
Exec=gnome-screenshot -w
OnlyShowIn=Unity;

[Desktop Action Area]
Name=Take a Screenshot of a Selected Area
Exec=gnome-screenshot -a
OnlyShowIn=Unity;

答案1

正如您在测试时自己发现的那样,导致这种行为的条目是:

X-Ubuntu-Gettext-Domain=gnome-screenshot

https://wiki.ubuntu.com/UbuntuDevelopment/Internationalisation/Packaging

桌面条目

翻译桌面条目(.desktop 文件)也被剥离出来并包含在语言包中。

与其他发行版(目前 OpenSUSE 除外)的做法相反,翻译不应放在 .desktop 文件本身中(静态翻译),而是放在应用程序的同一个 .mo 文件中,然后在运行时从该文件加载。我们这样做是为了能够在 Launchpad 中翻译它们,并将它们放在语言包中,以便 Ubuntu 翻译人员可以编辑和更新它们。

运行时加载由补丁完成补丁 glib,承认X-Ubuntu-Gettext-域 附加键我们添加到所有 Ubuntu .desktop 文件中,并在加载它们时添加 gettext 支持。请注意,如果 .desktop 文件已包含翻译,则将优先使用这些静态翻译。

X-Ubuntu-Gettext-Domain= 键的添加是在打包过程中通过包构建系统自动完成的,或者(越来越少见)通过补丁完成。

换句话说,这意味着如果桌面文件中的其他方式无法提供翻译,glibkdelibUbuntu 上的修补版本将使用密钥在运行时添加 gettext 支持,该翻译是从应用程序的 .mo 文件中检索的。X-Ubuntu-Gettext-Domain

还要注意,这意味着对密钥的支持X-Ubuntu-Gettext-Domain是特定于 Ubuntu 的实现,并且使用的桌面文件只能在使用相同修补版本的/ 的X-Ubuntu-Gettext-Domain发行版之间移植。glibkdelib

相关内容