diff --git a/osu.Game/Localisation/DebugSettingsStrings.cs b/osu.Game/Localisation/DebugSettingsStrings.cs
index 74b2c8d892..66ce0fa109 100644
--- a/osu.Game/Localisation/DebugSettingsStrings.cs
+++ b/osu.Game/Localisation/DebugSettingsStrings.cs
@@ -49,6 +49,16 @@ namespace osu.Game.Localisation
///
public static LocalisableString CompactRealm => new TranslatableString(getKey(@"compact_realm"), @"Compact realm");
+ ///
+ /// "Block realm"
+ ///
+ public static LocalisableString BlockRealm => new TranslatableString(getKey(@"block_realm"), @"Block realm");
+
+ ///
+ /// "Unblock realm"
+ ///
+ public static LocalisableString UnblockRealm => new TranslatableString(getKey(@"unblock_realm"), @"Unblock realm");
+
private static string getKey(string key) => $"{prefix}:{key}";
}
}
diff --git a/osu.Game/Localisation/GeneralSettingsStrings.cs b/osu.Game/Localisation/GeneralSettingsStrings.cs
index 2aa91f5245..bbad80976e 100644
--- a/osu.Game/Localisation/GeneralSettingsStrings.cs
+++ b/osu.Game/Localisation/GeneralSettingsStrings.cs
@@ -64,6 +64,11 @@ namespace osu.Game.Localisation
///
public static LocalisableString RunSetupWizard => new TranslatableString(getKey(@"run_setup_wizard"), @"Run setup wizard");
+ ///
+ /// "You are running the latest release ({0})"
+ ///
+ public static LocalisableString RunningLatestRelease(string arg0) => new TranslatableString(getKey(@"running_latest_release"), @"You are running the latest release ({0})", arg0);
+
private static string getKey(string key) => $"{prefix}:{key}";
}
}
diff --git a/osu.Game/Localisation/MaintenanceSettingsStrings.cs b/osu.Game/Localisation/MaintenanceSettingsStrings.cs
index a398eced07..8b7ca8d93a 100644
--- a/osu.Game/Localisation/MaintenanceSettingsStrings.cs
+++ b/osu.Game/Localisation/MaintenanceSettingsStrings.cs
@@ -14,11 +14,72 @@ namespace osu.Game.Localisation
///
public static LocalisableString MaintenanceSectionHeader => new TranslatableString(getKey(@"maintenance_section_header"), @"Maintenance");
+ ///
+ /// "Beatmaps"
+ ///
+ public static LocalisableString Beatmaps => new TranslatableString(getKey(@"beatmaps"), @"Beatmaps");
+
+ ///
+ /// "Skins"
+ ///
+ public static LocalisableString Skins => new TranslatableString(getKey(@"skins"), @"Skins");
+
+ ///
+ /// "Collections"
+ ///
+ public static LocalisableString Collections => new TranslatableString(getKey(@"collections"), @"Collections");
+
+
+ ///
+ /// "Scores"
+ ///
+ public static LocalisableString Scores => new TranslatableString(getKey(@"scores"), @"Scores");
+
+ ///
+ /// "Mod presets"
+ ///
+ public static LocalisableString ModPresets => new TranslatableString(getKey(@"mod_presets"), @"Mod presets");
+
///
/// "Select directory"
///
public static LocalisableString SelectDirectory => new TranslatableString(getKey(@"select_directory"), @"Select directory");
+ ///
+ /// "Migration in progress"
+ ///
+ public static LocalisableString MigrationInProgress => new TranslatableString(getKey(@"migration_in_progress"), @"Migration in progress");
+
+ ///
+ /// "This could take a few minutes depending on the speed of your disk(s)."
+ ///
+ public static LocalisableString MigrationDescription => new TranslatableString(getKey(@"migration_description"), @"This could take a few minutes depending on the speed of your disk(s).");
+
+ ///
+ /// "Please avoid interacting with the game!"
+ ///
+ public static LocalisableString ProhibitedInteractDuringMigration => new TranslatableString(getKey(@"prohibited_interact_during_migration"), @"Please avoid interacting with the game!");
+
+ ///
+ /// "Some files couldn't be cleaned up during migration. Clicking this notification will open the folder so you can manually clean things up."
+ ///
+ public static LocalisableString FailedCleanupNotification => new TranslatableString(getKey(@"failed_cleanup_notification"), @"Some files couldn't be cleaned up during migration. Clicking this notification will open the folder so you can manually clean things up.");
+
+ ///
+ /// "Please select a new location"
+ ///
+ public static LocalisableString SelectNewLocation => new TranslatableString(getKey(@"select_new_location"), @"Please select a new location");
+
+ ///
+ /// "The target directory already seems to have an osu! install. Use that data instead?"
+ ///
+ public static LocalisableString TargetDirectoryAlreadyInstalledOsu => new TranslatableString(getKey(@"target_directory_already_installed_osu"), @"The target directory already seems to have an osu! install. Use that data instead?");
+
+ ///
+ /// "To complete this operation, osu! will close. Please open it again to use the new data location."
+ ///
+ public static LocalisableString RestartAndReOpenRequiredForCompletion => new TranslatableString(getKey(@"restart_and_re_open_required_for_completion"), @"To complete this operation, osu! will close. Please open it again to use the new data location.");
+
///
/// "Import beatmaps from stable"
///
@@ -84,6 +145,56 @@ namespace osu.Game.Localisation
///
public static LocalisableString RestoreAllRecentlyDeletedModPresets => new TranslatableString(getKey(@"restore_all_recently_deleted_mod_presets"), @"Restore all recently deleted mod presets");
+ ///
+ /// "Deleted all collections!"
+ ///
+ public static LocalisableString DeletedAllCollections => new TranslatableString(getKey(@"deleted_all_collections"), @"Deleted all collections!");
+
+ ///
+ /// "Deleted all mod presets!"
+ ///
+ public static LocalisableString DeletedAllModPresets => new TranslatableString(getKey(@"deleted_all_mod_presets"), @"Deleted all mod presets!");
+
+ ///
+ /// "Restored all deleted mod presets!"
+ ///
+ public static LocalisableString RestoredAllDeletedModPresets => new TranslatableString(getKey(@"restored_all_deleted_mod_presets"), @"Restored all deleted mod presets!");
+
+ ///
+ /// "Everything?"
+ ///
+ public static LocalisableString MassDeleteConfirmation => new TranslatableString(getKey(@"mass_delete_confirmation"), @"Everything?");
+
+ ///
+ /// "All beatmap videos? This cannot be undone!"
+ ///
+ public static LocalisableString MassVideoDeleteConfirmation => new TranslatableString(getKey(@"mass_video_delete_confirmation"), @"All beatmap videos? This cannot be undone!");
+
+ ///
+ /// "Failed to automatically locate an osu!stable installation."
+ ///
+ public static LocalisableString StableDirectoryLocationHeader => new TranslatableString(getKey(@"stable_directory_location_header"), @"Failed to automatically locate an osu!stable installation.");
+
+ ///
+ /// "An existing install could not be located. If you know where it is, you can help locate it."
+ ///
+ public static LocalisableString StableDirectoryLocationBody => new TranslatableString(getKey(@"stable_directory_location_body"), @"An existing install could not be located. If you know where it is, you can help locate it.");
+
+ ///
+ /// "Sure! I know where it is located!"
+ ///
+ public static LocalisableString StableDirectoryLocationOk => new TranslatableString(getKey(@"stable_directory_location_ok"), @"Sure! I know where it is located!");
+
+ ///
+ /// "Actually I don't have osu!stable installed."
+ ///
+ public static LocalisableString StableDirectoryLocationCancel => new TranslatableString(getKey(@"stable_directory_location_cancel"), @"Actually I don't have osu!stable installed.");
+
+ ///
+ /// "Please select your osu!stable install location"
+ ///
+ public static LocalisableString StableDirectorySelectHeader => new TranslatableString(getKey(@"stable_directory_select_header"), @"Please select your osu!stable install location");
+
private static string getKey(string key) => $"{prefix}:{key}";
}
}
diff --git a/osu.Game/Localisation/TabletSettingsStrings.cs b/osu.Game/Localisation/TabletSettingsStrings.cs
index d62d348df9..6c2e3c1f9c 100644
--- a/osu.Game/Localisation/TabletSettingsStrings.cs
+++ b/osu.Game/Localisation/TabletSettingsStrings.cs
@@ -19,6 +19,11 @@ namespace osu.Game.Localisation
///
public static LocalisableString NoTabletDetected => new TranslatableString(getKey(@"no_tablet_detected"), @"No tablet detected!");
+ ///
+ /// "If your tablet is not detected, please read [this FAQ]({0}) for troubleshooting steps."
+ ///
+ public static LocalisableString NoTabletDetectedDescription(string url) => new TranslatableString(getKey(@"no_tablet_detected_description"), @"If your tablet is not detected, please read [this FAQ]({0}) for troubleshooting steps.", url);
+
///
/// "Reset to full area"
///
diff --git a/osu.Game/Overlays/Settings/Sections/DebugSettings/MemorySettings.cs b/osu.Game/Overlays/Settings/Sections/DebugSettings/MemorySettings.cs
index 42ac4adb34..5ec09adfda 100644
--- a/osu.Game/Overlays/Settings/Sections/DebugSettings/MemorySettings.cs
+++ b/osu.Game/Overlays/Settings/Sections/DebugSettings/MemorySettings.cs
@@ -46,11 +46,11 @@ namespace osu.Game.Overlays.Settings.Sections.DebugSettings
},
blockAction = new SettingsButton
{
- Text = "Block realm",
+ Text = DebugSettingsStrings.BlockRealm,
},
unblockAction = new SettingsButton
{
- Text = "Unblock realm",
+ Text = DebugSettingsStrings.UnblockRealm,
},
};
diff --git a/osu.Game/Overlays/Settings/Sections/General/UpdateSettings.cs b/osu.Game/Overlays/Settings/Sections/General/UpdateSettings.cs
index b68a4fed48..d97cf699e5 100644
--- a/osu.Game/Overlays/Settings/Sections/General/UpdateSettings.cs
+++ b/osu.Game/Overlays/Settings/Sections/General/UpdateSettings.cs
@@ -54,7 +54,7 @@ namespace osu.Game.Overlays.Settings.Sections.General
{
notifications?.Post(new SimpleNotification
{
- Text = $"You are running the latest release ({game.Version})",
+ Text = GeneralSettingsStrings.RunningLatestRelease(game.Version),
Icon = FontAwesome.Solid.CheckCircle,
});
}
diff --git a/osu.Game/Overlays/Settings/Sections/Input/TabletSettings.cs b/osu.Game/Overlays/Settings/Sections/Input/TabletSettings.cs
index 271438ed14..43676c5bbe 100644
--- a/osu.Game/Overlays/Settings/Sections/Input/TabletSettings.cs
+++ b/osu.Game/Overlays/Settings/Sections/Input/TabletSettings.cs
@@ -110,11 +110,10 @@ namespace osu.Game.Overlays.Settings.Sections.Input
if (RuntimeInfo.OS == RuntimeInfo.Platform.Windows || RuntimeInfo.OS == RuntimeInfo.Platform.Linux)
{
t.NewLine();
- t.AddText("If your tablet is not detected, please read ");
- t.AddLink("this FAQ", LinkAction.External, RuntimeInfo.OS == RuntimeInfo.Platform.Windows
+ var formattedSource = MessageFormatter.FormatText(TabletSettingsStrings.NoTabletDetectedDescription(RuntimeInfo.OS == RuntimeInfo.Platform.Windows
? @"https://opentabletdriver.net/Wiki/FAQ/Windows"
- : @"https://opentabletdriver.net/Wiki/FAQ/Linux");
- t.AddText(" for troubleshooting steps.");
+ : @"https://opentabletdriver.net/Wiki/FAQ/Linux").ToString());
+ t.AddLinks(formattedSource.Text, formattedSource.Links);
}
}),
}
diff --git a/osu.Game/Overlays/Settings/Sections/Maintenance/BeatmapSettings.cs b/osu.Game/Overlays/Settings/Sections/Maintenance/BeatmapSettings.cs
index 453dbd2e18..00342faf3b 100644
--- a/osu.Game/Overlays/Settings/Sections/Maintenance/BeatmapSettings.cs
+++ b/osu.Game/Overlays/Settings/Sections/Maintenance/BeatmapSettings.cs
@@ -13,7 +13,7 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
{
public class BeatmapSettings : SettingsSubsection
{
- protected override LocalisableString Header => "Beatmaps";
+ protected override LocalisableString Header => MaintenanceSettingsStrings.Beatmaps;
private SettingsButton importBeatmapsButton = null!;
private SettingsButton deleteBeatmapsButton = null!;
diff --git a/osu.Game/Overlays/Settings/Sections/Maintenance/CollectionsSettings.cs b/osu.Game/Overlays/Settings/Sections/Maintenance/CollectionsSettings.cs
index 5a91213eb8..9ec6f59fb5 100644
--- a/osu.Game/Overlays/Settings/Sections/Maintenance/CollectionsSettings.cs
+++ b/osu.Game/Overlays/Settings/Sections/Maintenance/CollectionsSettings.cs
@@ -12,7 +12,7 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
{
public class CollectionsSettings : SettingsSubsection
{
- protected override LocalisableString Header => "Collections";
+ protected override LocalisableString Header => MaintenanceSettingsStrings.Collections;
private SettingsButton importCollectionsButton = null!;
@@ -51,7 +51,7 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
private void deleteAllCollections()
{
realm.Write(r => r.RemoveAll());
- notificationOverlay?.Post(new ProgressCompletionNotification { Text = "Deleted all collections!" });
+ notificationOverlay?.Post(new ProgressCompletionNotification { Text = MaintenanceSettingsStrings.DeletedAllCollections });
}
}
}
diff --git a/osu.Game/Overlays/Settings/Sections/Maintenance/MassDeleteConfirmationDialog.cs b/osu.Game/Overlays/Settings/Sections/Maintenance/MassDeleteConfirmationDialog.cs
index 19e6f83dac..bcfccaa5e2 100644
--- a/osu.Game/Overlays/Settings/Sections/Maintenance/MassDeleteConfirmationDialog.cs
+++ b/osu.Game/Overlays/Settings/Sections/Maintenance/MassDeleteConfirmationDialog.cs
@@ -2,6 +2,7 @@
// See the LICENCE file in the repository root for full licence text.
using System;
+using osu.Game.Localisation;
using osu.Game.Overlays.Dialog;
namespace osu.Game.Overlays.Settings.Sections.Maintenance
@@ -10,7 +11,7 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
{
public MassDeleteConfirmationDialog(Action deleteAction)
{
- BodyText = "Everything?";
+ BodyText = MaintenanceSettingsStrings.MassDeleteConfirmation;
DeleteAction = deleteAction;
}
}
diff --git a/osu.Game/Overlays/Settings/Sections/Maintenance/MassVideoDeleteConfirmationDialog.cs b/osu.Game/Overlays/Settings/Sections/Maintenance/MassVideoDeleteConfirmationDialog.cs
index fc8c9d497b..a386c64806 100644
--- a/osu.Game/Overlays/Settings/Sections/Maintenance/MassVideoDeleteConfirmationDialog.cs
+++ b/osu.Game/Overlays/Settings/Sections/Maintenance/MassVideoDeleteConfirmationDialog.cs
@@ -2,6 +2,7 @@
// See the LICENCE file in the repository root for full licence text.
using System;
+using osu.Game.Localisation;
namespace osu.Game.Overlays.Settings.Sections.Maintenance
{
@@ -10,7 +11,7 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
public MassVideoDeleteConfirmationDialog(Action deleteAction)
: base(deleteAction)
{
- BodyText = "All beatmap videos? This cannot be undone!";
+ BodyText = MaintenanceSettingsStrings.MassVideoDeleteConfirmation;
}
}
}
diff --git a/osu.Game/Overlays/Settings/Sections/Maintenance/MigrationRunScreen.cs b/osu.Game/Overlays/Settings/Sections/Maintenance/MigrationRunScreen.cs
index d565576d09..158e1a8aa0 100644
--- a/osu.Game/Overlays/Settings/Sections/Maintenance/MigrationRunScreen.cs
+++ b/osu.Game/Overlays/Settings/Sections/Maintenance/MigrationRunScreen.cs
@@ -15,6 +15,7 @@ using osu.Framework.Screens;
using osu.Game.Graphics;
using osu.Game.Graphics.Sprites;
using osu.Game.Graphics.UserInterface;
+using osu.Game.Localisation;
using osu.Game.Overlays.Notifications;
using osu.Game.Screens;
using osuTK;
@@ -71,14 +72,14 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
- Text = "Migration in progress",
+ Text = MaintenanceSettingsStrings.MigrationInProgress,
Font = OsuFont.Default.With(size: 40)
},
new OsuSpriteText
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
- Text = "This could take a few minutes depending on the speed of your disk(s).",
+ Text = MaintenanceSettingsStrings.MigrationDescription,
Font = OsuFont.Default.With(size: 30)
},
new LoadingSpinner(true)
@@ -89,7 +90,7 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
{
Anchor = Anchor.Centre,
Origin = Anchor.Centre,
- Text = "Please avoid interacting with the game!",
+ Text = MaintenanceSettingsStrings.ProhibitedInteractDuringMigration,
Font = OsuFont.Default.With(size: 30)
},
}
@@ -111,7 +112,7 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
{
notifications.Post(new SimpleNotification
{
- Text = "Some files couldn't be cleaned up during migration. Clicking this notification will open the folder so you can manually clean things up.",
+ Text = MaintenanceSettingsStrings.FailedCleanupNotification,
Activated = () =>
{
originalStorage.PresentExternally();
diff --git a/osu.Game/Overlays/Settings/Sections/Maintenance/MigrationSelectScreen.cs b/osu.Game/Overlays/Settings/Sections/Maintenance/MigrationSelectScreen.cs
index 0d32e33d87..2f4f04fbc2 100644
--- a/osu.Game/Overlays/Settings/Sections/Maintenance/MigrationSelectScreen.cs
+++ b/osu.Game/Overlays/Settings/Sections/Maintenance/MigrationSelectScreen.cs
@@ -12,6 +12,7 @@ using osu.Framework.Logging;
using osu.Framework.Platform;
using osu.Framework.Screens;
using osu.Game.IO;
+using osu.Game.Localisation;
using osu.Game.Overlays.Dialog;
namespace osu.Game.Overlays.Settings.Sections.Maintenance
@@ -35,7 +36,7 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
public override bool HideOverlaysOnEnter => true;
- public override LocalisableString HeaderText => "Please select a new location";
+ public override LocalisableString HeaderText => MaintenanceSettingsStrings.SelectNewLocation;
protected override void OnSelection(DirectoryInfo directory)
{
@@ -51,9 +52,9 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
// Quick test for whether there's already an osu! install at the target path.
if (fileInfos.Any(f => f.Name == OsuGameBase.CLIENT_DATABASE_FILENAME))
{
- dialogOverlay.Push(new ConfirmDialog("The target directory already seems to have an osu! install. Use that data instead?", () =>
+ dialogOverlay.Push(new ConfirmDialog(MaintenanceSettingsStrings.TargetDirectoryAlreadyInstalledOsu.ToString(), () =>
{
- dialogOverlay.Push(new ConfirmDialog("To complete this operation, osu! will close. Please open it again to use the new data location.", () =>
+ dialogOverlay.Push(new ConfirmDialog(MaintenanceSettingsStrings.RestartAndReOpenRequiredForCompletion.ToString(), () =>
{
(storage as OsuStorage)?.ChangeDataPath(target.FullName);
game.Exit();
diff --git a/osu.Game/Overlays/Settings/Sections/Maintenance/ModPresetSettings.cs b/osu.Game/Overlays/Settings/Sections/Maintenance/ModPresetSettings.cs
index d35d3ff468..3e3138f041 100644
--- a/osu.Game/Overlays/Settings/Sections/Maintenance/ModPresetSettings.cs
+++ b/osu.Game/Overlays/Settings/Sections/Maintenance/ModPresetSettings.cs
@@ -16,7 +16,7 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
{
public class ModPresetSettings : SettingsSubsection
{
- protected override LocalisableString Header => "Mod presets";
+ protected override LocalisableString Header => MaintenanceSettingsStrings.ModPresets;
[Resolved]
private RealmAccess realm { get; set; } = null!;
@@ -64,7 +64,7 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
deleteAllButton.Enabled.Value = true;
if (deletionTask.IsCompletedSuccessfully)
- notificationOverlay?.Post(new ProgressCompletionNotification { Text = "Deleted all mod presets!" });
+ notificationOverlay?.Post(new ProgressCompletionNotification { Text = MaintenanceSettingsStrings.DeletedAllModPresets });
else if (deletionTask.IsFaulted)
Logger.Error(deletionTask.Exception, "Failed to delete all mod presets");
}
@@ -81,7 +81,7 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
undeleteButton.Enabled.Value = true;
if (undeletionTask.IsCompletedSuccessfully)
- notificationOverlay?.Post(new ProgressCompletionNotification { Text = "Restored all deleted mod presets!" });
+ notificationOverlay?.Post(new ProgressCompletionNotification { Text = MaintenanceSettingsStrings.RestoredAllDeletedModPresets });
else if (undeletionTask.IsFaulted)
Logger.Error(undeletionTask.Exception, "Failed to restore mod presets");
}
diff --git a/osu.Game/Overlays/Settings/Sections/Maintenance/ScoreSettings.cs b/osu.Game/Overlays/Settings/Sections/Maintenance/ScoreSettings.cs
index 70e11d45dc..6377d59e2a 100644
--- a/osu.Game/Overlays/Settings/Sections/Maintenance/ScoreSettings.cs
+++ b/osu.Game/Overlays/Settings/Sections/Maintenance/ScoreSettings.cs
@@ -12,7 +12,7 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
{
public class ScoreSettings : SettingsSubsection
{
- protected override LocalisableString Header => "Scores";
+ protected override LocalisableString Header => MaintenanceSettingsStrings.Scores;
private SettingsButton importScoresButton = null!;
private SettingsButton deleteScoresButton = null!;
diff --git a/osu.Game/Overlays/Settings/Sections/Maintenance/SkinSettings.cs b/osu.Game/Overlays/Settings/Sections/Maintenance/SkinSettings.cs
index c95b1d4dd8..893981f3d9 100644
--- a/osu.Game/Overlays/Settings/Sections/Maintenance/SkinSettings.cs
+++ b/osu.Game/Overlays/Settings/Sections/Maintenance/SkinSettings.cs
@@ -12,7 +12,7 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
{
public class SkinSettings : SettingsSubsection
{
- protected override LocalisableString Header => "Skins";
+ protected override LocalisableString Header => MaintenanceSettingsStrings.Skins;
private SettingsButton importSkinsButton = null!;
private SettingsButton deleteSkinsButton = null!;
diff --git a/osu.Game/Overlays/Settings/Sections/Maintenance/StableDirectoryLocationDialog.cs b/osu.Game/Overlays/Settings/Sections/Maintenance/StableDirectoryLocationDialog.cs
index 8aff4520b5..31e5b05596 100644
--- a/osu.Game/Overlays/Settings/Sections/Maintenance/StableDirectoryLocationDialog.cs
+++ b/osu.Game/Overlays/Settings/Sections/Maintenance/StableDirectoryLocationDialog.cs
@@ -7,6 +7,7 @@ using System.Threading.Tasks;
using osu.Framework.Allocation;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Screens;
+using osu.Game.Localisation;
using osu.Game.Overlays.Dialog;
using osu.Game.Screens;
@@ -19,8 +20,8 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
public StableDirectoryLocationDialog(TaskCompletionSource taskCompletionSource)
{
- HeaderText = "Failed to automatically locate an osu!stable installation.";
- BodyText = "An existing install could not be located. If you know where it is, you can help locate it.";
+ HeaderText = MaintenanceSettingsStrings.StableDirectoryLocationHeader;
+ BodyText = MaintenanceSettingsStrings.StableDirectoryLocationBody;
Icon = FontAwesome.Solid.QuestionCircle;
Buttons = new PopupDialogButton[]
diff --git a/osu.Game/Overlays/Settings/Sections/Maintenance/StableDirectorySelectScreen.cs b/osu.Game/Overlays/Settings/Sections/Maintenance/StableDirectorySelectScreen.cs
index 047d589689..22cf2e7076 100644
--- a/osu.Game/Overlays/Settings/Sections/Maintenance/StableDirectorySelectScreen.cs
+++ b/osu.Game/Overlays/Settings/Sections/Maintenance/StableDirectorySelectScreen.cs
@@ -8,6 +8,7 @@ using System.Linq;
using System.Threading.Tasks;
using osu.Framework.Localisation;
using osu.Framework.Screens;
+using osu.Game.Localisation;
namespace osu.Game.Overlays.Settings.Sections.Maintenance
{
@@ -19,7 +20,7 @@ namespace osu.Game.Overlays.Settings.Sections.Maintenance
protected override bool IsValidDirectory(DirectoryInfo info) => info?.GetFiles("osu!.*.cfg").Any() ?? false;
- public override LocalisableString HeaderText => "Please select your osu!stable install location";
+ public override LocalisableString HeaderText => MaintenanceSettingsStrings.StableDirectorySelectHeader;
public StableDirectorySelectScreen(TaskCompletionSource taskCompletionSource)
{