diff options
| author | Patrick Storz <eduard.braun2@gmx.de> | 2019-08-03 23:34:27 +0000 |
|---|---|---|
| committer | Patrick Storz <eduard.braun2@gmx.de> | 2019-08-31 14:50:38 +0000 |
| commit | ea05ba3338bec1517826614f27935a36c3b0f0f8 (patch) | |
| tree | dce3126f09fe834a6bf165031d28c607dba73327 /src/extension/effect.cpp | |
| parent | Remove unused "nopref" variant of effects (diff) | |
| download | inkscape-ea05ba3338bec1517826614f27935a36c3b0f0f8.tar.gz inkscape-ea05ba3338bec1517826614f27935a36c3b0f0f8.zip | |
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 <inkscape-extension> 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
Diffstat (limited to 'src/extension/effect.cpp')
| -rw-r--r-- | src/extension/effect.cpp | 28 |
1 files changed, 15 insertions, 13 deletions
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. |
