Add brightness/contrast sliders, input source switching, and 9-language localization
- Add VCP commands for brightness (10), contrast (12), input source (60) - Fix UTF-16 encoding for monitor data parsing - Add system tray app with monitor controls - Add localization for en, es, fr, de, zh, ja, pt, it, hi - Update to .NET 9.0 - Add LICENSE and README 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -54,12 +54,48 @@ namespace CMM.Language
|
||||
var Languages = new List<string>();
|
||||
string uriPath = ResourceLocalPath + "/" + LanguageFileName;
|
||||
|
||||
Languages.Add(uriPath + ".en-US.xaml");
|
||||
Languages.Add(uriPath + ".zh-TW.xaml");
|
||||
Languages.Add(uriPath + ".en.xaml");
|
||||
Languages.Add(uriPath + ".es.xaml");
|
||||
Languages.Add(uriPath + ".fr.xaml");
|
||||
Languages.Add(uriPath + ".de.xaml");
|
||||
Languages.Add(uriPath + ".zh.xaml");
|
||||
Languages.Add(uriPath + ".ja.xaml");
|
||||
Languages.Add(uriPath + ".pt.xaml");
|
||||
Languages.Add(uriPath + ".it.xaml");
|
||||
Languages.Add(uriPath + ".hi.xaml");
|
||||
|
||||
return Languages;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Auto-detect and apply system language
|
||||
/// </summary>
|
||||
public void ApplySystemLanguage()
|
||||
{
|
||||
var systemCulture = CultureInfo.CurrentUICulture;
|
||||
var matchedCulture = FindBestMatchingCulture(systemCulture);
|
||||
ChangeCulture(matchedCulture);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Find the best matching supported culture for the given culture
|
||||
/// </summary>
|
||||
private CultureInfo FindBestMatchingCulture(CultureInfo culture)
|
||||
{
|
||||
// Try exact match first
|
||||
var exactMatch = SupportedCultures.FirstOrDefault(c =>
|
||||
c.Name.Equals(culture.Name, StringComparison.OrdinalIgnoreCase));
|
||||
if (exactMatch != null) return exactMatch;
|
||||
|
||||
// Try matching by two-letter ISO language name
|
||||
var languageMatch = SupportedCultures.FirstOrDefault(c =>
|
||||
c.TwoLetterISOLanguageName.Equals(culture.TwoLetterISOLanguageName, StringComparison.OrdinalIgnoreCase));
|
||||
if (languageMatch != null) return languageMatch;
|
||||
|
||||
// Default to English
|
||||
return SupportedCultures.FirstOrDefault(c => c.Name == "en") ?? SupportedCultures.First();
|
||||
}
|
||||
|
||||
public void ChangeCulture(string cultureName)
|
||||
{
|
||||
var cultureInfo = CultureInfo.GetCultureInfo(cultureName);
|
||||
|
||||
Reference in New Issue
Block a user