// remove duplicates
return list;
}
+
+bool translateString(docstring const in, docstring & out, string const lcode)
+{
+ out = translateIfPossible(in, lcode);
+ return in != out;
+}
} // namespace anon
void InsetInfo::error(docstring const & err, Language const * lang)
{
- setText(bformat(translateIfPossible(err, lang->code()), from_utf8(params_.name)),
- Font(inherit_font, lang), false);
+ docstring const res = translateIfPossible(err, lang->code());
+ bool const translated = res != err;
+ // If the string is not translated, we use default lang (English)
+ Font const f = translated ? Font(inherit_font, lang) : Font(inherit_font);
+ setText(bformat(res, from_utf8(params_.name)), f, false);
}
void InsetInfo::info(docstring const & err, Language const * lang)
{
- setText(translateIfPossible(err, lang->code()),
- Font(inherit_font, lang), false);
+ docstring const res = translateIfPossible(err, lang->code());
+ bool const translated = res != err;
+ // If the string is not translated, we use default lang (English)
+ Font const f = translated ? Font(inherit_font, lang) : Font(inherit_font);
+ setText(translateIfPossible(err, lang->code()), f, false);
}
break;
}
docstring sequence;
- if (params_.type == InsetInfoParams::SHORTCUT_INFO)
+ docstring seq_untranslated;
+ if (params_.type == InsetInfoParams::SHORTCUT_INFO) {
sequence = bindings.begin()->print(KeySequence::ForGui);
- else
+ seq_untranslated = bindings.begin()->print(KeySequence::ForGui, true);
+ } else {
sequence = theTopLevelKeymap().printBindings(func, KeySequence::ForGui);
+ seq_untranslated = theTopLevelKeymap().printBindings(func, KeySequence::ForGui, true);
+ }
// QKeySequence returns special characters for keys on the mac
// Since these are not included in many fonts, we
// re-translate them to textual names (see #10641)
odocstringstream ods;
string const lcode = params_.lang->code();
+ docstring trans;
+ bool is_translated = sequence != seq_untranslated;
for (size_t n = 0; n < sequence.size(); ++n) {
char_type const c = sequence[n];
switch(c) {
case 0x21b5://Return
gui = _("Return[[Key]]");
- ods << translateIfPossible(from_ascii("Return[[Key]]"), lcode);
+ is_translated = translateString(from_ascii("Return[[Key]]"), trans, lcode);
+ ods << trans;
break;
case 0x21b9://Tab both directions (Win)
gui = _("Tab[[Key]]");
- ods << translateIfPossible(from_ascii("Tab[[Key]]"), lcode);
+ is_translated = translateString(from_ascii("Tab[[Key]]"), trans, lcode);
+ ods << trans;
break;
case 0x21de://Qt::Key_PageUp
gui = _("PgUp");
- ods << translateIfPossible(from_ascii("PgUp"), lcode);
+ is_translated = translateString(from_ascii("PgUp"), trans, lcode);
+ ods << trans;
break;
case 0x21df://Qt::Key_PageDown
gui = _("PgDown");
- ods << translateIfPossible(from_ascii("PgDown"), lcode);
+ is_translated = translateString(from_ascii("PgDown"), trans, lcode);
+ ods << trans;
break;
case 0x21e4://Qt::Key_Backtab
gui = _("Backtab");
- ods << translateIfPossible(from_ascii("Backtab"), lcode);
+ is_translated = translateString(from_ascii("Backtab"), trans, lcode);
+ ods << trans;
break;
case 0x21e5://Qt::Key_Tab
gui = _("Tab");
- ods << translateIfPossible(from_ascii("Tab"), lcode);
+ is_translated = translateString(from_ascii("Tab"), trans, lcode);
+ ods << trans;
break;
case 0x21e7://Shift
gui = _("Shift");
- ods << translateIfPossible(from_ascii("Shift"), lcode);
+ is_translated = translateString(from_ascii("Shift"), trans, lcode);
+ ods << trans;
break;
case 0x21ea://Qt::Key_CapsLock
gui = _("CapsLock");
- ods << translateIfPossible(from_ascii("CapsLock"), lcode);
+ is_translated = translateString(from_ascii("CapsLock"), trans, lcode);
+ ods << trans;
break;
case 0x2303://Control
gui = _("Control[[Key]]");
- ods << translateIfPossible(from_ascii("Control[[Key]]"), lcode);
+ is_translated = translateString(from_ascii("Control[[Key]]"), trans, lcode);
+ ods << trans;
break;
case 0x2318://CMD
gui = _("Command[[Key]]");
- ods << translateIfPossible(from_ascii("Command[[Key]]"), lcode);
+ is_translated = translateString(from_ascii("Command[[Key]]"), trans, lcode);
+ ods << trans;
break;
case 0x2324://Qt::Key_Enter
gui = _("Return[[Key]]");
- ods << translateIfPossible(from_ascii("Return[[Key]]"), lcode);
+ is_translated = translateString(from_ascii("Return[[Key]]"), trans, lcode);
+ ods << trans;
break;
case 0x2325://Option key
gui = _("Option[[Key]]");
- ods << translateIfPossible(from_ascii("Option[[Key]]"), lcode);
+ is_translated = translateString(from_ascii("Option[[Key]]"), trans, lcode);
+ ods << trans;
break;
case 0x2326://Qt::Key_Delete
gui = _("Delete[[Key]]");
- ods << translateIfPossible(from_ascii("Delete[[Key]]"), lcode);
+ is_translated = translateString(from_ascii("Delete[[Key]]"), trans, lcode);
+ ods << trans;
break;
case 0x232b://Qt::Key_Backspace
gui = _("Fn+Del");
- ods << translateIfPossible(from_ascii("Fn+Delete"), lcode);
+ is_translated = translateString(from_ascii("Fn+Del"), trans, lcode);
+ ods << trans;
break;
case 0x238b://Qt::Key_Escape
gui = _("Esc");
- ods << translateIfPossible(from_ascii("Esc"), lcode);
+ is_translated = translateString(from_ascii("Esc"), trans, lcode);
+ ods << trans;
break;
default:
ods.put(c);
}
}
- setText(ods.str(), guilang);
- params_.force_ltr = !guilang->rightToLeft() && !params_.lang->rightToLeft();
+ setText(ods.str(), is_translated ? guilang : nullptr);
+ params_.force_ltr = !is_translated || (!guilang->rightToLeft() && !params_.lang->rightToLeft());
break;
}
case InsetInfoParams::LYXRC_INFO: {