Files
Continentis/Assets/Scripts/SLSUtilities/General/StringExtension.cs
SoulliesOfficial ac98ec3aef 更新
2026-04-17 12:01:50 -04:00

58 lines
2.2 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.
using Continentis.MainGame;
using Continentis.MainGame.Card;
using I2.Loc;
using UnityEngine;
namespace SLSUtilities.General
{
public static class StringExtension
{
/// <summary>
/// 本地化字符串,不使用参数替换
/// </summary>
/// <param name="original">原始字符串</param>
/// <returns></returns>
public static string Localize(this string original)
{
if (LocalizationManager.TryGetTranslation(original, out string translated))
{
return translated;
}
return original;
}
/// <summary>
/// 本地化字符串,并使用卡牌上下文解析 $Attribute / $Keyword 等文本内函数
/// </summary>
/// <param name="original">本地化 Key</param>
/// <param name="card">提供属性上下文的卡牌实例</param>
/// <returns>翻译并解析后的最终文本</returns>
public static string Localize(this string original, CardInstance card)
{
string translated = original.Localize();
return CardTextInterpreter.InterpretText(card, translated);
}
/// <summary>
/// 本地化字符串使用指定的根GameObject进行i2Loc参数替换
/// </summary>
/// <param name="original">原始字符串</param>
/// <param name="rootGameObject">用于参数替换含有LocalizationParamsManager的根GameObject设为null则表明使用全局参数</param>
/// <returns></returns>
public static string Localize(this string original, GameObject rootGameObject)
{
if (rootGameObject != null && rootGameObject.GetComponent<LocalizationParamsManager>() == null)
{
throw new System.ArgumentException("The provided rootGameObject does not contain a LocalizationParamsManager component.");
}
if (LocalizationManager.TryGetTranslation(original, out string translated, true, 0, true, true, rootGameObject))
{
return translated;
}
return original;
}
}
}