i18n.merge_file 无法翻译桌面文件
i18n.merge_file can't translate desktop file
我正在尝试将 autotools 项目转换为 Meson 并停留在桌面文件的翻译上。
创建所有.mo文件没有问题。
根据 manual.
,POTFILES 和 LINGUAS 位于 'po' 文件夹中
唯一的问题是 i18n.merge_file 没有生成带有翻译的文件。
我的 meson.build 看起来像
...
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;
ninja 安装后输出为:
[Desktop Entry]
Icon=clipit-trayicon-offline
Exec=clipit
Terminal=false
Type=Application
Categories=GTK;GNOME;Application;Utility;
它基于(https://mesonbuild.com/Porting-from-autotools.html)但也尝试遵循'eye of gnome' 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')
这不起作用的原因是这不是 gettext 的有效输入:)
_Name
和_Comment
字段开头的下划线是因为intltool
,另一个类似于gettext的翻译工具。要解决这个问题,只需删除这些字段的下划线即可。这将适用于 .desktop
个文件。有关更多信息,您还可以从 https://wiki.gnome.org/MigratingFromIntltoolToGettext
中获取一些提示
附带说明一下,您不应直接安装到“/usr/share/applications”,因为有人可能想要选择自定义前缀或数据目录(有关详细信息,请参阅 Meson - Built-in options)。最好用install_dir: get_option('datadir') / 'applications'
.
我正在尝试将 autotools 项目转换为 Meson 并停留在桌面文件的翻译上。
创建所有.mo文件没有问题。
根据 manual.
,POTFILES 和 LINGUAS 位于 'po' 文件夹中
唯一的问题是 i18n.merge_file 没有生成带有翻译的文件。
我的 meson.build 看起来像
...
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;
ninja 安装后输出为:
[Desktop Entry]
Icon=clipit-trayicon-offline
Exec=clipit
Terminal=false
Type=Application
Categories=GTK;GNOME;Application;Utility;
它基于(https://mesonbuild.com/Porting-from-autotools.html)但也尝试遵循'eye of gnome' 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')
这不起作用的原因是这不是 gettext 的有效输入:)
_Name
和_Comment
字段开头的下划线是因为intltool
,另一个类似于gettext的翻译工具。要解决这个问题,只需删除这些字段的下划线即可。这将适用于 .desktop
个文件。有关更多信息,您还可以从 https://wiki.gnome.org/MigratingFromIntltoolToGettext
附带说明一下,您不应直接安装到“/usr/share/applications”,因为有人可能想要选择自定义前缀或数据目录(有关详细信息,请参阅 Meson - Built-in options)。最好用install_dir: get_option('datadir') / 'applications'
.