<table><tr><td style="">sitter added a comment.
</td><a style="text-decoration: none; padding: 4px 8px; margin: 0 8px 8px; float: right; color: #464C5C; font-weight: bold; border-radius: 3px; background-color: #F7F7F9; background-image: linear-gradient(to bottom,#fff,#f1f0f1); display: inline-block; border: 1px solid rgba(71,87,120,.2);" href="https://phabricator.kde.org/D10446">View Revision</a></tr></table><br /><div><div><p>Stacking the functions seems to work fine</p>
<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">QString KLanguageName::nameForCode(const QString &code)
{
const QStringList parts = QLocale().name().split(QChar('_'));
return nameForCodeInLocale(code, parts.at(0));
}</pre></div>
<p>I do have various refinements and fixes for the logic plus a unit test I can update the diff if you are ok with that.</p>
<p>As for kcoreaddons, I don't think we could go there with kconfig could we? And I am not sure QSettings is up to the task?</p>
<p>I also have some behavior concerns. The auto-fallback to QLocale is super handy, but isn't very flexible: As an application author I might have another way to map a language to a pretty string, if KLanguageName automatically falls back to QLocale, I won't be able to easily determine if I should use another (possibly better) fallback.<br />
At the same time falling back to <tt style="background: #ebebeb; font-size: 13px;">QLocale::languageToString</tt> is not necessarily in the interest of the user either. Who's to say the user will know what a language means in English.</p>
<p>So, I haven't give this a great deal of thought, but it seems that always returning QString(), if we cannot resolve a string internally, is possibly more flexible. Worst case the consumer has to do:</p>
<div class="remarkup-code-block" style="margin: 12px 0;" data-code-lang="text" data-sigil="remarkup-code-block"><pre class="remarkup-code" style="font: 11px/15px "Menlo", "Consolas", "Monaco", monospace; padding: 12px; margin: 0; background: rgba(71, 87, 120, 0.08);">str = KLanguageName::nameForCode("fr")
if (str.isEmpty()) { str = QLocale("fr").nativeLanguageName() }</pre></div>
<p>Which isn't that much code TBH.</p></div></div><br /><div><strong>REPOSITORY</strong><div><div>R265 KConfigWidgets</div></div></div><br /><div><strong>REVISION DETAIL</strong><div><a href="https://phabricator.kde.org/D10446">https://phabricator.kde.org/D10446</a></div></div><br /><div><strong>To: </strong>aacid<br /><strong>Cc: </strong>kde-frameworks-devel, sitter, markg, apol, michaelh, ngraham, bruns<br /></div>