Language selection dropdown in the terms dialog.

Allows the user to either read the english Terms and Conditions written
by Wildfire Games or the version translated into the current locale by
transifex users.
The underlying problem that Wildfire Games cannot verify the accuracy or
completeness of the translations while providing the services to a
global audience remains.

Refs #5257
Differential Revision: https://code.wildfiregames.com/D1643
Comments By: bb on irc, smiley, asterix
This was SVN commit r21894.
This commit is contained in:
elexis 2018-09-29 21:25:04 +00:00
parent b496168d0a
commit 74fbb4b823
2 changed files with 45 additions and 7 deletions

View file

@ -1,17 +1,14 @@
var g_TermsPage;
var g_TermsFile;
function init(data)
{
g_TermsPage = data.page;
g_TermsFile = data.file;
Engine.GetGUIObjectByName("title").caption = data.title;
Engine.GetGUIObjectByName("mainText").caption =
Engine.FileExists(data.file) ?
Engine.TranslateLines(Engine.ReadFile(data.file)) :
data.file;
initURLButtons(data.urlButtons);
initLanguageSelection();
}
function initURLButtons(urlButtons)
@ -30,6 +27,40 @@ function initURLButtons(urlButtons)
});
}
function initLanguageSelection()
{
let languageLabel = Engine.GetGUIObjectByName("languageLabel");
let languageLabelWidth = Engine.GetTextWidth(languageLabel.font, languageLabel.caption)
languageLabel.size = "0 0 " + languageLabelWidth + " 100%";
let languageDropdown = Engine.GetGUIObjectByName("languageDropdown");
languageDropdown.size = (languageLabelWidth + 10) + " 4 100% 100%";
languageDropdown.list = (() => {
let displayNames = Engine.GetSupportedLocaleDisplayNames();
let baseNames = Engine.GetSupportedLocaleBaseNames();
// en-US
let list = [displayNames[0]];
// current locale
let currentLocaleDict = Engine.GetFallbackToAvailableDictLocale(Engine.GetCurrentLocale());
if (currentLocaleDict != baseNames[0])
list.push(displayNames[baseNames.indexOf(currentLocaleDict)]);
return list;
})();
languageDropdown.onSelectionChange = () => {
Engine.GetGUIObjectByName("mainText").caption =
Engine.FileExists(g_TermsFile) ?
(languageDropdown.selected == 1 ? Engine.TranslateLines(Engine.ReadFile(g_TermsFile)) : Engine.ReadFile(g_TermsFile)) :
g_TermsFile;
};
languageDropdown.selected = languageDropdown.list.length - 1;
}
function closeTerms(accepted)
{
Engine.PopGuiPageCB({

View file

@ -10,7 +10,14 @@
<object name="title" style="ModernLabelText" type="text" size="50%-128 -18 50%+128 14"/>
<object size="20 20 100%-20 100%-50">
<object size="25 18 100%-25 50">
<object type="text" name="languageLabel" style="ModernLabelText">
<translatableAttribute id="caption">Language</translatableAttribute>
</object>
<object type="dropdown" name="languageDropdown" style="ModernDropDown" tooltip_style="onscreenToolTip"/>
</object>
<object size="20 60 100%-20 100%-50">
<object name="mainTextPanel" type="image" sprite="ModernFade">
<object name="mainText" type="text" style="ModernTextPanel"/>
</object>