the first thing i would do is to change msgstr of translatable string and see if the changes are visible to the code. also, what is strange is that msgctxt is non-empty, while to get translation i18n is used and not i18nc. > msgctxt "action" > msgid "Save Incremental &Version" > msgstr "増分バージョンを保存(&V)" ... > return i18n(s.toUtf8().constData()); also toLatin1() would be enough, i believe. and even better is to pass msgid content as qbytearray or const char* everywhere