mirror of
https://github.com/labwc/labwc.git
synced 2025-10-29 05:40:24 -04:00
nls: add native language support
- adds labwc.pot and po files for de, es, it and sv - added notes in NEWS.md and CONTRIBUTING.md - addresses #269 - conditional upon `msgfmt` being installed - can be disabled at build time
This commit is contained in:
parent
e75af14d3d
commit
cbed8acf01
15 changed files with 301 additions and 10 deletions
|
|
@ -30,8 +30,12 @@ line with wlroots.
|
||||||
With the introduction of the scene-graph API, some wlroots functions also use
|
With the introduction of the scene-graph API, some wlroots functions also use
|
||||||
node coordinates (nx, ny) but we prefer (sx, sy) where possible.
|
node coordinates (nx, ny) but we prefer (sx, sy) where possible.
|
||||||
|
|
||||||
|
## Native Language Support
|
||||||
|
|
||||||
|
Translators can add their `MY_LOCALE.po` files to the `po` directory
|
||||||
|
based on `po/labwc.pot` and issue a pull request.
|
||||||
|
|
||||||
|
|
||||||
[coding style]: https://git.sr.ht/~sircmpwn/cstyle
|
[coding style]: https://git.sr.ht/~sircmpwn/cstyle
|
||||||
[commit messages]: https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/CONTRIBUTING.md#commit-messages
|
[commit messages]: https://gitlab.freedesktop.org/wlroots/wlroots/-/blob/master/CONTRIBUTING.md#commit-messages
|
||||||
[checkpatch.pl]: https://github.com/johanmalm/checkpatch.pl
|
[checkpatch.pl]: https://github.com/johanmalm/checkpatch.pl
|
||||||
|
|
||||||
|
|
|
||||||
3
NEWS.md
3
NEWS.md
|
|
@ -27,7 +27,8 @@ that branch.
|
||||||
This release contains significant refactoring to use the wlroots
|
This release contains significant refactoring to use the wlroots
|
||||||
scene-graph API, particularly src/output.c, server-side-decoration
|
scene-graph API, particularly src/output.c, server-side-decoration
|
||||||
and the layer-shell implementation. Many thanks to @Consolatis for some
|
and the layer-shell implementation. Many thanks to @Consolatis for some
|
||||||
heavy lifting with this.
|
heavy lifting with this. Native language support has been added by
|
||||||
|
@01micko.
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -48,6 +48,13 @@
|
||||||
#include "config/keybind.h"
|
#include "config/keybind.h"
|
||||||
#include "config/rcxml.h"
|
#include "config/rcxml.h"
|
||||||
#include "ssd.h"
|
#include "ssd.h"
|
||||||
|
#if HAVE_NLS
|
||||||
|
#include <libintl.h>
|
||||||
|
#include <locale.h>
|
||||||
|
#define _ gettext
|
||||||
|
#else
|
||||||
|
#define _(s) (s)
|
||||||
|
#endif
|
||||||
|
|
||||||
#define XCURSOR_DEFAULT "left_ptr"
|
#define XCURSOR_DEFAULT "left_ptr"
|
||||||
#define XCURSOR_SIZE 24
|
#define XCURSOR_SIZE 24
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,15 @@ have_xwayland = xcb.found() and wlroots_has_xwayland
|
||||||
conf_data = configuration_data()
|
conf_data = configuration_data()
|
||||||
conf_data.set10('HAVE_XWAYLAND', have_xwayland)
|
conf_data.set10('HAVE_XWAYLAND', have_xwayland)
|
||||||
|
|
||||||
|
msgfmt = find_program('msgfmt', required: get_option('nls'))
|
||||||
|
if msgfmt.found()
|
||||||
|
source_root = meson.current_source_dir()
|
||||||
|
conf_data.set('HAVE_NLS', 1)
|
||||||
|
subdir('po')
|
||||||
|
else
|
||||||
|
conf_data.set('HAVE_NLS', 0)
|
||||||
|
endif
|
||||||
|
|
||||||
labwc_inc = include_directories('include')
|
labwc_inc = include_directories('include')
|
||||||
|
|
||||||
subdir('protocols')
|
subdir('protocols')
|
||||||
|
|
|
||||||
|
|
@ -1,2 +1,3 @@
|
||||||
option('man-pages', type: 'feature', value: 'auto', description: 'Generate and install man pages')
|
option('man-pages', type: 'feature', value: 'auto', description: 'Generate and install man pages')
|
||||||
option('xwayland', type: 'feature', value: 'auto', description: 'Enable support for X11 applications')
|
option('xwayland', type: 'feature', value: 'auto', description: 'Enable support for X11 applications')
|
||||||
|
option('nls', type: 'feature', value: 'auto', description: 'Enable native language support')
|
||||||
|
|
|
||||||
1
po/LINGUAS
Normal file
1
po/LINGUAS
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
de es it sv
|
||||||
1
po/POTFILES.in
Normal file
1
po/POTFILES.in
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
src/menu/menu.c
|
||||||
50
po/de.po
Normal file
50
po/de.po
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
# Labwc pot file
|
||||||
|
# Copyright (C) 2022
|
||||||
|
# This file is distributed under the same license as the labwc package.
|
||||||
|
# FIRST AUTHOR <https://github.com/Consolatis>, 2022.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: labwc\n"
|
||||||
|
"Report-Msgid-Bugs-To: https://github.com/labwc/labwc/issues\n"
|
||||||
|
"POT-Creation-Date: 2022-04-30 16:43+1000\n"
|
||||||
|
"PO-Revision-Date: 2022-04-30 16:50+1000\n"
|
||||||
|
"Last-Translator: Consolatis <https://github.com/Consolatis>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"Language: German\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:428
|
||||||
|
msgid "Reconfigure"
|
||||||
|
msgstr "Rekonfigurieren"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:430
|
||||||
|
msgid "Exit"
|
||||||
|
msgstr "Beenden"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:446
|
||||||
|
msgid "Minimize"
|
||||||
|
msgstr "Minimieren"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:448
|
||||||
|
msgid "Maximize"
|
||||||
|
msgstr "Maximieren"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:450
|
||||||
|
msgid "Fullscreen"
|
||||||
|
msgstr "Vollbild"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:452
|
||||||
|
msgid "Decorations"
|
||||||
|
msgstr "Dekorationen"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:454
|
||||||
|
msgid "AlwaysOnTop"
|
||||||
|
msgstr "Immer im Vordergrund"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:456
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "Schließen"
|
||||||
50
po/es.po
Normal file
50
po/es.po
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
# Labwc pot file
|
||||||
|
# Copyright (C) 2022
|
||||||
|
# This file is distributed under the same license as the labwc package.
|
||||||
|
# FIRST AUTHOR <01micko@gmail.com>, 2022.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: labwc\n"
|
||||||
|
"Report-Msgid-Bugs-To: https://github.com/labwc/labwc/issues\n"
|
||||||
|
"POT-Creation-Date: 2022-04-30 16:43+1000\n"
|
||||||
|
"PO-Revision-Date: 2022-04-30 16:50+1000\n"
|
||||||
|
"Last-Translator: Mick Amadio <01micko@gmail.com>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"Language: Spanish\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:428
|
||||||
|
msgid "Reconfigure"
|
||||||
|
msgstr "Reconfigurar"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:430
|
||||||
|
msgid "Exit"
|
||||||
|
msgstr "Salir"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:446
|
||||||
|
msgid "Minimize"
|
||||||
|
msgstr "Minimizar"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:448
|
||||||
|
msgid "Maximize"
|
||||||
|
msgstr "Maximizar"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:450
|
||||||
|
msgid "Fullscreen"
|
||||||
|
msgstr "Pantalla completa"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:452
|
||||||
|
msgid "Decorations"
|
||||||
|
msgstr "Decoraciones"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:454
|
||||||
|
msgid "AlwaysOnTop"
|
||||||
|
msgstr "Siempre encima"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:456
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "Cerrar"
|
||||||
50
po/it.po
Normal file
50
po/it.po
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
# Labwc pot file
|
||||||
|
# Copyright (C) 2022
|
||||||
|
# This file is distributed under the same license as the labwc package.
|
||||||
|
# FIRST AUTHOR <01micko@gmail.com>, 2022.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: labwc\n"
|
||||||
|
"Report-Msgid-Bugs-To: https://github.com/labwc/labwc/issues\n"
|
||||||
|
"POT-Creation-Date: 2022-04-30 16:43+1000\n"
|
||||||
|
"PO-Revision-Date: 2022-04-30 16:50+1000\n"
|
||||||
|
"Last-Translator: Mick Amadio <01micko@gmail.com>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"Language: Italian\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:428
|
||||||
|
msgid "Reconfigure"
|
||||||
|
msgstr "Riconfigurare"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:430
|
||||||
|
msgid "Exit"
|
||||||
|
msgstr "Uscita"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:446
|
||||||
|
msgid "Minimize"
|
||||||
|
msgstr "Riduci"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:448
|
||||||
|
msgid "Maximize"
|
||||||
|
msgstr "Ingrandisci"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:450
|
||||||
|
msgid "Fullscreen"
|
||||||
|
msgstr "Schermo intero"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:452
|
||||||
|
msgid "Decorations"
|
||||||
|
msgstr "Decorazioni"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:454
|
||||||
|
msgid "AlwaysOnTop"
|
||||||
|
msgstr "Sempre sopra"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:456
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "Chiudi"
|
||||||
50
po/labwc.pot
Normal file
50
po/labwc.pot
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
# Labwc pot file
|
||||||
|
# Copyright (C) 2022
|
||||||
|
# This file is distributed under the same license as the labwc package.
|
||||||
|
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: labwc\n"
|
||||||
|
"Report-Msgid-Bugs-To: https://github.com/labwc/labwc/issues\n"
|
||||||
|
"POT-Creation-Date: 2022-04-30 16:43+1000\n"
|
||||||
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"Language: \n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:428
|
||||||
|
msgid "Reconfigure"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/menu/menu.c:430
|
||||||
|
msgid "Exit"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/menu/menu.c:446
|
||||||
|
msgid "Minimize"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/menu/menu.c:448
|
||||||
|
msgid "Maximize"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/menu/menu.c:450
|
||||||
|
msgid "Fullscreen"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/menu/menu.c:452
|
||||||
|
msgid "Decorations"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/menu/menu.c:454
|
||||||
|
msgid "AlwaysOnTop"
|
||||||
|
msgstr ""
|
||||||
|
|
||||||
|
#: src/menu/menu.c:456
|
||||||
|
msgid "Close"
|
||||||
|
msgstr ""
|
||||||
12
po/meson.build
Normal file
12
po/meson.build
Normal file
|
|
@ -0,0 +1,12 @@
|
||||||
|
i18n = import('i18n')
|
||||||
|
add_project_arguments('-DGETTEXT_PACKAGE="' + meson.project_name() + '"',
|
||||||
|
'-DLOCALEDIR="' + get_option('prefix') / get_option('localedir') + '"',
|
||||||
|
language:'c')
|
||||||
|
i18n.gettext(meson.project_name(),
|
||||||
|
args: ['--directory=' + source_root,
|
||||||
|
'--add-comments=TRANSLATORS',
|
||||||
|
'--no-location',
|
||||||
|
'--keyword=_',
|
||||||
|
'--msgid-bugs=https://github.com/labwc/labwc/issues'],
|
||||||
|
preset: 'glib'
|
||||||
|
)
|
||||||
50
po/sv.po
Normal file
50
po/sv.po
Normal file
|
|
@ -0,0 +1,50 @@
|
||||||
|
# Labwc pot file
|
||||||
|
# Copyright (C) 2022
|
||||||
|
# This file is distributed under the same license as the labwc package.
|
||||||
|
# FIRST AUTHOR <jgm323@gmail.com>, 2022.
|
||||||
|
#
|
||||||
|
#, fuzzy
|
||||||
|
msgid ""
|
||||||
|
msgstr ""
|
||||||
|
"Project-Id-Version: labwc\n"
|
||||||
|
"Report-Msgid-Bugs-To: https://github.com/labwc/labwc/issues\n"
|
||||||
|
"POT-Creation-Date: 2022-04-30 16:43+1000\n"
|
||||||
|
"PO-Revision-Date: 2022-04-30 16:50+1000\n"
|
||||||
|
"Last-Translator: Johan Malm <jgm323@gmail.com\n"
|
||||||
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
"Language: Swedish\n"
|
||||||
|
"MIME-Version: 1.0\n"
|
||||||
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:428
|
||||||
|
msgid "Reconfigure"
|
||||||
|
msgstr "Konfigurera om"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:430
|
||||||
|
msgid "Exit"
|
||||||
|
msgstr "Utgång"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:446
|
||||||
|
msgid "Minimize"
|
||||||
|
msgstr "Minimera"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:448
|
||||||
|
msgid "Maximize"
|
||||||
|
msgstr "Maximera"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:450
|
||||||
|
msgid "Fullscreen"
|
||||||
|
msgstr "Fullskärm"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:452
|
||||||
|
msgid "Decorations"
|
||||||
|
msgstr "Dekorationer"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:454
|
||||||
|
msgid "AlwaysOnTop"
|
||||||
|
msgstr "Alltid överst"
|
||||||
|
|
||||||
|
#: src/menu/menu.c:456
|
||||||
|
msgid "Close"
|
||||||
|
msgstr "Stäng"
|
||||||
|
|
@ -32,6 +32,11 @@ usage(void)
|
||||||
int
|
int
|
||||||
main(int argc, char *argv[])
|
main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
#if HAVE_NLS
|
||||||
|
setlocale(LC_ALL, "");
|
||||||
|
bindtextdomain(GETTEXT_PACKAGE, LOCALEDIR);
|
||||||
|
textdomain(GETTEXT_PACKAGE);
|
||||||
|
#endif
|
||||||
char *startup_cmd = NULL;
|
char *startup_cmd = NULL;
|
||||||
char *config_file = NULL;
|
char *config_file = NULL;
|
||||||
enum wlr_log_importance verbosity = WLR_ERROR;
|
enum wlr_log_importance verbosity = WLR_ERROR;
|
||||||
|
|
|
||||||
|
|
@ -425,9 +425,9 @@ menu_init_rootmenu(struct server *server)
|
||||||
menu = menu_create(server, "root-menu", "");
|
menu = menu_create(server, "root-menu", "");
|
||||||
}
|
}
|
||||||
if (wl_list_empty(&menu->menuitems)) {
|
if (wl_list_empty(&menu->menuitems)) {
|
||||||
current_item = item_create(menu, "Reconfigure");
|
current_item = item_create(menu, _("Reconfigure"));
|
||||||
fill_item("name.action", "Reconfigure");
|
fill_item("name.action", "Reconfigure");
|
||||||
current_item = item_create(menu, "Exit");
|
current_item = item_create(menu, _("Exit"));
|
||||||
fill_item("name.action", "Exit");
|
fill_item("name.action", "Exit");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -443,17 +443,17 @@ menu_init_windowmenu(struct server *server)
|
||||||
menu = menu_create(server, "client-menu", "");
|
menu = menu_create(server, "client-menu", "");
|
||||||
}
|
}
|
||||||
if (wl_list_empty(&menu->menuitems)) {
|
if (wl_list_empty(&menu->menuitems)) {
|
||||||
current_item = item_create(menu, "Minimize");
|
current_item = item_create(menu, _("Minimize"));
|
||||||
fill_item("name.action", "Iconify");
|
fill_item("name.action", "Iconify");
|
||||||
current_item = item_create(menu, "Maximize");
|
current_item = item_create(menu, _("Maximize"));
|
||||||
fill_item("name.action", "ToggleMaximize");
|
fill_item("name.action", "ToggleMaximize");
|
||||||
current_item = item_create(menu, "Fullscreen");
|
current_item = item_create(menu, _("Fullscreen"));
|
||||||
fill_item("name.action", "ToggleFullscreen");
|
fill_item("name.action", "ToggleFullscreen");
|
||||||
current_item = item_create(menu, "Decorations");
|
current_item = item_create(menu, _("Decorations"));
|
||||||
fill_item("name.action", "ToggleDecorations");
|
fill_item("name.action", "ToggleDecorations");
|
||||||
current_item = item_create(menu, "AlwaysOnTop");
|
current_item = item_create(menu, _("AlwaysOnTop"));
|
||||||
fill_item("name.action", "ToggleAlwaysOnTop");
|
fill_item("name.action", "ToggleAlwaysOnTop");
|
||||||
current_item = item_create(menu, "Close");
|
current_item = item_create(menu, _("Close"));
|
||||||
fill_item("name.action", "Close");
|
fill_item("name.action", "Close");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue