我正在尝试将自动工具项目转换为Meson并卡在桌面文件的翻译上.
创建所有.mo文件没有问题.
POTFILES和LINGUAS按照手册在"po"文件夹中.
唯一的问题是i18n.merge_file没有生成带有翻译的文件。 我的介子构建看起来像
...
package = meson.project_name()
i18n = import('i18n')
add_project_arguments('-DGETTEXT_PACKAGE="@0@"'.format(package), language:'c')
subdir('po')
i18n.merge_file(
input: 'data/clipit.desktop.in',
output: 'clipit.desktop',
type: 'desktop',
po_dir: 'po',
install: true,
install_dir: '/usr/share/applications'
)
...
po/meson.build
i18n.gettext(package, preset: 'glib')
clipit.desktop.in
[Desktop Entry]
_Name=ClipIt
_Comment=Clipboard Manager
Icon=clipit-trayicon-offline
Exec=clipit
Terminal=false
Type=Application
Categories=GTK;GNOME;Application;Utility;
忍者安装后输出为:
[Desktop Entry]
Icon=clipit-trayicon-offline
Exec=clipit
Terminal=false
Type=Application
Categories=GTK;GNOME;Application;Utility;
它基于(https://mesonbuild.com/Porting-from-autotools.html(,但也试图遵循"侏儒之眼"meson.build。没有运气.
github上当前版本的代码。
编辑:留下可以使用的片段,因为介子文档没有涵盖使用 intltool。
custom_target('clipit.desktop',
input : 'data/clipit.desktop.in',
output : 'clipit.desktop',
command: [intltool_merge, '-d', '-u', join_paths(meson.source_root(), 'po'), '@INPUT@', '@OUTPUT@'],
install : true,
install_dir : get_option('datadir') / 'applications')
这不起作用的原因是这不是获取文本的有效输入:)_Name
和_Comment
字段开头的下划线是因为intltool
,另一种类似于 gettext 的翻译工具。要解决此问题,只需删除这些字段的下划线即可。这将适用于.desktop
文件。有关更多信息,您还可以从 https://wiki.gnome.org/MigratingFromIntltoolToGettext 中获取一些提示
附带说明一下,您不应该直接安装到"/usr/share/applications",因为有人可能想要选择自定义前缀或 datadir(有关详细信息,请参阅 Meson - 内置选项(。最好使用install_dir: get_option('datadir') / 'applications'
.