Display language names, not their short codes, in language selector. See issue #3016, comment #39.

This commit is contained in:
Ansgar Becker
2012-12-02 11:09:36 +00:00
parent 8bec8e4975
commit 5a3b09bfd0
2 changed files with 237 additions and 13 deletions

View File

@ -188,8 +188,6 @@ object optionsform: Toptionsform
Style = csDropDownList Style = csDropDownList
TabOrder = 11 TabOrder = 11
OnClick = Modified OnClick = Modified
Items.Strings = (
'Auto detect')
end end
end end
object tabLogging: TTabSheet object tabLogging: TTabSheet

View File

@ -160,6 +160,8 @@ type
FWasModified: Boolean; FWasModified: Boolean;
FShortcutCategories: TStringList; FShortcutCategories: TStringList;
FGridTextColors: Array[dtcInteger..dtcOther] of TColor; FGridTextColors: Array[dtcInteger..dtcOther] of TColor;
FLanguages: TStringList;
procedure InitLanguages;
public public
{ Public declarations } { Public declarations }
end; end;
@ -204,6 +206,7 @@ var
CatNode, ItemNode: PVirtualNode; CatNode, ItemNode: PVirtualNode;
Data: PShortcutItemData; Data: PShortcutItemData;
QueryTab: TQueryTab; QueryTab: TQueryTab;
LangCode: String;
begin begin
Screen.Cursor := crHourGlass; Screen.Cursor := crHourGlass;
@ -245,9 +248,15 @@ begin
AppSettings.WriteBool(asDisplayBars, chkColorBars.Checked); AppSettings.WriteBool(asDisplayBars, chkColorBars.Checked);
AppSettings.WriteInt(asBarColor, cboxColorBars.Selected); AppSettings.WriteInt(asBarColor, cboxColorBars.Selected);
AppSettings.WriteString(asMySQLBinaries, editMySQLBinaries.Text); AppSettings.WriteString(asMySQLBinaries, editMySQLBinaries.Text);
if comboAppLanguage.ItemIndex > 0 then if comboAppLanguage.ItemIndex > 0 then begin
AppSettings.WriteString(asAppLanguage, comboAppLanguage.Text) // There is no TStringList.Names[Value] getter, so we find the language code via loop
else LangCode := '';
for i:=0 to FLanguages.Count-1 do begin
if FLanguages.ValueFromIndex[i] = comboAppLanguage.Text then
LangCode := FLanguages.Names[i];
end;
AppSettings.WriteString(asAppLanguage, LangCode);
end else
AppSettings.WriteString(asAppLanguage, ''); AppSettings.WriteString(asAppLanguage, '');
AppSettings.WriteInt(asMaxQueryResults, updownMaxQueryResults.Position); AppSettings.WriteInt(asMaxQueryResults, updownMaxQueryResults.Position);
// Save color settings // Save color settings
@ -340,7 +349,6 @@ procedure Toptionsform.FormCreate(Sender: TObject);
var var
i: Integer; i: Integer;
dtc: TDBDatatypeCategoryIndex; dtc: TDBDatatypeCategoryIndex;
LanguageCodes: TStringList;
// Callback function used by EnumFontFamilies() // Callback function used by EnumFontFamilies()
function EnumFixedProc(lpelf: PEnumLogFont; lpntm: PNewTextMetric; FontType: Integer; Data: LPARAM): Integer; stdcall; function EnumFixedProc(lpelf: PEnumLogFont; lpntm: PNewTextMetric; FontType: Integer; Data: LPARAM): Integer; stdcall;
begin begin
@ -358,10 +366,11 @@ begin
editMySQLBinaries.RightButton.Visible := False; editMySQLBinaries.RightButton.Visible := False;
editMySQLBinaries.OnDblClick := nil; editMySQLBinaries.OnDblClick := nil;
end; end;
LanguageCodes := TStringList.Create;
DefaultInstance.GetListOfLanguages('default', LanguageCodes); InitLanguages;
comboAppLanguage.Items.AddStrings(LanguageCodes); for i:=0 to FLanguages.Count-1 do begin
LanguageCodes.Free; comboAppLanguage.Items.Add(FLanguages.ValueFromIndex[i]);
end;
// Data // Data
// Populate datatype categories pulldown // Populate datatype categories pulldown
@ -398,6 +407,8 @@ end;
procedure Toptionsform.FormShow(Sender: TObject); procedure Toptionsform.FormShow(Sender: TObject);
var
LangCode: String;
begin begin
screen.Cursor := crHourGlass; screen.Cursor := crHourGlass;
@ -413,9 +424,8 @@ begin
chkColorBars.Checked := AppSettings.ReadBool(asDisplayBars); chkColorBars.Checked := AppSettings.ReadBool(asDisplayBars);
cboxColorBars.Selected := AppSettings.ReadInt(asBarColor); cboxColorBars.Selected := AppSettings.ReadInt(asBarColor);
editMySQLBinaries.Text := AppSettings.ReadString(asMySQLBinaries); editMySQLBinaries.Text := AppSettings.ReadString(asMySQLBinaries);
comboAppLanguage.ItemIndex := comboAppLanguage.Items.IndexOf(AppSettings.ReadString(asAppLanguage)); LangCode := AppSettings.ReadString(asAppLanguage);
if comboAppLanguage.ItemIndex = -1 then comboAppLanguage.ItemIndex := comboAppLanguage.Items.IndexOf(FLanguages.Values[LangCode]);
comboAppLanguage.ItemIndex := 0;
chkAskFileSave.Checked := AppSettings.ReadBool(asPromptSaveFileOnTabClose); chkAskFileSave.Checked := AppSettings.ReadBool(asPromptSaveFileOnTabClose);
// Logging // Logging
@ -844,4 +854,220 @@ begin
end; end;
procedure Toptionsform.InitLanguages;
var
AllLangCodes: TStringList;
procedure AddLang(LangCode, LangName: String);
begin
LangCode := LowerCase(LangCode);
if AllLangCodes.IndexOf(LangCode) > -1 then
FLanguages.Add(LangCode + FLanguages.NameValueSeparator + LangName);
end;
begin
// Create list with present language code => language name
// List taken from dxgettext/languagecodes.pas
FLanguages := TStringList.Create;
FLanguages.Add('' + FLanguages.NameValueSeparator + _('Auto detect'));
AllLangCodes := TStringList.Create;
DefaultInstance.GetListOfLanguages('default', AllLangCodes);
AddLang('aa', 'Afar');
AddLang('aa', 'Afar');
AddLang('ab', 'Abkhazian');
AddLang('ae', 'Avestan');
AddLang('af', 'Afrikaans');
AddLang('ak', 'Akan');
AddLang('am', 'Amharic');
AddLang('an', 'Aragonese');
AddLang('ar', 'Arabic');
AddLang('as', 'Assamese');
AddLang('av', 'Avaric');
AddLang('ay', 'Aymara');
AddLang('az', 'Azerbaijani');
AddLang('ba', 'Bashkir');
AddLang('be', 'Belarusian');
AddLang('bg', 'Bulgarian');
AddLang('bh', 'Bihari');
AddLang('bi', 'Bislama');
AddLang('bm', 'Bambara');
AddLang('bn', 'Bengali');
AddLang('bo', 'Tibetan');
AddLang('br', 'Breton');
AddLang('bs', 'Bosnian');
AddLang('ca', 'Catalan');
AddLang('ce', 'Chechen');
AddLang('ch', 'Chamorro');
AddLang('co', 'Corsican');
AddLang('cr', 'Cree');
AddLang('cs', 'Czech');
AddLang('cv', 'Chuvash');
AddLang('cy', 'Welsh');
AddLang('da', 'Danish');
AddLang('de', 'German');
AddLang('de_AT', 'Austrian German');
AddLang('de_CH', 'Swiss German');
AddLang('dv', 'Divehi');
AddLang('dz', 'Dzongkha');
AddLang('ee', 'Ewe');
AddLang('el', 'Greek');
AddLang('en', 'English');
AddLang('en_AU', 'Australian English');
AddLang('en_CA', 'Canadian English');
AddLang('en_GB', 'British English');
AddLang('en_US', 'American English');
AddLang('eo', 'Esperanto');
AddLang('es', 'Spanish');
AddLang('et', 'Estonian');
AddLang('eu', 'Basque');
AddLang('fa', 'Persian');
AddLang('ff', 'Fulah');
AddLang('fi', 'Finnish');
AddLang('fj', 'Fijian');
AddLang('fo', 'Faroese');
AddLang('fr', 'French');
AddLang('fr_BE', 'Walloon');
AddLang('fy', 'Frisian');
AddLang('ga', 'Irish');
AddLang('gd', 'Gaelic');
AddLang('gl', 'Gallegan');
AddLang('gn', 'Guarani');
AddLang('gu', 'Gujarati');
AddLang('gv', 'Manx');
AddLang('ha', 'Hausa');
AddLang('he', 'Hebrew');
AddLang('hi', 'Hindi');
AddLang('ho', 'Hiri Motu');
AddLang('hr', 'Croatian');
AddLang('ht', 'Haitian');
AddLang('hu', 'Hungarian');
AddLang('hy', 'Armenian');
AddLang('hz', 'Herero');
AddLang('ia', 'Interlingua');
AddLang('id', 'Indonesian');
AddLang('ie', 'Interlingue');
AddLang('ig', 'Igbo');
AddLang('ii', 'Sichuan Yi');
AddLang('ik', 'Inupiaq');
AddLang('io', 'Ido');
AddLang('is', 'Icelandic');
AddLang('it', 'Italian');
AddLang('iu', 'Inuktitut');
AddLang('ja', 'Japanese');
AddLang('jv', 'Javanese');
AddLang('ka', 'Georgian');
AddLang('kg', 'Kongo');
AddLang('ki', 'Kikuyu');
AddLang('kj', 'Kuanyama');
AddLang('kk', 'Kazakh');
AddLang('kl', 'Greenlandic');
AddLang('km', 'Khmer');
AddLang('kn', 'Kannada');
AddLang('ko', 'Korean');
AddLang('kr', 'Kanuri');
AddLang('ks', 'Kashmiri');
AddLang('ku', 'Kurdish');
AddLang('kw', 'Cornish');
AddLang('kv', 'Komi');
AddLang('ky', 'Kirghiz');
AddLang('la', 'Latin');
AddLang('lb', 'Luxembourgish');
AddLang('lg', 'Ganda');
AddLang('li', 'Limburgan');
AddLang('ln', 'Lingala');
AddLang('lo', 'Lao');
AddLang('lt', 'Lithuanian');
AddLang('lu', 'Luba-Katanga');
AddLang('lv', 'Latvian');
AddLang('mg', 'Malagasy');
AddLang('mh', 'Marshallese');
AddLang('mi', 'Maori');
AddLang('mk', 'Macedonian');
AddLang('ml', 'Malayalam');
AddLang('mn', 'Mongolian');
AddLang('mo', 'Moldavian');
AddLang('mr', 'Marathi');
AddLang('ms', 'Malay');
AddLang('mt', 'Maltese');
AddLang('my', 'Burmese');
AddLang('na', 'Nauru');
AddLang('nb', 'Norwegian Bokmaal');
AddLang('nd', 'Ndebele, North');
AddLang('ne', 'Nepali');
AddLang('ng', 'Ndonga');
AddLang('nl', 'Dutch');
AddLang('nl_BE', 'Flemish');
AddLang('nn', 'Norwegian Nynorsk');
AddLang('no', 'Norwegian');
AddLang('nr', 'Ndebele, South');
AddLang('nv', 'Navajo');
AddLang('ny', 'Chichewa');
AddLang('oc', 'Occitan');
AddLang('oj', 'Ojibwa');
AddLang('om', 'Oromo');
AddLang('or', 'Oriya');
AddLang('os', 'Ossetian');
AddLang('pa', 'Panjabi');
AddLang('pi', 'Pali');
AddLang('pl', 'Polish');
AddLang('ps', 'Pushto');
AddLang('pt', 'Portuguese');
AddLang('pt_BR', 'Brazilian Portuguese');
AddLang('qu', 'Quechua');
AddLang('rm', 'Raeto-Romance');
AddLang('rn', 'Rundi');
AddLang('ro', 'Romanian');
AddLang('ru', 'Russian');
AddLang('rw', 'Kinyarwanda');
AddLang('sa', 'Sanskrit');
AddLang('sc', 'Sardinian');
AddLang('sd', 'Sindhi');
AddLang('se', 'Northern Sami');
AddLang('sg', 'Sango');
AddLang('si', 'Sinhalese');
AddLang('sk', 'Slovak');
AddLang('sl', 'Slovenian');
AddLang('sm', 'Samoan');
AddLang('sn', 'Shona');
AddLang('so', 'Somali');
AddLang('sq', 'Albanian');
AddLang('sr', 'Serbian');
AddLang('ss', 'Swati');
AddLang('st', 'Sotho, Southern');
AddLang('su', 'Sundanese');
AddLang('sv', 'Swedish');
AddLang('sw', 'Swahili');
AddLang('ta', 'Tamil');
AddLang('te', 'Telugu');
AddLang('tg', 'Tajik');
AddLang('th', 'Thai');
AddLang('ti', 'Tigrinya');
AddLang('tk', 'Turkmen');
AddLang('tl', 'Tagalog');
AddLang('tn', 'Tswana');
AddLang('to', 'Tonga');
AddLang('tr', 'Turkish');
AddLang('ts', 'Tsonga');
AddLang('tt', 'Tatar');
AddLang('tw', 'Twi');
AddLang('ty', 'Tahitian');
AddLang('ug', 'Uighur');
AddLang('uk', 'Ukrainian');
AddLang('ur', 'Urdu');
AddLang('uz', 'Uzbek');
AddLang('ve', 'Venda');
AddLang('vi', 'Vietnamese');
AddLang('vo', 'Volapuk');
AddLang('wa', 'Walloon');
AddLang('wo', 'Wolof');
AddLang('xh', 'Xhosa');
AddLang('yi', 'Yiddish');
AddLang('yo', 'Yoruba');
AddLang('za', 'Zhuang');
AddLang('zh', 'Chinese');
AddLang('zu', 'Zulu');
AllLangCodes.Free;
end;
end. end.