diff --git a/I18N Commander/UI WinForms/Components/Translations.cs b/I18N Commander/UI WinForms/Components/Translations.cs index aa21c57..70f6d13 100644 --- a/I18N Commander/UI WinForms/Components/Translations.cs +++ b/I18N Commander/UI WinForms/Components/Translations.cs @@ -24,8 +24,27 @@ public partial class Translations : UserControl if(this.DesignMode) return; - var cultureInfos = await AppSettings.GetCultureInfos(); - foreach (var cultureInfo in cultureInfos.OrderByDescending(n => n.Index)) + // Apply a custom order for the cultures. We want to show the default culture first, + // then the other cultures in order of their index. Please note: whatever we want to + // show as first, we have to return last! + async IAsyncEnumerable DesiredOrder() + { + // Get all configured cultures: + var cultureInfos = (await AppSettings.GetCultureInfos()).OrderByDescending(n => n.Index).ToList(); + + // Get the main culture: + var mainCultureIndex = await AppSettings.GetDeepLSourceCultureIndex(); + + // First, we return all the non-main cultures in descending order of their index: + foreach (var cultureInfo in cultureInfos.Where(n => n.Index != mainCultureIndex)) + yield return cultureInfo; + + // Last, we return the main culture: + if(cultureInfos.Any(n => n.Index == mainCultureIndex)) + yield return cultureInfos.First(n => n.Index == mainCultureIndex); + } + + await foreach (var cultureInfo in DesiredOrder()) { var translationComponent = new Translation(cultureInfo.Code); this.translationComponents.Add(cultureInfo.Code, translationComponent);