diff --git a/osu.Game/Localisation/CommonStrings.cs b/osu.Game/Localisation/CommonStrings.cs
index bf488d2590..5e4ce235b4 100644
--- a/osu.Game/Localisation/CommonStrings.cs
+++ b/osu.Game/Localisation/CommonStrings.cs
@@ -19,6 +19,11 @@ namespace osu.Game.Localisation
///
public static LocalisableString Enabled => new TranslatableString(getKey(@"enabled"), @"Enabled");
+ ///
+ /// "Default"
+ ///
+ public static LocalisableString Default => new TranslatableString(getKey(@"default"), @"Default");
+
///
/// "Width"
///
@@ -31,4 +36,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/GraphicsSettingsStrings.cs b/osu.Game/Localisation/GraphicsSettingsStrings.cs
new file mode 100644
index 0000000000..841635649e
--- /dev/null
+++ b/osu.Game/Localisation/GraphicsSettingsStrings.cs
@@ -0,0 +1,119 @@
+// 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;
+
+namespace osu.Game.Localisation
+{
+ public static class GraphicsSettingsStrings
+ {
+ private const string prefix = @"osu.Game.Resources.Localisation.GraphicsSettings";
+
+ ///
+ /// "Graphics"
+ ///
+ public static LocalisableString GraphicsSectionHeader => new TranslatableString(getKey(@"graphics_section_header"), @"Graphics");
+
+ ///
+ /// "Renderer"
+ ///
+ public static LocalisableString RendererHeader => new TranslatableString(getKey(@"renderer_header"), @"Renderer");
+
+ ///
+ /// "Frame limiter"
+ ///
+ public static LocalisableString FrameLimiter => new TranslatableString(getKey(@"frame_limiter"), @"Frame limiter");
+
+ ///
+ /// "Threading mode"
+ ///
+ public static LocalisableString ThreadingMode => new TranslatableString(getKey(@"threading_mode"), @"Threading mode");
+
+ ///
+ /// "Show FPS"
+ ///
+ public static LocalisableString ShowFPS => new TranslatableString(getKey(@"show_fps"), @"Show FPS");
+
+ ///
+ /// "Using unlimited frame limiter can lead to stutters, bad performance and overheating. It will not improve perceived latency. "2x refresh rate" is recommended."
+ ///
+ public static LocalisableString UnlimitedFramesNote => new TranslatableString(getKey(@"unlimited_frames_note"), @"Using unlimited frame limiter can lead to stutters, bad performance and overheating. It will not improve perceived latency. ""2x refresh rate"" is recommended.");
+
+ ///
+ /// "Layout"
+ ///
+ public static LocalisableString LayoutHeader => new TranslatableString(getKey(@"layout_header"), @"Layout");
+
+ ///
+ /// "Screen mode"
+ ///
+ public static LocalisableString ScreenMode => new TranslatableString(getKey(@"screen_mode"), @"Screen mode");
+
+ ///
+ /// "Resolution"
+ ///
+ public static LocalisableString Resolution => new TranslatableString(getKey(@"resolution"), @"Resolution");
+
+ ///
+ /// "UI Scaling"
+ ///
+ public static LocalisableString UIScaling => new TranslatableString(getKey(@"ui_scaling"), @"UI Scaling");
+
+ ///
+ /// "Screen Scaling"
+ ///
+ public static LocalisableString ScreenScaling => new TranslatableString(getKey(@"screen_scaling"), @"Screen Scaling");
+
+ ///
+ /// "Horizontal position"
+ ///
+ public static LocalisableString HorizontalPosition => new TranslatableString(getKey(@"horizontal_position"), @"Horizontal position");
+
+ ///
+ /// "Vertical position"
+ ///
+ public static LocalisableString VerticalPosition => new TranslatableString(getKey(@"vertical_position"), @"Vertical position");
+
+ ///
+ /// "Horizontal scale"
+ ///
+ public static LocalisableString HorizontalScale => new TranslatableString(getKey(@"horizontal_scale"), @"Horizontal scale");
+
+ ///
+ /// "Vertical scale"
+ ///
+ public static LocalisableString VerticalScale => new TranslatableString(getKey(@"vertical_scale"), @"Vertical scale");
+
+ ///
+ /// "Running without fullscreen mode will increase your input latency!"
+ ///
+ public static LocalisableString NotFullscreenNote => new TranslatableString(getKey(@"not_fullscreen_note"), @"Running without fullscreen mode will increase your input latency!");
+
+ ///
+ /// "Detail Settings"
+ ///
+ public static LocalisableString DetailSettingsHeader => new TranslatableString(getKey(@"detail_settings_header"), @"Detail Settings");
+
+ ///
+ /// "Storyboard / Video"
+ ///
+ public static LocalisableString StoryboardVideo => new TranslatableString(getKey(@"storyboard_video"), @"Storyboard / Video");
+
+ ///
+ /// "Hit Lighting"
+ ///
+ public static LocalisableString HitLighting => new TranslatableString(getKey(@"hit_lighting"), @"Hit Lighting");
+
+ ///
+ /// "Screenshot format"
+ ///
+ public static LocalisableString ScreenshotFormat => new TranslatableString(getKey(@"screenshot_format"), @"Screenshot format");
+
+ ///
+ /// "Show menu cursor in screenshots"
+ ///
+ public static LocalisableString ShowCursorInScreenshots => new TranslatableString(getKey(@""), @"Show menu cursor in screenshots");
+
+ private static string getKey(string key) => $"{prefix}:{key}";
+ }
+}
diff --git a/osu.Game/Overlays/Settings/Sections/Graphics/DetailSettings.cs b/osu.Game/Overlays/Settings/Sections/Graphics/DetailSettings.cs
index f889cfca0f..20b1d8d801 100644
--- a/osu.Game/Overlays/Settings/Sections/Graphics/DetailSettings.cs
+++ b/osu.Game/Overlays/Settings/Sections/Graphics/DetailSettings.cs
@@ -5,12 +5,13 @@ using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Framework.Localisation;
using osu.Game.Configuration;
+using osu.Game.Localisation;
namespace osu.Game.Overlays.Settings.Sections.Graphics
{
public class DetailSettings : SettingsSubsection
{
- protected override LocalisableString Header => "Detail Settings";
+ protected override LocalisableString Header => GraphicsSettingsStrings.DetailSettingsHeader;
[BackgroundDependencyLoader]
private void load(OsuConfigManager config)
@@ -19,22 +20,22 @@ namespace osu.Game.Overlays.Settings.Sections.Graphics
{
new SettingsCheckbox
{
- LabelText = "Storyboard / Video",
+ LabelText = GraphicsSettingsStrings.StoryboardVideo,
Current = config.GetBindable(OsuSetting.ShowStoryboard)
},
new SettingsCheckbox
{
- LabelText = "Hit Lighting",
+ LabelText = GraphicsSettingsStrings.HitLighting,
Current = config.GetBindable(OsuSetting.HitLighting)
},
new SettingsEnumDropdown
{
- LabelText = "Screenshot format",
+ LabelText = GraphicsSettingsStrings.ScreenshotFormat,
Current = config.GetBindable(OsuSetting.ScreenshotFormat)
},
new SettingsCheckbox
{
- LabelText = "Show menu cursor in screenshots",
+ LabelText = GraphicsSettingsStrings.ShowCursorInScreenshots,
Current = config.GetBindable(OsuSetting.ScreenshotCaptureMenuCursor)
}
};
diff --git a/osu.Game/Overlays/Settings/Sections/Graphics/LayoutSettings.cs b/osu.Game/Overlays/Settings/Sections/Graphics/LayoutSettings.cs
index 91208cb78a..50bd8184ee 100644
--- a/osu.Game/Overlays/Settings/Sections/Graphics/LayoutSettings.cs
+++ b/osu.Game/Overlays/Settings/Sections/Graphics/LayoutSettings.cs
@@ -16,13 +16,14 @@ using osu.Framework.Platform;
using osu.Game.Configuration;
using osu.Game.Graphics.Containers;
using osu.Game.Graphics.UserInterface;
+using osu.Game.Localisation;
using osuTK.Graphics;
namespace osu.Game.Overlays.Settings.Sections.Graphics
{
public class LayoutSettings : SettingsSubsection
{
- protected override LocalisableString Header => "Layout";
+ protected override LocalisableString Header => GraphicsSettingsStrings.LayoutHeader;
private FillFlowContainer> scalingSettings;
@@ -67,20 +68,20 @@ namespace osu.Game.Overlays.Settings.Sections.Graphics
{
windowModeDropdown = new SettingsDropdown
{
- LabelText = "Screen mode",
+ LabelText = GraphicsSettingsStrings.ScreenMode,
ItemSource = windowModes,
Current = config.GetBindable(FrameworkSetting.WindowMode),
},
resolutionDropdown = new ResolutionSettingsDropdown
{
- LabelText = "Resolution",
+ LabelText = GraphicsSettingsStrings.Resolution,
ShowsDefaultIndicator = false,
ItemSource = resolutions,
Current = sizeFullscreen
},
new SettingsSlider
{
- LabelText = "UI Scaling",
+ LabelText = GraphicsSettingsStrings.UIScaling,
TransferValueOnCommit = true,
Current = osuConfig.GetBindable(OsuSetting.UIScale),
KeyboardStep = 0.01f,
@@ -88,7 +89,7 @@ namespace osu.Game.Overlays.Settings.Sections.Graphics
},
new SettingsEnumDropdown
{
- LabelText = "Screen Scaling",
+ LabelText = GraphicsSettingsStrings.ScreenScaling,
Current = osuConfig.GetBindable(OsuSetting.Scaling),
Keywords = new[] { "scale", "letterbox" },
},
@@ -104,28 +105,28 @@ namespace osu.Game.Overlays.Settings.Sections.Graphics
{
new SettingsSlider
{
- LabelText = "Horizontal position",
+ LabelText = GraphicsSettingsStrings.HorizontalPosition,
Current = scalingPositionX,
KeyboardStep = 0.01f,
DisplayAsPercentage = true
},
new SettingsSlider
{
- LabelText = "Vertical position",
+ LabelText = GraphicsSettingsStrings.VerticalPosition,
Current = scalingPositionY,
KeyboardStep = 0.01f,
DisplayAsPercentage = true
},
new SettingsSlider
{
- LabelText = "Horizontal scale",
+ LabelText = GraphicsSettingsStrings.HorizontalScale,
Current = scalingSizeX,
KeyboardStep = 0.01f,
DisplayAsPercentage = true
},
new SettingsSlider
{
- LabelText = "Vertical scale",
+ LabelText = GraphicsSettingsStrings.VerticalScale,
Current = scalingSizeY,
KeyboardStep = 0.01f,
DisplayAsPercentage = true
@@ -145,9 +146,7 @@ namespace osu.Game.Overlays.Settings.Sections.Graphics
{
updateResolutionDropdown();
- const string not_fullscreen_note = "Running without fullscreen mode will increase your input latency!";
-
- windowModeDropdown.WarningText = mode.NewValue != WindowMode.Fullscreen ? not_fullscreen_note : string.Empty;
+ windowModeDropdown.WarningText = mode.NewValue != WindowMode.Fullscreen ? GraphicsSettingsStrings.NotFullscreenNote : string.Empty;
}, true);
windowModes.BindCollectionChanged((sender, args) =>
@@ -245,7 +244,7 @@ namespace osu.Game.Overlays.Settings.Sections.Graphics
protected override LocalisableString GenerateItemText(Size item)
{
if (item == new Size(9999, 9999))
- return "Default";
+ return CommonStrings.Default;
return $"{item.Width}x{item.Height}";
}
diff --git a/osu.Game/Overlays/Settings/Sections/Graphics/RendererSettings.cs b/osu.Game/Overlays/Settings/Sections/Graphics/RendererSettings.cs
index 2210c7911e..9747f6b373 100644
--- a/osu.Game/Overlays/Settings/Sections/Graphics/RendererSettings.cs
+++ b/osu.Game/Overlays/Settings/Sections/Graphics/RendererSettings.cs
@@ -7,12 +7,13 @@ using osu.Framework.Graphics;
using osu.Framework.Localisation;
using osu.Framework.Platform;
using osu.Game.Configuration;
+using osu.Game.Localisation;
namespace osu.Game.Overlays.Settings.Sections.Graphics
{
public class RendererSettings : SettingsSubsection
{
- protected override LocalisableString Header => "Renderer";
+ protected override LocalisableString Header => GraphicsSettingsStrings.RendererHeader;
private SettingsEnumDropdown frameLimiterDropdown;
@@ -25,17 +26,17 @@ namespace osu.Game.Overlays.Settings.Sections.Graphics
// TODO: this needs to be a custom dropdown at some point
frameLimiterDropdown = new SettingsEnumDropdown
{
- LabelText = "Frame limiter",
+ LabelText = GraphicsSettingsStrings.FrameLimiter,
Current = config.GetBindable(FrameworkSetting.FrameSync)
},
new SettingsEnumDropdown
{
- LabelText = "Threading mode",
+ LabelText = GraphicsSettingsStrings.ThreadingMode,
Current = config.GetBindable(FrameworkSetting.ExecutionMode)
},
new SettingsCheckbox
{
- LabelText = "Show FPS",
+ LabelText = GraphicsSettingsStrings.ShowFPS,
Current = osuConfig.GetBindable(OsuSetting.ShowFpsDisplay)
},
};
@@ -47,9 +48,7 @@ namespace osu.Game.Overlays.Settings.Sections.Graphics
frameLimiterDropdown.Current.BindValueChanged(limit =>
{
- const string unlimited_frames_note = "Using unlimited frame limiter can lead to stutters, bad performance and overheating. It will not improve perceived latency. \"2x refresh rate\" is recommended.";
-
- frameLimiterDropdown.WarningText = limit.NewValue == FrameSync.Unlimited ? unlimited_frames_note : string.Empty;
+ frameLimiterDropdown.WarningText = limit.NewValue == FrameSync.Unlimited ? GraphicsSettingsStrings.UnlimitedFramesNote : string.Empty;
}, true);
}
}
diff --git a/osu.Game/Overlays/Settings/Sections/GraphicsSection.cs b/osu.Game/Overlays/Settings/Sections/GraphicsSection.cs
index 4ade48031f..fd0718f9f2 100644
--- a/osu.Game/Overlays/Settings/Sections/GraphicsSection.cs
+++ b/osu.Game/Overlays/Settings/Sections/GraphicsSection.cs
@@ -3,13 +3,15 @@
using osu.Framework.Graphics;
using osu.Framework.Graphics.Sprites;
+using osu.Framework.Localisation;
+using osu.Game.Localisation;
using osu.Game.Overlays.Settings.Sections.Graphics;
namespace osu.Game.Overlays.Settings.Sections
{
public class GraphicsSection : SettingsSection
{
- public override string Header => "Graphics";
+ public override LocalisableString Header => GraphicsSettingsStrings.GraphicsSectionHeader;
public override Drawable CreateIcon() => new SpriteIcon
{