[gimp] extensions, po-plug-ins: demo extensions use the new i18n logic.
- From: Jehan <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] extensions, po-plug-ins: demo extensions use the new i18n logic.
- Date: Sun, 5 Jun 2022 00:00:08 +0000 (UTC)
commit 3e57f2f4821752020a72cf4f0d5fddaa7acb75ac
Author: Jehan <jehan girinstud io>
Date: Thu May 26 01:03:07 2022 +0200
extensions, po-plug-ins: demo extensions use the new i18n logic.
Since these are demos, for the sake of showing how the localization
works, let's localize the goat-exercises with a locally installed
catalog.
Note that actually use the gimp30-std-plug-ins catalog, simply I copy it
in the plug-in folder and rename it as org.gimp.extension.goat-exercises
domain.
As a consequence:
- The C plug-in does not need the INIT_I18N anymore, which was
specifically for the centrally installed catalog and cannot be used by
third-party plug-in developers (so it's not a good demo code).
- I now use GLib.dgettext() for Python instead of the gettext Python
module, because the later won't "catch" the catalog declared in
libgimp.
- The other Goat exercises are now localized correctly, unlike before.
- Just setting GETTEXT_PACKAGE is apparently enough for the Vala
plug-in.
- Lua is untested. Hopefully the code will work.
extensions/goat-exercises/goat-exercise-c.c | 2 --
extensions/goat-exercises/goat-exercise-gjs.js | 16 +++++++++-------
extensions/goat-exercises/goat-exercise-lua.lua | 16 ++++++++++++----
extensions/goat-exercises/goat-exercise-py3.py | 15 +--------------
extensions/goat-exercises/goat-exercise-vala.vala | 6 +++---
extensions/goat-exercises/meson.build | 2 +-
po-plug-ins/meson.build | 7 +++++++
7 files changed, 33 insertions(+), 31 deletions(-)
---
diff --git a/extensions/goat-exercises/goat-exercise-c.c b/extensions/goat-exercises/goat-exercise-c.c
index 43355495e5..3ce9f95e47 100644
--- a/extensions/goat-exercises/goat-exercise-c.c
+++ b/extensions/goat-exercises/goat-exercise-c.c
@@ -142,8 +142,6 @@ goat_run (GimpProcedure *procedure,
GimpPDBStatusType status = GIMP_PDB_SUCCESS;
gint x, y, width, height;
- INIT_I18N();
-
if (n_drawables != 1)
{
GError *error = NULL;
diff --git a/extensions/goat-exercises/goat-exercise-gjs.js b/extensions/goat-exercises/goat-exercise-gjs.js
index e1942de35e..8b3d9d45c9 100755
--- a/extensions/goat-exercises/goat-exercise-gjs.js
+++ b/extensions/goat-exercises/goat-exercise-gjs.js
@@ -44,6 +44,8 @@ ARGV.unshift(System.programInvocationName);
let url = "https://gitlab.gnome.org/GNOME/gimp/blob/master/extensions/goat-exercises/goat-exercise-gjs.js";
+function _(message) { return GLib.dgettext(null, message); }
+
var Goat = GObject.registerClass({
GTypeName: 'Goat',
}, class Goat extends Gimp.PlugIn {
@@ -58,12 +60,12 @@ var Goat = GObject.registerClass({
procedure.set_image_types("*");
procedure.set_sensitivity_mask(Gimp.ProcedureSensitivityMask.DRAWABLE);
- procedure.set_menu_label("Exercise a JavaScript goat");
+ procedure.set_menu_label(_("Exercise a JavaScript goat"));
procedure.set_icon_name(GimpUi.ICON_GEGL);
procedure.add_menu_path ('<Image>/Filters/Development/Goat exercises/');
- procedure.set_documentation("Exercise a goat in the JavaScript language (GJS)",
- "Takes a goat for a walk in Javascript with the GJS interpreter",
+ procedure.set_documentation(_("Exercise a goat in the JavaScript language (GJS)"),
+ _("Takes a goat for a walk in Javascript with the GJS interpreter"),
name);
procedure.set_attribution("Jehan", "Jehan", "2019");
@@ -85,13 +87,13 @@ var Goat = GObject.registerClass({
GimpUi.init("goat-exercise-gjs");
/* TODO: help function and ID. */
let dialog = new GimpUi.Dialog({
- title: "Exercise a goat (JavaScript)",
+ title: _("Exercise a goat (JavaScript)"),
role: "goat-exercise-JavaScript",
use_header_bar: true,
});
- dialog.add_button("_Cancel", Gtk.ResponseType.CANCEL);
- dialog.add_button("_Source", Gtk.ResponseType.APPLY);
- dialog.add_button("_OK", Gtk.ResponseType.OK);
+ dialog.add_button(_("_Cancel"), Gtk.ResponseType.CANCEL);
+ dialog.add_button(_("_Source"), Gtk.ResponseType.APPLY);
+ dialog.add_button(_("_OK"), Gtk.ResponseType.OK);
let geometry = new Gdk.Geometry();
geometry.min_aspect = 0.5;
diff --git a/extensions/goat-exercises/goat-exercise-lua.lua b/extensions/goat-exercises/goat-exercise-lua.lua
index 1af3f44451..a9acfc663d 100755
--- a/extensions/goat-exercises/goat-exercise-lua.lua
+++ b/extensions/goat-exercises/goat-exercise-lua.lua
@@ -33,6 +33,14 @@ local Gdk = lgi.Gdk
local Goat = lgi.package 'Goat'
local Goat = lgi.Goat
+function N_(message)
+ return message;
+end
+
+function _(message)
+ return GLib.dgettext(nil, message);
+end
+
function run(procedure, run_mode, image, drawables, args, run_data)
-- procedure:new_return_values() crashes LGI so we construct the
-- GimpValueArray manually.
@@ -56,13 +64,13 @@ function run(procedure, run_mode, image, drawables, args, run_data)
if run_mode == "INTERACTIVE" then
GimpUi.init("goat-exercise-lua");
local dialog = GimpUi.Dialog {
- title = "Exercise a goat (Lua)",
+ title = N_("Exercise a goat (Lua)"),
role = "goat-exercise-Lua",
use_header_bar = 1
}
- dialog:add_button("_Cancel", Gtk.ResponseType.CANCEL);
- dialog:add_button("_Source", Gtk.ResponseType.APPLY);
- dialog:add_button("_OK", Gtk.ResponseType.OK);
+ dialog:add_button(_("_Cancel"), Gtk.ResponseType.CANCEL);
+ dialog:add_button(_("_Source"), Gtk.ResponseType.APPLY);
+ dialog:add_button(_("_OK"), Gtk.ResponseType.OK);
local geometry = Gdk.Geometry()
geometry.min_aspect = 0.5;
diff --git a/extensions/goat-exercises/goat-exercise-py3.py b/extensions/goat-exercises/goat-exercise-py3.py
index da7c7e58b1..30b026a797 100755
--- a/extensions/goat-exercises/goat-exercise-py3.py
+++ b/extensions/goat-exercises/goat-exercise-py3.py
@@ -24,28 +24,15 @@ from gi.repository import GObject
from gi.repository import GLib
from gi.repository import Gio
-import gettext
import os
import sys
-# Set-up localization for your plug-in with your own text domain.
-# This is complementary to the gimp_plug_in_set_translation_domain()
-# which is only useful for the menu entries inside GIMP interface,
-# whereas the below calls are used for localization within the plug-in.
-textdomain = 'gimp30-std-plug-ins'
-gettext.bindtextdomain(textdomain, Gimp.locale_directory())
-gettext.textdomain(textdomain)
-_ = gettext.gettext
def N_(message): return message
+def _(message): return GLib.dgettext(None, message)
class Goat (Gimp.PlugIn):
## GimpPlugIn virtual methods ##
def do_query_procedures(self):
- # Localization for the menu entries. It has to be called in the
- # query function only.
- self.set_translation_domain(textdomain,
- Gio.file_new_for_path(Gimp.locale_directory()))
-
return [ "plug-in-goat-exercise-python" ]
def do_create_procedure(self, name):
diff --git a/extensions/goat-exercises/goat-exercise-vala.vala
b/extensions/goat-exercises/goat-exercise-vala.vala
index 004d9e18d1..5b81866f1f 100755
--- a/extensions/goat-exercises/goat-exercise-vala.vala
+++ b/extensions/goat-exercises/goat-exercise-vala.vala
@@ -42,9 +42,9 @@ public class Goat : Gimp.PlugIn {
var procedure = new Gimp.ImageProcedure(this, name, Gimp.PDBProcType.PLUGIN, this.run);
procedure.set_image_types("RGB*, INDEXED*, GRAY*");
procedure.set_sensitivity_mask(Gimp.ProcedureSensitivityMask.DRAWABLE);
- procedure.set_menu_label("Exercise a Vala goat");
- procedure.set_documentation("Exercise a goat in the Vala language",
- "Takes a goat for a walk in Vala",
+ procedure.set_menu_label(N_("Exercise a Vala goat"));
+ procedure.set_documentation(N_("Exercise a goat in the Vala language"),
+ N_("Takes a goat for a walk in Vala"),
PLUG_IN_PROC);
procedure.add_menu_path("<Image>/Filters/Development/Goat exercises/");
procedure.set_attribution("Niels De Graef", "Niels De Graef", "2020");
diff --git a/extensions/goat-exercises/meson.build b/extensions/goat-exercises/meson.build
index d53b54847a..7a379c81f6 100644
--- a/extensions/goat-exercises/meson.build
+++ b/extensions/goat-exercises/meson.build
@@ -50,7 +50,7 @@ if have_vala and have_gobject_introspection
libgimp_vapi, libgimpui_vapi, gtk3, gegl, math,
],
c_args: [
- '-DGETTEXT_PACKAGE="@0@"'.format(gettext_package),
+ '-DGETTEXT_PACKAGE="@0@"'.format('org.gimp.extension.goat-exercises'),
],
install: true,
install_dir: gimpplugindir / 'extensions' / extension_name,
diff --git a/po-plug-ins/meson.build b/po-plug-ins/meson.build
index 2f8bc85d28..1f12c0f781 100644
--- a/po-plug-ins/meson.build
+++ b/po-plug-ins/meson.build
@@ -1,2 +1,9 @@
po_plug_ins_dir = meson.current_source_dir()
i18n.gettext(gettext_package + '-std-plug-ins', preset: 'glib')
+
+# Special-casing, we just reuse the same locale dictionnary for our demo
+# extension. We could have separated the strings but just for the sake
+# of demo on code-side, it's simpler to do it this way.
+extension_i18n = 'org.gimp.extension.goat-exercises'
+i18n.gettext(extension_i18n, preset: 'glib',
+ install_dir: gimpplugindir / 'extensions' / extension_i18n / 'locale')
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]