Skip to content

Commit 43cc621

Browse files
Setting language automatically in first-use, fix for "Create Music with AI" and Turkish settings window
The language is now setting automatically if the program is used first-time, the last bug in "Create Music with AI" is fixed and the collapsed label in "Device settings" tab is fixed in Turkish settings window.
1 parent c736408 commit 43cc621

8 files changed

Lines changed: 4726 additions & 4663 deletions

NeoBleeper/CreateMusicWithAI.cs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
using GenerativeAI;
1818
using NeoBleeper.Properties;
19+
using System.Diagnostics;
1920
using System.Net;
2021
using System.Net.NetworkInformation;
2122
using System.Text.RegularExpressions;
@@ -1597,12 +1598,26 @@ private string SynchronizeLengths(string xmlContent)
15971598
@"<(NeoBleeperProjectFile|RandomSettings|PlaybackSettings|ClickPlayNotes|ClickPlayNote[1-4]|NoteLengthReplace|NoteSilenceRatio|AlternateTime|NoteClickPlay|NoteClickAdd|AddNote[1-4]|NoteReplace|PlayNotes|PlayNote[1-4]|LineList|KeyboardOctave|TimeSignature|NoteLength|Settings|Note[1-4]|Length|Line|BPM|Mod|Art)>\s*</(NeoBleeperProjectFile|RandomSettings|PlaybackSettings|ClickPlayNotes|ClickPlayNote[1-4]|NoteLengthReplace|NoteSilenceRatio|AlternateTime|NoteClickPlay|NoteClickAdd|AddNote[1-4]|NoteReplace|PlayNotes|PlayNote[1-4]|LineList|KeyboardOctave|TimeSignature|NoteLength|Settings|Note[1-4]|Length|Line|BPM|Mod|Art)>",
15981599
"<$1 />",
15991600
RegexOptions.Multiline);
1601+
// Fix remaining mismatched tags
1602+
xmlContent = Regex.Replace(
1603+
xmlContent,
1604+
@"<(?<open>\w+)>(.*?)</(?<close>\w+)>",
1605+
m => {
1606+
var open = m.Groups["open"].Value;
1607+
var close = m.Groups["close"].Value;
1608+
var content = m.Groups[2].Value;
1609+
if (open != close)
1610+
return $"<{open}>{content}</{open}>";
1611+
return m.Value;
1612+
},
1613+
RegexOptions.Multiline | RegexOptions.IgnoreCase
1614+
);
16001615
// Trim and normalize the XML content
16011616
xmlContent = Regex.Replace(xmlContent, @"^[\s\S]*(<NeoBleeperProjectFile>)", "$1", RegexOptions.IgnoreCase);
16021617
xmlContent = Regex.Replace(xmlContent, @"</<(\w+)>", @"</$1>");
16031618
xmlContent = Regex.Replace(
16041619
xmlContent, @"<\?xml.*?\?>", string.Empty, RegexOptions.IgnoreCase);
1605-
1620+
//Debug.WriteLine(xmlContent); // For debugging purposes
16061621
// Load the XML content into an XmlDocument
16071622
var xmlDoc = new System.Xml.XmlDocument();
16081623
xmlDoc.LoadXml(xmlContent);

NeoBleeper/Program.cs

Lines changed: 46 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// NeoBleeper - AI-enabled tune creation software using the system speaker (aka PC Speaker) on the motherboard
1+
// NeoBleeper - AI-enabled tune creation software using the system speaker (aka PC Speaker) on the motherboard
22
// Copyright (C) 2023 GeniusPilot2016
33
//
44
// This program is free software: you can redistribute it and/or modify
@@ -393,11 +393,56 @@ private static void CheckAndPlaceInpOutX64()
393393
}
394394
return false; // File does not exist
395395
}
396+
private static void SetLanguageBasedOnOSLanguage() // Set application language based on OS language if no saved settings is found
397+
{
398+
var osLanguage = System.Globalization.CultureInfo.InstalledUICulture.TwoLetterISOLanguageName;
399+
switch (osLanguage)
400+
{
401+
case "en":
402+
Settings1.Default.preferredLanguage = "English";
403+
break;
404+
case "fr":
405+
Settings1.Default.preferredLanguage = "Français";
406+
break;
407+
case "de":
408+
Settings1.Default.preferredLanguage = "Deutsch";
409+
break;
410+
case "es":
411+
Settings1.Default.preferredLanguage = "Español";
412+
break;
413+
case "ru":
414+
Settings1.Default.preferredLanguage = "Русский";
415+
break;
416+
case "uk":
417+
Settings1.Default.preferredLanguage = "українська";
418+
break;
419+
case "vi":
420+
Settings1.Default.preferredLanguage = "Tiếng Việt";
421+
break;
422+
case "tr":
423+
Settings1.Default.preferredLanguage = "Türkçe";
424+
break;
425+
case "it":
426+
Settings1.Default.preferredLanguage = "Italiano";
427+
break;
428+
default:
429+
Settings1.Default.preferredLanguage = "English"; // Default to English if OS language is not supported
430+
break;
431+
}
432+
Settings1.Default.Save();
433+
}
396434
private static void LoadSettingsIfNeeded()
397435
{
398436
if (!Settings1.Default.HasSettingsUpgraded)
399437
{
438+
bool formerState = Settings1.Default.HasSettingsUpgraded;
400439
Settings1.Default.Upgrade();
440+
Settings1.Default.Save();
441+
bool currentState = Settings1.Default.HasSettingsUpgraded;
442+
if (formerState == currentState) // This means no saved settings is found from previous versions
443+
{
444+
SetLanguageBasedOnOSLanguage(); // Set language based on OS language if no saved settings is found
445+
}
401446
Settings1.Default.HasSettingsUpgraded = true;
402447
Settings1.Default.Save();
403448
}

NeoBleeper/SettingsWindow.Designer.cs

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)