From bffc8a4ab97bcd4630496c62be4720e0c590f1fa Mon Sep 17 00:00:00 2001 From: sr55 Date: Wed, 29 May 2013 17:31:58 +0000 Subject: [PATCH] WinGui: Use ISO639-2 Codes rather than language names for auto language selection git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@5524 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- .../Parsing/Subtitle.cs | 16 ++++++++ .../Utilities/LanguageUtilities.cs | 38 ++++++++++++++++++- .../HandBrakeWPF/ViewModels/AudioViewModel.cs | 13 ++++++- .../ViewModels/SubtitlesViewModel.cs | 13 ++++--- 4 files changed, 71 insertions(+), 9 deletions(-) diff --git a/win/CS/HandBrake.ApplicationServices/Parsing/Subtitle.cs b/win/CS/HandBrake.ApplicationServices/Parsing/Subtitle.cs index 34a919908..0a68476f4 100644 --- a/win/CS/HandBrake.ApplicationServices/Parsing/Subtitle.cs +++ b/win/CS/HandBrake.ApplicationServices/Parsing/Subtitle.cs @@ -68,6 +68,22 @@ namespace HandBrake.ApplicationServices.Parsing /// public string LanguageCode { get; set; } + /// + /// Gets the language code clean. + /// TODO Remove this after fixing language code. + /// + public string LanguageCodeClean + { + get + { + if (this.LanguageCode != null) + { + return this.LanguageCode.Replace("iso639-2: ", string.Empty).Trim(); + } + return string.Empty; + } + } + /// /// Gets or sets the Subtitle Type /// diff --git a/win/CS/HandBrake.ApplicationServices/Utilities/LanguageUtilities.cs b/win/CS/HandBrake.ApplicationServices/Utilities/LanguageUtilities.cs index 833c6d989..bbfe8f62c 100644 --- a/win/CS/HandBrake.ApplicationServices/Utilities/LanguageUtilities.cs +++ b/win/CS/HandBrake.ApplicationServices/Utilities/LanguageUtilities.cs @@ -10,19 +10,30 @@ namespace HandBrake.ApplicationServices.Utilities { using System.Collections.Generic; + using System.Collections.Specialized; /// /// Language Utilities /// public class LanguageUtilities { + /// + /// The language map. + /// + private static IDictionary languageMap; + /// /// Map languages and their iso639_2 value into a IDictionary /// /// A Dictionary containing the language and iso code public static IDictionary MapLanguages() { - IDictionary languageMap = new Dictionary + if (languageMap != null) + { + return languageMap; + } + + languageMap = new Dictionary { {"(Any)", "und"}, {"Afar", "aar"}, @@ -213,5 +224,30 @@ namespace HandBrake.ApplicationServices.Utilities }; return languageMap; } + + /// + /// The get language codes. + /// + /// + /// The user languages. + /// + /// + /// The . + /// + public static List GetLanguageCodes(StringCollection userLanguages) + { + // Translate to Iso Codes + List iso6392Codes = new List(); + foreach (var item in userLanguages) + { + string isoCode; + if (LanguageUtilities.MapLanguages().TryGetValue(item, out isoCode)) + { + iso6392Codes.Add(isoCode); + } + } + + return iso6392Codes; + } } } diff --git a/win/CS/HandBrakeWPF/ViewModels/AudioViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/AudioViewModel.cs index 2146b1c6c..ee9b09f31 100644 --- a/win/CS/HandBrakeWPF/ViewModels/AudioViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/AudioViewModel.cs @@ -38,6 +38,9 @@ namespace HandBrakeWPF.ViewModels /// private IEnumerable