1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-13 05:12:54 +08:00

Add debug language to help with localisation efforts

The idea is to allow a developer to immediately see which text on a
component or screen has already got localisation support. It can be a
bit of a challenge to see this when creating a new component that
doesn't yet have any translations populated.

Curious to hear thoughts on this. I could see it working very well as a
visual tests checkbox (implemented at o!f side), potentially in addition
to having this at the game level, or replacing this PR.
This commit is contained in:
Dean Herbert 2022-04-19 14:30:45 +09:00
parent c8b3836d8d
commit feeff16476
3 changed files with 44 additions and 1 deletions

View File

@ -0,0 +1,30 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using System;
using System.Collections.Generic;
using System.Globalization;
using System.IO;
using System.Threading;
using System.Threading.Tasks;
using osu.Framework.Localisation;
namespace osu.Game.Localisation
{
public class DebugLocalisationStore : ILocalisationStore
{
public string Get(string lookup) => $@"[[{lookup.Substring(lookup.LastIndexOf('.') + 1)}]]";
public Task<string> GetAsync(string lookup, CancellationToken cancellationToken = default) => Task.FromResult(Get(lookup));
public Stream GetStream(string name) => throw new NotImplementedException();
public IEnumerable<string> GetAvailableResources() => throw new NotImplementedException();
public CultureInfo EffectiveCulture { get; } = new CultureInfo(@"debug");
public void Dispose()
{
}
}
}

View File

@ -110,6 +110,11 @@ namespace osu.Game.Localisation
// zh_hk,
[Description(@"繁體中文(台灣)")]
zh_hant
zh_hant,
#if DEBUG
[Description(@"Debug (show raw keys)")]
DebugLocalisation
#endif
}
}

View File

@ -628,6 +628,14 @@ namespace osu.Game
foreach (var language in Enum.GetValues(typeof(Language)).OfType<Language>())
{
#if DEBUG
if (language == Language.DebugLocalisation)
{
Localisation.AddLanguage(Language.DebugLocalisation.ToString(), new DebugLocalisationStore());
continue;
}
#endif
string cultureCode = language.ToCultureCode();
try