diff --git a/osu.Game/Configuration/BackgroundSource.cs b/osu.Game/Configuration/BackgroundSource.cs
index b4a1fd78c3..f08b29cffe 100644
--- a/osu.Game/Configuration/BackgroundSource.cs
+++ b/osu.Game/Configuration/BackgroundSource.cs
@@ -3,16 +3,20 @@
#nullable disable
-using System.ComponentModel;
+using osu.Framework.Localisation;
+using osu.Game.Localisation;
namespace osu.Game.Configuration
{
public enum BackgroundSource
{
+ [LocalisableDescription(typeof(SkinSettingsStrings), nameof(SkinSettingsStrings.SkinSectionHeader))]
Skin,
+
+ [LocalisableDescription(typeof(GameplaySettingsStrings), nameof(GameplaySettingsStrings.BeatmapHeader))]
Beatmap,
- [Description("Beatmap (with storyboard / video)")]
+ [LocalisableDescription(typeof(UserInterfaceStrings), nameof(UserInterfaceStrings.BeatmapWithStoryboard))]
BeatmapWithStoryboard,
}
}
diff --git a/osu.Game/Configuration/DiscordRichPresenceMode.cs b/osu.Game/Configuration/DiscordRichPresenceMode.cs
index 935619920a..604c151224 100644
--- a/osu.Game/Configuration/DiscordRichPresenceMode.cs
+++ b/osu.Game/Configuration/DiscordRichPresenceMode.cs
@@ -3,17 +3,20 @@
#nullable disable
-using System.ComponentModel;
+using osu.Framework.Localisation;
+using osu.Game.Localisation;
namespace osu.Game.Configuration
{
public enum DiscordRichPresenceMode
{
+ [LocalisableDescription(typeof(OnlineSettingsStrings), nameof(OnlineSettingsStrings.Off))]
Off,
- [Description("Hide identifiable information")]
+ [LocalisableDescription(typeof(OnlineSettingsStrings), nameof(OnlineSettingsStrings.HideIdentifiableInformation))]
Limited,
+ [LocalisableDescription(typeof(OnlineSettingsStrings), nameof(OnlineSettingsStrings.Full))]
Full
}
}
diff --git a/osu.Game/Configuration/HUDVisibilityMode.cs b/osu.Game/Configuration/HUDVisibilityMode.cs
index ec54bfcb71..ac85081edf 100644
--- a/osu.Game/Configuration/HUDVisibilityMode.cs
+++ b/osu.Game/Configuration/HUDVisibilityMode.cs
@@ -3,17 +3,20 @@
#nullable disable
-using System.ComponentModel;
+using osu.Framework.Localisation;
+using osu.Game.Localisation;
namespace osu.Game.Configuration
{
public enum HUDVisibilityMode
{
+ [LocalisableDescription(typeof(GameplaySettingsStrings), nameof(GameplaySettingsStrings.Never))]
Never,
- [Description("Hide during gameplay")]
+ [LocalisableDescription(typeof(GameplaySettingsStrings), nameof(GameplaySettingsStrings.HideDuringGameplay))]
HideDuringGameplay,
+ [LocalisableDescription(typeof(GameplaySettingsStrings), nameof(GameplaySettingsStrings.Always))]
Always
}
}
diff --git a/osu.Game/Configuration/RandomSelectAlgorithm.cs b/osu.Game/Configuration/RandomSelectAlgorithm.cs
index 9a02aaee60..052c6b4c55 100644
--- a/osu.Game/Configuration/RandomSelectAlgorithm.cs
+++ b/osu.Game/Configuration/RandomSelectAlgorithm.cs
@@ -3,16 +3,17 @@
#nullable disable
-using System.ComponentModel;
+using osu.Framework.Localisation;
+using osu.Game.Localisation;
namespace osu.Game.Configuration
{
public enum RandomSelectAlgorithm
{
- [Description("Never repeat")]
+ [LocalisableDescription(typeof(UserInterfaceStrings), nameof(UserInterfaceStrings.NeverRepeat))]
RandomPermutation,
- [Description("True Random")]
+ [LocalisableDescription(typeof(UserInterfaceStrings), nameof(UserInterfaceStrings.TrueRandom))]
Random
}
}
diff --git a/osu.Game/Configuration/ScalingMode.cs b/osu.Game/Configuration/ScalingMode.cs
index 25c3692a1a..c655fe1000 100644
--- a/osu.Game/Configuration/ScalingMode.cs
+++ b/osu.Game/Configuration/ScalingMode.cs
@@ -3,17 +3,23 @@
#nullable disable
-using System.ComponentModel;
+using osu.Framework.Localisation;
+using osu.Game.Localisation;
namespace osu.Game.Configuration
{
public enum ScalingMode
{
+ [LocalisableDescription(typeof(LayoutSettingsStrings), nameof(LayoutSettingsStrings.Off))]
Off,
+
+ [LocalisableDescription(typeof(LayoutSettingsStrings), nameof(LayoutSettingsStrings.Everything))]
Everything,
- [Description("Excluding overlays")]
+ [LocalisableDescription(typeof(LayoutSettingsStrings), nameof(LayoutSettingsStrings.ExcludingOverlays))]
ExcludeOverlays,
+
+ [LocalisableDescription(typeof(LayoutSettingsStrings), nameof(LayoutSettingsStrings.Gameplay))]
Gameplay,
}
}
diff --git a/osu.Game/Configuration/ScreenshotFormat.cs b/osu.Game/Configuration/ScreenshotFormat.cs
index 57c08538b8..d29c5e3d80 100644
--- a/osu.Game/Configuration/ScreenshotFormat.cs
+++ b/osu.Game/Configuration/ScreenshotFormat.cs
@@ -3,16 +3,17 @@
#nullable disable
-using System.ComponentModel;
+using osu.Framework.Localisation;
+using osu.Game.Localisation;
namespace osu.Game.Configuration
{
public enum ScreenshotFormat
{
- [Description("JPG (web-friendly)")]
+ [LocalisableDescription(typeof(GraphicsSettingsStrings), nameof(GraphicsSettingsStrings.JPG))]
Jpg = 1,
- [Description("PNG (lossless)")]
+ [LocalisableDescription(typeof(GraphicsSettingsStrings), nameof(GraphicsSettingsStrings.PNG))]
Png = 2
}
}
diff --git a/osu.Game/Configuration/SeasonalBackgroundMode.cs b/osu.Game/Configuration/SeasonalBackgroundMode.cs
index 909798fe97..cf01dca0c2 100644
--- a/osu.Game/Configuration/SeasonalBackgroundMode.cs
+++ b/osu.Game/Configuration/SeasonalBackgroundMode.cs
@@ -3,6 +3,9 @@
#nullable disable
+using osu.Framework.Localisation;
+using osu.Game.Localisation;
+
namespace osu.Game.Configuration
{
public enum SeasonalBackgroundMode
@@ -10,16 +13,19 @@ namespace osu.Game.Configuration
///
/// Seasonal backgrounds are shown regardless of season, if at all available.
///
+ [LocalisableDescription(typeof(UserInterfaceStrings), nameof(UserInterfaceStrings.Always))]
Always,
///
/// Seasonal backgrounds are shown only during their corresponding season.
///
+ [LocalisableDescription(typeof(UserInterfaceStrings), nameof(UserInterfaceStrings.Sometimes))]
Sometimes,
///
/// Seasonal backgrounds are never shown.
///
+ [LocalisableDescription(typeof(UserInterfaceStrings), nameof(UserInterfaceStrings.Never))]
Never
}
}
diff --git a/osu.Game/Input/OsuConfineMouseMode.cs b/osu.Game/Input/OsuConfineMouseMode.cs
index 2a93ac1cd6..97c9df5072 100644
--- a/osu.Game/Input/OsuConfineMouseMode.cs
+++ b/osu.Game/Input/OsuConfineMouseMode.cs
@@ -3,8 +3,9 @@
#nullable disable
-using System.ComponentModel;
using osu.Framework.Input;
+using osu.Framework.Localisation;
+using osu.Game.Localisation;
namespace osu.Game.Input
{
@@ -17,18 +18,20 @@ namespace osu.Game.Input
///
/// The mouse cursor will be free to move outside the game window.
///
+ [LocalisableDescription(typeof(MouseSettingsStrings), nameof(MouseSettingsStrings.Never))]
Never,
///
/// The mouse cursor will be locked to the window bounds during gameplay,
/// but may otherwise move freely.
///
- [Description("During Gameplay")]
+ [LocalisableDescription(typeof(MouseSettingsStrings), nameof(MouseSettingsStrings.DuringGameplay))]
DuringGameplay,
///
/// The mouse cursor will always be locked to the window bounds while the game has focus.
///
+ [LocalisableDescription(typeof(MouseSettingsStrings), nameof(MouseSettingsStrings.Always))]
Always
}
}
diff --git a/osu.Game/Localisation/CommonStrings.cs b/osu.Game/Localisation/CommonStrings.cs
index f2dcd57742..93e3276f59 100644
--- a/osu.Game/Localisation/CommonStrings.cs
+++ b/osu.Game/Localisation/CommonStrings.cs
@@ -101,4 +101,4 @@ namespace osu.Game.Localisation
private static string getKey(string key) => $@"{prefix}:{key}";
}
-}
\ No newline at end of file
+}
diff --git a/osu.Game/Localisation/GameplaySettingsStrings.cs b/osu.Game/Localisation/GameplaySettingsStrings.cs
index 8a0f773551..51450d975d 100644
--- a/osu.Game/Localisation/GameplaySettingsStrings.cs
+++ b/osu.Game/Localisation/GameplaySettingsStrings.cs
@@ -104,6 +104,31 @@ namespace osu.Game.Localisation
///
public static LocalisableString IncreaseFirstObjectVisibility => new TranslatableString(getKey(@"increase_first_object_visibility"), @"Increase visibility of first object when visual impairment mods are enabled");
+ ///
+ /// "Hide during gameplay"
+ ///
+ public static LocalisableString HideDuringGameplay => new TranslatableString(getKey(@"hide_during_gameplay"), @"Hide during gameplay");
+
+ ///
+ /// "Always"
+ ///
+ public static LocalisableString Always => new TranslatableString(getKey(@"always"), @"Always");
+
+ ///
+ /// "Never"
+ ///
+ public static LocalisableString Never => new TranslatableString(getKey(@"never"), @"Never");
+
+ ///
+ /// "Standardised"
+ ///
+ public static LocalisableString Standardised => new TranslatableString(getKey(@"standardised"), @"Standardised");
+
+ ///
+ /// "Classic"
+ ///
+ public static LocalisableString Classic => new TranslatableString(getKey(@"classic"), @"Classic");
+
private static string getKey(string key) => $"{prefix}:{key}";
}
}
diff --git a/osu.Game/Localisation/GraphicsSettingsStrings.cs b/osu.Game/Localisation/GraphicsSettingsStrings.cs
index 38355d9041..42632b9a38 100644
--- a/osu.Game/Localisation/GraphicsSettingsStrings.cs
+++ b/osu.Game/Localisation/GraphicsSettingsStrings.cs
@@ -129,6 +129,16 @@ namespace osu.Game.Localisation
///
public static LocalisableString UseHardwareAcceleration => new TranslatableString(getKey(@"use_hardware_acceleration"), @"Use hardware acceleration");
+ ///
+ /// "JPG (web-friendly)"
+ ///
+ public static LocalisableString JPG => new TranslatableString(getKey(@"jpg_web_friendly"), @"JPG (web-friendly)");
+
+ ///
+ /// "PNG (lossless)"
+ ///
+ public static LocalisableString PNG => new TranslatableString(getKey(@"png_lossless"), @"PNG (lossless)");
+
private static string getKey(string key) => $"{prefix}:{key}";
}
}
diff --git a/osu.Game/Localisation/LayoutSettingsStrings.cs b/osu.Game/Localisation/LayoutSettingsStrings.cs
index b4326b8e39..729b4bce6a 100644
--- a/osu.Game/Localisation/LayoutSettingsStrings.cs
+++ b/osu.Game/Localisation/LayoutSettingsStrings.cs
@@ -29,6 +29,26 @@ namespace osu.Game.Localisation
///
public static LocalisableString FullscreenMacOSNote => new TranslatableString(getKey(@"fullscreen_macos_note"), @"Using fullscreen on macOS makes interacting with the menu bar and spaces no longer work, and may lead to freezes if a system dialog is presented. Using borderless is recommended.");
+ ///
+ /// "Excluding overlays"
+ ///
+ public static LocalisableString ExcludingOverlays => new TranslatableString(getKey(@"excluding_overlays"), @"Excluding overlays");
+
+ ///
+ /// "Everything"
+ ///
+ public static LocalisableString Everything => new TranslatableString(getKey(@"everything"), @"Everything");
+
+ ///
+ /// "Gameplay"
+ ///
+ public static LocalisableString Gameplay => new TranslatableString(getKey(@"gameplay"), @"Gameplay");
+
+ ///
+ /// "Off"
+ ///
+ public static LocalisableString Off => new TranslatableString(getKey(@"scaling_mode.off"), @"Off");
+
private static string getKey(string key) => $@"{prefix}:{key}";
}
}
diff --git a/osu.Game/Localisation/MouseSettingsStrings.cs b/osu.Game/Localisation/MouseSettingsStrings.cs
index fd7225ad2e..b9ae3de378 100644
--- a/osu.Game/Localisation/MouseSettingsStrings.cs
+++ b/osu.Game/Localisation/MouseSettingsStrings.cs
@@ -64,6 +64,21 @@ namespace osu.Game.Localisation
///
public static LocalisableString HighPrecisionPlatformWarning => new TranslatableString(getKey(@"high_precision_platform_warning"), @"This setting has known issues on your platform. If you encounter problems, it is recommended to adjust sensitivity externally and keep this disabled for now.");
+ ///
+ /// "Always"
+ ///
+ public static LocalisableString Always => new TranslatableString(getKey(@"always"), @"Always");
+
+ ///
+ /// "During Gameplay"
+ ///
+ public static LocalisableString DuringGameplay => new TranslatableString(getKey(@"during_gameplay"), @"During Gameplay");
+
+ ///
+ /// "Never"
+ ///
+ public static LocalisableString Never => new TranslatableString(getKey(@"never"), @"Never");
+
private static string getKey(string key) => $@"{prefix}:{key}";
}
}
diff --git a/osu.Game/Localisation/OnlineSettingsStrings.cs b/osu.Game/Localisation/OnlineSettingsStrings.cs
index 6862f4ac2c..ad47284709 100644
--- a/osu.Game/Localisation/OnlineSettingsStrings.cs
+++ b/osu.Game/Localisation/OnlineSettingsStrings.cs
@@ -64,6 +64,21 @@ namespace osu.Game.Localisation
///
public static LocalisableString ShowExplicitContent => new TranslatableString(getKey(@"show_explicit_content"), @"Show explicit content in search results");
+ ///
+ /// "Hide identifiable information"
+ ///
+ public static LocalisableString HideIdentifiableInformation => new TranslatableString(getKey(@"hide_identifiable_information"), @"Hide identifiable information");
+
+ ///
+ /// "Full"
+ ///
+ public static LocalisableString Full => new TranslatableString(getKey(@"full"), @"Full");
+
+ ///
+ /// "Off"
+ ///
+ public static LocalisableString Off => new TranslatableString(getKey(@"off"), @"Off");
+
private static string getKey(string key) => $"{prefix}:{key}";
}
}
diff --git a/osu.Game/Localisation/RulesetSettingsStrings.cs b/osu.Game/Localisation/RulesetSettingsStrings.cs
index a356c9e20b..bfd76148ea 100644
--- a/osu.Game/Localisation/RulesetSettingsStrings.cs
+++ b/osu.Game/Localisation/RulesetSettingsStrings.cs
@@ -14,6 +14,21 @@ namespace osu.Game.Localisation
///
public static LocalisableString Rulesets => new TranslatableString(getKey(@"rulesets"), @"Rulesets");
+ ///
+ /// "None"
+ ///
+ public static LocalisableString None => new TranslatableString(getKey(@"none"), @"None");
+
+ ///
+ /// "Corners"
+ ///
+ public static LocalisableString Corners => new TranslatableString(getKey(@"corners"), @"Corners");
+
+ ///
+ /// "Full"
+ ///
+ public static LocalisableString Full => new TranslatableString(getKey(@"full"), @"Full");
+
private static string getKey(string key) => $@"{prefix}:{key}";
}
}
diff --git a/osu.Game/Localisation/UserInterfaceStrings.cs b/osu.Game/Localisation/UserInterfaceStrings.cs
index a090b8c14c..b1f16c05f0 100644
--- a/osu.Game/Localisation/UserInterfaceStrings.cs
+++ b/osu.Game/Localisation/UserInterfaceStrings.cs
@@ -114,6 +114,46 @@ namespace osu.Game.Localisation
///
public static LocalisableString NoLimit => new TranslatableString(getKey(@"no_limit"), @"no limit");
+ ///
+ /// "Beatmap (with storyboard / video)"
+ ///
+ public static LocalisableString BeatmapWithStoryboard => new TranslatableString(getKey(@"beatmap_with_storyboard"), @"Beatmap (with storyboard / video)");
+
+ ///
+ /// "Always"
+ ///
+ public static LocalisableString Always => new TranslatableString(getKey(@"always"), @"Always");
+
+ ///
+ /// "Never"
+ ///
+ public static LocalisableString Never => new TranslatableString(getKey(@"never"), @"Never");
+
+ ///
+ /// "Sometimes"
+ ///
+ public static LocalisableString Sometimes => new TranslatableString(getKey(@"sometimes"), @"Sometimes");
+
+ ///
+ /// "Sequential"
+ ///
+ public static LocalisableString Sequential => new TranslatableString(getKey(@"sequential"), @"Sequential");
+
+ ///
+ /// "Classic"
+ ///
+ public static LocalisableString Classic => new TranslatableString(getKey(@"classic"), @"Classic");
+
+ ///
+ /// "Never repeat"
+ ///
+ public static LocalisableString NeverRepeat => new TranslatableString(getKey(@"never_repeat"), @"Never repeat");
+
+ ///
+ /// "True Random"
+ ///
+ public static LocalisableString TrueRandom => new TranslatableString(getKey(@"true_random"), @"True Random");
+
private static string getKey(string key) => $"{prefix}:{key}";
}
}
diff --git a/osu.Game/Overlays/Mods/Input/ModSelectHotkeyStyle.cs b/osu.Game/Overlays/Mods/Input/ModSelectHotkeyStyle.cs
index 6375b37f8b..17f005c313 100644
--- a/osu.Game/Overlays/Mods/Input/ModSelectHotkeyStyle.cs
+++ b/osu.Game/Overlays/Mods/Input/ModSelectHotkeyStyle.cs
@@ -1,7 +1,9 @@
// Copyright (c) ppy Pty Ltd . Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
+using osu.Framework.Localisation;
using osu.Game.Rulesets.Mods;
+using osu.Game.Localisation;
namespace osu.Game.Overlays.Mods.Input
{
@@ -15,6 +17,7 @@ namespace osu.Game.Overlays.Mods.Input
/// Individual letters in a row trigger the mods in a sequential fashion.
/// Uses .
///
+ [LocalisableDescription(typeof(UserInterfaceStrings), nameof(UserInterfaceStrings.Sequential))]
Sequential,
///
@@ -22,6 +25,7 @@ namespace osu.Game.Overlays.Mods.Input
/// One keybinding can toggle between what used to be s on stable,
/// and some mods in a column may not have any hotkeys at all.
///
+ [LocalisableDescription(typeof(UserInterfaceStrings), nameof(UserInterfaceStrings.Classic))]
Classic
}
}
diff --git a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs
index 59fee0f97b..8b98a799ac 100644
--- a/osu.Game/Rulesets/Scoring/ScoreProcessor.cs
+++ b/osu.Game/Rulesets/Scoring/ScoreProcessor.cs
@@ -16,6 +16,8 @@ using osu.Game.Rulesets.Mods;
using osu.Game.Rulesets.Objects;
using osu.Game.Rulesets.Replays;
using osu.Game.Scoring;
+using osu.Framework.Localisation;
+using osu.Game.Localisation;
namespace osu.Game.Rulesets.Scoring
{
@@ -636,7 +638,10 @@ namespace osu.Game.Rulesets.Scoring
public enum ScoringMode
{
+ [LocalisableDescription(typeof(GameplaySettingsStrings), nameof(GameplaySettingsStrings.Standardised))]
Standardised,
+
+ [LocalisableDescription(typeof(GameplaySettingsStrings), nameof(GameplaySettingsStrings.Classic))]
Classic
}
}
diff --git a/osu.Game/Rulesets/UI/PlayfieldBorderStyle.cs b/osu.Game/Rulesets/UI/PlayfieldBorderStyle.cs
index a4a483e930..9d6c7794a5 100644
--- a/osu.Game/Rulesets/UI/PlayfieldBorderStyle.cs
+++ b/osu.Game/Rulesets/UI/PlayfieldBorderStyle.cs
@@ -3,12 +3,20 @@
#nullable disable
+using osu.Framework.Localisation;
+using osu.Game.Localisation;
+
namespace osu.Game.Rulesets.UI
{
public enum PlayfieldBorderStyle
{
+ [LocalisableDescription(typeof(RulesetSettingsStrings), nameof(RulesetSettingsStrings.None))]
None,
+
+ [LocalisableDescription(typeof(RulesetSettingsStrings), nameof(RulesetSettingsStrings.Corners))]
Corners,
+
+ [LocalisableDescription(typeof(RulesetSettingsStrings), nameof(RulesetSettingsStrings.Full))]
Full
}
}