【问题标题】:i18n.merge_file can't translate desktop filei18n.merge_file 无法翻译桌面文件
【发布时间】:2020-06-21 21:55:51
【问题描述】:

我正在尝试将 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) 但也尝试遵循“侏儒之眼”meson.build。没有运气。
github 上的当前代码版本。

编辑: 留下可以使用的 sn-p,因为介子文档不包括使用 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')

【问题讨论】:

    标签: meson-build


    【解决方案1】:

    这不起作用的原因是这不是 gettext 的有效输入:) _Name_Comment 字段开头的下划线是因为 intltool,另一个类似于 gettext 的翻译工具。要解决此问题,只需删除这些字段的下划线即可。这适用于.desktop 文件。更多信息,你也可以从https://wiki.gnome.org/MigratingFromIntltoolToGettext得到一些提示

    附带说明,您不应该直接安装到“/usr/share/applications”,因为有人可能想要选择自定义前缀或数据目录(有关更多信息,请参阅Meson - Built-in options)。最好使用install_dir: get_option('datadir') / 'applications'

    【讨论】:

    • 非常感谢,我已经完成了 custom_target 的使用,因为最初我不想接触现有的 autotools 脚本。
    猜你喜欢
    • 2018-04-16
    • 2013-04-23
    • 2015-01-09
    • 1970-01-01
    • 2021-01-13
    • 1970-01-01
    • 2011-11-28
    • 2016-11-15
    • 2014-08-01
    相关资源
    最近更新 更多