Skip to content

Commit e453d23

Browse files
committed
unsupported languages aren't selectable, and supported languages show up in the language they're for.
1 parent 9f4d2c2 commit e453d23

File tree

2 files changed

+30
-6
lines changed

2 files changed

+30
-6
lines changed

RetailCoder.VBE/Settings/DisplayLanguageSetting.cs

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
using System.Xml.Serialization;
1+
using System;
2+
using System.Globalization;
3+
using System.Xml.Serialization;
24
using Rubberduck.UI;
35

46
namespace Rubberduck.Settings
@@ -17,14 +19,31 @@ public DisplayLanguageSetting()
1719
public DisplayLanguageSetting(string code)
1820
{
1921
Code = code;
20-
_name = RubberduckUI.ResourceManager.GetString("Language_" + Code.Substring(0, 2).ToUpper(), RubberduckUI.Culture);
22+
23+
CultureInfo culture;
24+
try
25+
{
26+
culture = CultureInfo.GetCultureInfo(code);
27+
_exists = true;
28+
}
29+
catch (CultureNotFoundException)
30+
{
31+
culture = RubberduckUI.Culture;
32+
_exists = false;
33+
}
34+
35+
_name = RubberduckUI.ResourceManager.GetString("Language_" + Code.Substring(0, 2).ToUpper(), culture);
2136
}
2237

2338
private readonly string _name;
39+
private readonly bool _exists;
2440

2541
[XmlIgnore]
2642
public string Name { get { return _name; } }
2743

44+
[XmlIgnore]
45+
public bool Exists { get { return _exists; } }
46+
2847
public override bool Equals(object obj)
2948
{
3049
var other = (DisplayLanguageSetting) obj;

RetailCoder.VBE/UI/Settings/GeneralSettingsControl.cs

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Windows.Forms;
1+
using System.Linq;
2+
using System.Windows.Forms;
23
using Rubberduck.Settings;
34

45
namespace Rubberduck.UI.Settings
@@ -32,10 +33,14 @@ public DisplayLanguageSetting SelectedLanguage
3233

3334
private void LoadLanguageList()
3435
{
35-
LanguageList.Items.Add(new DisplayLanguageSetting("en-US"));
36-
LanguageList.Items.Add(new DisplayLanguageSetting("fr-CA"));
37-
LanguageList.Items.Add(new DisplayLanguageSetting("sv-SV"));
36+
var settings = new[]
37+
{
38+
new DisplayLanguageSetting("en-US"),
39+
new DisplayLanguageSetting("fr-CA"),
40+
new DisplayLanguageSetting("sv-SV")
41+
};
3842

43+
LanguageList.Items.AddRange(settings.Where(item => item.Exists).ToArray());
3944
LanguageList.DisplayMember = "Name";
4045
}
4146
}

0 commit comments

Comments
 (0)