Files
Ez2Lazer/osu.Game/LAsEzExtensions/Localization/EzModStrings.cs
2026-02-24 16:49:33 +08:00

160 lines
14 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// 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.Reflection;
using osu.Framework.Localisation;
using osu.Game.LAsEzExtensions.Configuration;
namespace osu.Game.LAsEzExtensions.Localization
{
public class EzModStrings : EzLocalizationManager
{
static EzModStrings()
{
// 使用反射为未设置英文的属性自动生成英文属性名替换_为空格
var fields = typeof(EzModStrings).GetFields(BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy);
foreach (var field in fields)
{
if (field.FieldType == typeof(EzLocalisableString))
{
if (field.GetValue(null) is EzLocalisableString instance && instance.English == null)
{
instance.English = field.Name.Replace("_", " ");
}
}
}
}
// 本地化字符串类,直接持有中文和英文
public new class EzLocalisableString : EzLocalizationManager.EzLocalisableString
{
public EzLocalisableString(string chinese, string? english = null)
: base(chinese, english) { }
// 便捷构造函数:如果不提供英文,则稍后通过反射从属性名生成
public EzLocalisableString(string chinese)
: base(chinese) { }
}
// ====================================================================================================
// LAsMods - Mod Descriptions
// ====================================================================================================
public static readonly LocalisableString ApplyOrder_Label = new EzLocalisableString("应用顺序", "Apply Order");
public static readonly LocalisableString ApplyOrder_Description = new EzLocalisableString("此mod在谱面转换后应用的顺序。数字越小越先运行。",
"Apply Order. Order in which this mod is applied after beatmap conversion. Lower runs earlier.");
public static readonly LocalisableString LoopPlayClip_Description = new EzLocalisableString("将谱面切割成片段用于循环练习。",
"Cut the beatmap into a clip for loop practice. (The original is YuLiangSSS's Duplicate Mod)");
// SpaceBody
public static readonly LocalisableString SpaceBody_Description = new EzLocalisableString("全LN面海可调面缝", "Full LN, adjustable gaps");
public static readonly LocalisableString SpaceBody_Label = new EzLocalisableString("全反键缝隙", "Space Body");
public static readonly LocalisableString SpaceBodyGap_Description = new EzLocalisableString("调整前后两个面之间的间隔缝隙", "Full LN, adjustable gaps");
public static readonly LocalisableString AddShield_Label = new EzLocalisableString("添加盾型", "Add Shield");
public static readonly LocalisableString AddShield_Description = new EzLocalisableString("将每个面尾添加盾牌键型", "Add shield notes in the sea");
#region LoopPlayClip
public static readonly LocalisableString LoopCount_Label = new EzLocalisableString("循环次数", "Loop Count");
public static readonly LocalisableString LoopCount_Description = new EzLocalisableString("切片循环次数", "Loop Clip Count.");
public static readonly LocalisableString SpeedChange_Label = new EzLocalisableString("改变倍速", "Speed Change");
public static readonly LocalisableString SpeedChange_Description = new EzLocalisableString("改变倍速。不允许叠加其他变速mod。", "Speed Change. The actual decrease to apply. Don't add other rate-mod.");
public static readonly LocalisableString AdjustPitch_Label = new EzLocalisableString("调整音调", "Adjust pitch");
public static readonly LocalisableString AdjustPitch_Description = new EzLocalisableString("速度改变时是否调整音调。(变速又变调)", "Adjust pitch. Should pitch be adjusted with speed.(变速又变调)");
public static readonly LocalisableString ConstantSpeed_Label = new EzLocalisableString("无SV变速", "Constant Speed");
public static readonly LocalisableString ConstantSpeed_Description = new EzLocalisableString("去除SV变速。恒定速度/忽略谱面中的变速)", "Constant Speed. No more tricky speed changes.(恒定速度/忽略谱面中的变速)");
public static readonly LocalisableString CutStartTime_Label = new EzLocalisableString("切片开始时间", "Cut Start Time");
public static readonly LocalisableString CutStartTime_Description = new EzLocalisableString("切片开始时间, 默认是秒。推荐通过谱面编辑器A-B控件设置可自动输入", "Cut StartTime. Default is second.");
public static readonly LocalisableString CutEndTime_Label = new EzLocalisableString("切片结束时间", "Cut End Time");
public static readonly LocalisableString CutEndTime_Description = new EzLocalisableString("切片结束时间, 默认是秒。推荐通过谱面编辑器A-B控件设置可自动输入", "Cut EndTime. Default is second.");
public static readonly LocalisableString UseMillisecond_Label = new EzLocalisableString("使用毫秒", "Use Millisecond");
public static readonly LocalisableString UseMillisecond_Description = new EzLocalisableString("改为使用ms单位", "Use millisecond(ms).");
public static readonly LocalisableString UseGlobalABRange_Label = new EzLocalisableString("使用全局A-B范围", "Use Global A-B Range");
public static readonly LocalisableString UseGlobalABRange_Description = new EzLocalisableString("始终使用谱面编辑器中A/B空间设置的范围毫秒。推荐保持开启",
"Use global A-B range. Always use the editor A/B range stored for this session (ms).");
public static readonly LocalisableString BreakTime_Label = new EzLocalisableString("休息时间", "Break Time");
public static readonly LocalisableString BreakTime_Description = new EzLocalisableString("设置两个切片循环之间的休息时间(以四分之一拍为单位,范围 1-12默认 4", "Set the break between clip loops as multiples of 1/4 beat (1-12, default 4).");
public static readonly LocalisableString Random_Label = new EzLocalisableString("随机", "Random");
public static readonly LocalisableString Random_Description = new EzLocalisableString("在切片每次重复时进行随机", "Random. Do a Random on every duplicate.");
public static readonly LocalisableString Mirror_Label = new EzLocalisableString("镜像", "Mirror");
public static readonly LocalisableString Mirror_Description = new EzLocalisableString("在切片每次重复时进行镜像", "Mirror. Mirror next part.");
public static readonly LocalisableString MirrorTime_Label = new EzLocalisableString("镜像时间", "Mirror Time");
public static readonly LocalisableString MirrorTime_Description = new EzLocalisableString("每隔多少次循环做一次镜像", "Mirror Time. Every next time part will be mirrored.");
public static readonly LocalisableString Seed_Label = new EzLocalisableString("种子", "Seed");
public static readonly LocalisableString Seed_Description = new EzLocalisableString("使用自定义种子而不是随机种子", "Seed. Use a custom seed instead of a random one");
public static readonly LocalisableString InfiniteLoop_Label = new EzLocalisableString("无限循环", "Infinite Loop");
public static readonly LocalisableString InfiniteLoop_Description = new EzLocalisableString("启用无限循环播放。游戏中必须使用Esc退出才能结束无法获得成绩结算。",
"Infinite Loop. Enable infinite loop playback. You must use Esc to exit in the game to end, and you cannot get score settlement.");
#endregion
#region NiceBPM
public static readonly LocalisableString NiceBPM_Description = new EzLocalisableString("自由调整BPM或速度", "Free BPM or Speed");
public static readonly LocalisableString InitialRate_Label = new EzLocalisableString("初始速度倍率", "Initial rate");
public static readonly LocalisableString InitialRate_Description = new EzLocalisableString("调整初始播放速度倍率", "Initial rate. The starting speed of the track");
public static readonly LocalisableString FreeBPM_Label = new EzLocalisableString("初始BPM", "Initial BPM");
public static readonly LocalisableString FreeBPM_Description = new EzLocalisableString("设置BPM值以调整初始播放速度", "BPM to speed");
public static readonly LocalisableString EnableDynamicBPM_Label = new EzLocalisableString("启用动态BPM", "Enable Dynamic BPM");
public static readonly LocalisableString EnableDynamicBPM_Description = new EzLocalisableString("基于表现启用动态BPM调整", "Enable dynamic BPM adjustment based on performance");
public static readonly LocalisableString MinAllowableRate_Label = new EzLocalisableString("最小允许速率", "Min Allowable Rate");
public static readonly LocalisableString MinAllowableRate_Description = new EzLocalisableString("动态BPM调整的最小速率", "Minimum rate for dynamic BPM adjustment");
public static readonly LocalisableString MaxAllowableRate_Label = new EzLocalisableString("最大允许速率", "Max Allowable Rate");
public static readonly LocalisableString MaxAllowableRate_Description = new EzLocalisableString("动态BPM调整的最大速率", "Maximum rate for dynamic BPM adjustment");
public static readonly LocalisableString MissCountThreshold_Label = new EzLocalisableString("Miss计数阈值", "Miss Count Threshold");
public static readonly LocalisableString MissCountThreshold_Description = new EzLocalisableString("触发降速所需的Miss数量", "Number of misses required to trigger rate decrease");
public static readonly LocalisableString RateChangeOnMiss_Label = new EzLocalisableString("Miss时的速率变化", "Rate Change On Miss");
public static readonly LocalisableString RateChangeOnMiss_Description = new EzLocalisableString("达到Miss阈值时应用的速率倍数", "Rate multiplier applied when miss threshold is reached");
#endregion
#region Reconcile
public static readonly LocalisableString Reconcile_Description = new EzLocalisableString("满足条件时暂停,可选回溯到上一个目标位置。",
"Pause when conditions are met, optionally rewinding to the previous target position.");
public static readonly LocalisableString Reconcile_EnableMiss_Label = new EzLocalisableString("启用判定计数", "Enable judgement count");
public static readonly LocalisableString Reconcile_EnableMiss_Description = new EzLocalisableString("当指定判定累计到阈值时触发", "Trigger when the selected judgement reaches the threshold.");
public static readonly LocalisableString Reconcile_MissJudgement_Label = new EzLocalisableString("判定类型", "Judgement Type");
public static readonly LocalisableString Reconcile_MissJudgement_Description = new EzLocalisableString("选择要计数的判定类型", "Select the judgement to count.");
public static readonly LocalisableString Reconcile_MissCount_Label = new EzLocalisableString("判定计数阈值", "Judgement Count Threshold");
public static readonly LocalisableString Reconcile_MissCount_Description = new EzLocalisableString("达到该数量时触发暂停", "Trigger pause when this count is reached.");
public static readonly LocalisableString Reconcile_EnableAcc_Label = new EzLocalisableString("启用Acc条件", "Enable accuracy condition");
public static readonly LocalisableString Reconcile_EnableAcc_Description = new EzLocalisableString("当Acc低于阈值时触发", "Trigger when accuracy falls below the threshold.");
public static readonly LocalisableString Reconcile_AccThreshold_Label = new EzLocalisableString("Acc阈值(%)", "Accuracy Threshold (%)");
public static readonly LocalisableString Reconcile_AccThreshold_Description = new EzLocalisableString("低于此Acc触发暂停", "Trigger pause when accuracy is below this value.");
public static readonly LocalisableString Reconcile_EnableHealth_Label = new EzLocalisableString("启用血量条件", "Enable health condition");
public static readonly LocalisableString Reconcile_EnableHealth_Description = new EzLocalisableString("当血量低于阈值时触发", "Trigger when health falls below the threshold.");
public static readonly LocalisableString Reconcile_HealthThreshold_Label = new EzLocalisableString("血量阈值(%)", "Health Threshold (%)");
public static readonly LocalisableString Reconcile_HealthThreshold_Description = new EzLocalisableString("低于此血量触发暂停", "Trigger pause when health is below this value.");
public static readonly LocalisableString Reconcile_RewindEnabled_Label = new EzLocalisableString("启用回溯", "Enable rewind");
public static readonly LocalisableString Reconcile_RewindEnabled_Description = new EzLocalisableString(
"触发后回溯到目标位置再暂停。规则:"
+ "\n判定回溯到阈值的2/3处"
+ "\nAcc回溯到阈值+(100-阈值)/3"
+ "\n血量回溯到阈值+(100-阈值)*0.8。",
"Rewind to the target position before pausing. Rules: "
+ "\nJudgement rewinds to 2/3 of the threshold; "
+ "\nAcc rewinds to threshold+(100-threshold)/3; "
+ "\nHealth rewinds to threshold+(100-threshold)*0.8.");
#endregion
}
}