From ea05ba3338bec1517826614f27935a36c3b0f0f8 Mon Sep 17 00:00:00 2001 From: Patrick Storz Date: Sun, 4 Aug 2019 01:34:27 +0200 Subject: Implement "translationdomain" attribute for extensions Will allow extensions to ship their own message catalog used for translation of the extension#s strings. Needs to be set on the root element of the .inx Currently supported values: - unset: use default textdomain (which happens to be 'inkscape') - 'inkscape': use Inkscape's message catalog - 'none': disable translation for the extension's strings --- src/extension/effect.cpp | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) (limited to 'src/extension/effect.cpp') diff --git a/src/extension/effect.cpp b/src/extension/effect.cpp index a38c3022a..a9088f88d 100644 --- a/src/extension/effect.cpp +++ b/src/extension/effect.cpp @@ -105,8 +105,8 @@ Effect::Effect (Inkscape::XML::Node * in_repr, Implementation::Implementation * if (!hidden) { if (_filters_list && - local_effects_menu && - local_effects_menu->attribute("name") && + local_effects_menu && + local_effects_menu->attribute("name") && !strcmp(local_effects_menu->attribute("name"), ("Filters"))) { merge_menu(_filters_list->parent(), _filters_list, local_effects_menu->firstChild(), _menu_node); } else if (_effects_list) { @@ -127,24 +127,25 @@ Effect::merge_menu (Inkscape::XML::Node * base, Inkscape::XML::Node * tomerge = nullptr; Inkscape::XML::Node * submenu = nullptr; - /* printf("Merge menu with '%s' '%s' '%s'\n", - base != NULL ? base->name() : "NULL", - pattern != NULL ? pattern->name() : "NULL", - merge != NULL ? merge->name() : "NULL"); */ - if (pattern == nullptr) { // Merge the verb name tomerge = merge; - mergename = _(this->get_name()); + mergename = get_translation(get_name()); } else { - gchar const * menuname = pattern->attribute("name"); + gchar const *menuname = pattern->attribute("name"); if (menuname == nullptr) menuname = pattern->attribute("_name"); if (menuname == nullptr) return; - + Inkscape::XML::Document *xml_doc; xml_doc = base->document(); tomerge = xml_doc->createElement("submenu"); - mergename = _(menuname); + if (_translation_enabled) { + mergename = get_translation(menuname); + } else { + // Even if the extension author requested the extension not to be translated, + // it still seems desirable to be able to put the extension into the existing (translated) submenus. + mergename = _(menuname); + } tomerge->setAttribute("name", mergename, false); } @@ -247,7 +248,8 @@ Effect::prefs (Inkscape::UI::View::View * doc) set_state(Extension::STATE_LOADED); if (!loaded()) return false; - _prefDialog = new PrefDialog(this->get_name(), nullptr, this); + Glib::ustring name = get_translation(this->get_name()); + _prefDialog = new PrefDialog(name, nullptr, this); _prefDialog->show(); return true; @@ -286,7 +288,7 @@ Effect::effect (Inkscape::UI::View::View * doc) /** \brief Sets which effect was called last \param in_effect The effect that has been called - + This function sets the static variable \c _last_effect and it ensures that the last effect verb is sensitive. -- cgit v1.2.3