key label translations

Get key label translations by using Gtk.
This commit is contained in:
abakkk 2020-06-08 14:30:47 +02:00
parent 95f54f0576
commit b4eb418c89
4 changed files with 76 additions and 49 deletions

44
draw.js
View File

@ -401,7 +401,7 @@ var DrawingArea = new Lang.Class({
if (this.currentShape == Shapes.POLYGON || this.currentShape == Shapes.POLYLINE) {
this.currentElement.points.push([startX, startY]);
this.emit('show-osd', null, _("Press <i>Enter</i>\nto mark vertices"), "", -1);
this.emit('show-osd', null, _("Press <i>%s</i>\nto mark vertices").format(Gtk.accelerator_get_label(Clutter.KEY_Return, 0)), "", -1);
}
this.motionHandler = this.connect('motion-event', (actor, event) => {
@ -444,7 +444,7 @@ var DrawingArea = new Lang.Class({
// start writing
this.currentElement.state = TextState.WRITING;
this.currentElement.text = '';
this.emit('show-osd', null, _("Type your text\nand press <i>Escape</i>"), "", -1);
this.emit('show-osd', null, _("Type your text\nand press <i>%s</i>").format(Gtk.accelerator_get_label(Clutter.KEY_Escape, 0)), "", -1);
this._updateTextCursorTimeout();
this.textHasCursor = true;
this._redisplay();
@ -1238,6 +1238,32 @@ var DrawingHelper = new Lang.Class({
this.parent(params);
this.monitor = monitor;
this.hide();
this.settings = Convenience.getSettings();
this.settingHandler = this.settings.connect('changed', this._onSettingChanged.bind(this));
this.connect('destroy', () => this.settings.disconnect(this.settingHandler));
},
_onSettingChanged: function(settings, key) {
if (key == 'toggle-help')
this._updateHelpKeyLabel();
if (this.vbox) {
this.vbox.destroy();
this.vbox = null;
}
},
_updateHelpKeyLabel: function() {
let [keyval, mods] = Gtk.accelerator_parse(this.settings.get_strv('toggle-help')[0]);
this._helpKeyLabel = Gtk.accelerator_get_label(keyval, mods);
},
get helpKeyLabel() {
if (!this._helpKeyLabel)
this._updateHelpKeyLabel();
return this._helpKeyLabel;
},
_populate: function() {
@ -1245,17 +1271,15 @@ var DrawingHelper = new Lang.Class({
this.add_actor(this.vbox);
this.vbox.add_child(new St.Label({ text: _("Global") }));
let settings = Convenience.getSettings();
for (let settingKey in Prefs.GLOBAL_KEYBINDINGS) {
let hbox = new St.BoxLayout({ vertical: false });
if (settingKey.indexOf('-separator-') != -1) {
this.vbox.add_child(hbox);
continue;
}
if (!settings.get_strv(settingKey)[0])
if (!this.settings.get_strv(settingKey)[0])
continue;
let [keyval, mods] = Gtk.accelerator_parse(settings.get_strv(settingKey)[0]);
let [keyval, mods] = Gtk.accelerator_parse(this.settings.get_strv(settingKey)[0]);
hbox.add_child(new St.Label({ text: _(Prefs.GLOBAL_KEYBINDINGS[settingKey]) }));
hbox.add_child(new St.Label({ text: Gtk.accelerator_get_label(keyval, mods), x_expand: true }));
this.vbox.add_child(hbox);
@ -1270,7 +1294,7 @@ var DrawingHelper = new Lang.Class({
}
let hbox = new St.BoxLayout({ vertical: false });
hbox.add_child(new St.Label({ text: _(Prefs.OTHER_SHORTCUTS[i].desc) }));
hbox.add_child(new St.Label({ text: _(Prefs.OTHER_SHORTCUTS[i].shortcut), x_expand: true }));
hbox.add_child(new St.Label({ text: Prefs.OTHER_SHORTCUTS[i].shortcut, x_expand: true }));
this.vbox.add_child(hbox);
}
@ -1282,9 +1306,9 @@ var DrawingHelper = new Lang.Class({
continue;
}
let hbox = new St.BoxLayout({ vertical: false });
if (!settings.get_strv(settingKey)[0])
if (!this.settings.get_strv(settingKey)[0])
continue;
let [keyval, mods] = Gtk.accelerator_parse(settings.get_strv(settingKey)[0]);
let [keyval, mods] = Gtk.accelerator_parse(this.settings.get_strv(settingKey)[0]);
hbox.add_child(new St.Label({ text: _(Prefs.INTERNAL_KEYBINDINGS[settingKey]) }));
hbox.add_child(new St.Label({ text: Gtk.accelerator_get_label(keyval, mods), x_expand: true }));
this.vbox.add_child(hbox);
@ -1339,7 +1363,7 @@ var DrawingHelper = new Lang.Class({
transition: 'easeOutQuad',
onComplete: this.hide.bind(this) });
},
}
});
const getActor = function(object) {

View File

@ -336,7 +336,9 @@ var AreaManager = new Lang.Class({
// increase OSD display time
let hideTimeoutSave = OsdWindow.HIDE_TIMEOUT;
try { OsdWindow.HIDE_TIMEOUT = 2000; } catch(e) { /* HIDE_TIMEOUT is not exported with 'var' */ }
Main.osdWindowManager.show(currentIndex, this.enterGicon, _("Press Ctrl + F1 for help") + "\n\n" + _("Entering drawing mode"), null);
let label = _("<small>Press <i>%s</i> for help</small>").format(this.activeArea.helper.helpKeyLabel) + "\n\n" + _("Entering drawing mode");
Main.osdWindowManager.show(currentIndex, this.enterGicon, label, null);
Main.osdWindowManager._osdWindows[this.areas.indexOf(this.activeArea)]._label.get_clutter_text().set_use_markup(true);
try { OsdWindow.HIDE_TIMEOUT = hideTimeoutSave; } catch(e) {}
}
}

View File

@ -36,7 +36,8 @@ msgstr ""
msgid "Leaving drawing mode"
msgstr ""
msgid "Press Ctrl + F1 for help"
# %s is a key label
msgid "<small>Press <i>%s</i> for help</small>"
msgstr ""
msgid "Entering drawing mode"
@ -76,14 +77,16 @@ msgstr ""
msgid "Full line"
msgstr ""
# %s is a key label
msgid ""
"Press <i>Enter</i>\n"
"Press <i>%s</i>\n"
"to mark vertices"
msgstr ""
# %s is a key label
msgid ""
"Type your text\n"
"and press <i>Escape</i>"
"and press <i>%s</i>"
msgstr ""
msgid "Screenshot"
@ -133,7 +136,7 @@ msgstr ""
msgid "About"
msgstr ""
# GLOBAL_KEYBINDINGS
#: GLOBAL_KEYBINDINGS
msgid "Enter/leave drawing mode"
msgstr ""
@ -141,7 +144,7 @@ msgstr ""
msgid "Erase all drawings"
msgstr ""
# INTERNAL_KEYBINDINGS
#: INTERNAL_KEYBINDINGS
msgid "Undo last brushstroke"
msgstr ""
@ -197,9 +200,9 @@ msgstr ""
msgid "Change linecap"
msgstr ""
# already in draw.js
#msgid "Dashed line"
#msgstr ""
#: already in draw.js
#:msgid "Dashed line"
#:msgstr ""
msgid "Change font family (generic name)"
msgstr ""
@ -228,9 +231,9 @@ msgstr ""
msgid "Open next drawing"
msgstr ""
# already in draw.js
#msgid "Save drawing"
#msgstr ""
#: already in draw.js
#:msgid "Save drawing"
#:msgstr ""
msgid "Save drawing as a SVG file"
msgstr ""
@ -241,7 +244,7 @@ msgstr ""
msgid "Show help"
msgstr ""
# OTHER_SHORTCUTS
#: OTHER_SHORTCUTS
msgid "Draw"
msgstr ""
@ -261,9 +264,6 @@ msgstr ""
msgid "Transform shape (when drawing)"
msgstr ""
msgid "Ctrl key"
msgstr ""
msgid "Increment/decrement line width"
msgstr ""
@ -273,40 +273,36 @@ msgstr ""
msgid "Select color"
msgstr ""
msgid "Ctrl+1...9"
# %s are key labels (Ctrl+F1 and Ctrl+F9)
msgid "%s … %s"
msgstr ""
msgid "Select eraser"
msgstr ""
msgid "Shift key held"
# %s is a key label
msgid "%s held"
msgstr ""
msgid "Ignore pointer movement"
msgstr ""
msgid "Space key held"
msgstr ""
msgid "Leave"
msgstr ""
msgid "Escape key"
#: About page
# You are free to translate the extension name, that is displayed in About page, or not.
msgid "Draw On You Screen"
msgstr ""
# About page
# you are free to translate the extension name
#msgid "Draw On You Screen"
#msgstr ""
msgid "Version %d"
msgstr ""
msgid "Start drawing with Super+Alt+D and save your beautiful work by taking a screenshot"
msgstr ""
# Prefs page
#: Prefs page
msgid "Global"
msgstr ""

View File

@ -77,16 +77,21 @@ var INTERNAL_KEYBINDINGS = {
'toggle-help': "Show help"
};
function getKeyLabel(accel) {
let [keyval, mods] = Gtk.accelerator_parse(accel);
return Gtk.accelerator_get_label(keyval, mods);
}
var OTHER_SHORTCUTS = [
{ desc: "Draw", shortcut: "Left click" },
{ desc: "Menu", shortcut: "Right click" },
{ desc: "Toggle fill/stroke", shortcut: "Center click" },
{ desc: "Transform shape (when drawing)", shortcut: "Ctrl key" },
{ desc: "Increment/decrement line width", shortcut: "Scroll" },
{ desc: "Select color", shortcut: "Ctrl+1...9" },
{ desc: "Select eraser", shortcut: "Shift key held" },
{ desc: "Ignore pointer movement", shortcut: "Space key held" },
{ desc: "Leave", shortcut: "Escape key" }
{ desc: "Draw", get shortcut() { return _("Left click"); } },
{ desc: "Menu", get shortcut() { return _("Right click"); } },
{ desc: "Toggle fill/stroke", get shortcut() { return _("Center click"); } },
{ desc: "Transform shape (when drawing)", shortcut: getKeyLabel('<Primary>') },
{ desc: "Increment/decrement line width", get shortcut() { return _("Scroll"); } },
{ desc: "Select color", get shortcut() { return _("%s … %s").format(getKeyLabel('<Primary>1'), getKeyLabel('<Primary>9')); } },
{ desc: "Select eraser", get shortcut() { return _("%s held").format(getKeyLabel('<Shift>')); } },
{ desc: "Ignore pointer movement", get shortcut() { return _("%s held").format(getKeyLabel('space')); } },
{ desc: "Leave", shortcut: getKeyLabel('Escape') }
];
function init() {
@ -270,7 +275,7 @@ const PrefsPage = new GObject.Class({
let otherBox = new Gtk.Box({ margin_left: MARGIN, margin_right: MARGIN });
let otherLabel = new Gtk.Label({ label: _(OTHER_SHORTCUTS[i].desc) });
otherLabel.set_halign(1);
let otherLabel2 = new Gtk.Label({ label: _(OTHER_SHORTCUTS[i].shortcut) });
let otherLabel2 = new Gtk.Label({ label: OTHER_SHORTCUTS[i].shortcut });
otherBox.pack_start(otherLabel, true, true, 4);
otherBox.pack_start(otherLabel2, false, false, 4);
listBox.add(otherBox);