summaryrefslogtreecommitdiffstats
path: root/src/extension/effect.cpp
diff options
context:
space:
mode:
authorPatrick Storz <eduard.braun2@gmx.de>2019-08-03 23:34:27 +0000
committerPatrick Storz <eduard.braun2@gmx.de>2019-08-31 14:50:38 +0000
commitea05ba3338bec1517826614f27935a36c3b0f0f8 (patch)
treedce3126f09fe834a6bf165031d28c607dba73327 /src/extension/effect.cpp
parentRemove unused "nopref" variant of effects (diff)
downloadinkscape-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.cpp28
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.