init
This commit is contained in:
commit
e124a47765
19374 changed files with 9806149 additions and 0 deletions
69
Framework/Localization/EnumLocalizer.cs
Normal file
69
Framework/Localization/EnumLocalizer.cs
Normal file
|
@ -0,0 +1,69 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Globalization;
|
||||
using System.Linq;
|
||||
using Kreta.Framework.Caching;
|
||||
|
||||
namespace Kreta.Framework.Localization
|
||||
{
|
||||
/// <summary>
|
||||
/// Felsorolások nyelvesítésére szolgáló <see cref="ILocalizer"/> megvalósítás.
|
||||
/// </summary>
|
||||
internal sealed class EnumLocalizer : ILocalizer
|
||||
{
|
||||
private static object SyncObject = new object();
|
||||
|
||||
private static readonly Dictionary<Enum, FriendlyNameAttribute> friendlyNameAttributeCache = new Dictionary<Enum, FriendlyNameAttribute>();
|
||||
|
||||
/// <summary>
|
||||
/// Az osztály alapértelmezett konstruktora.
|
||||
/// </summary>
|
||||
public EnumLocalizer()
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Lásd <see cref="ILocalizer.Localize"/>.
|
||||
/// </summary>
|
||||
/// <param name="value">Lásd <see cref="ILocalizer.Localize"/></param>
|
||||
/// <param name="cultureInfo">Lásd <see cref="ILocalizer.Localize"/></param>
|
||||
/// <returns>Lásd <see cref="ILocalizer.Localize"/></returns>
|
||||
string ILocalizer.Localize(object value, CultureInfo cultureInfo)
|
||||
{
|
||||
return Localize((Enum)value, cultureInfo);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Lásd <see cref="ILocalizer.Localize"/>.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// A nyelvesítés a felsorolás mezőire tett <see cref="FriendlyNameAttribute"/> attribútum
|
||||
/// alapján történik. A felsorolás mezője ilyet nem tartalmaz, akkor egyszerűen a <see cref="Enum.ToString()"/>
|
||||
/// metódus lesz használva.
|
||||
/// </remarks>
|
||||
/// <param name="value">Lásd <see cref="ILocalizer.Localize"/></param>
|
||||
/// <param name="cultureInfo">Lásd <see cref="ILocalizer.Localize"/></param>
|
||||
/// <returns>Lásd <see cref="ILocalizer.Localize"/></returns>
|
||||
public string Localize(Enum value, CultureInfo cultureInfo)
|
||||
{
|
||||
FriendlyNameAttribute attribute;
|
||||
lock (SyncObject)
|
||||
{
|
||||
if (!friendlyNameAttributeCache.ContainsKey(value))
|
||||
{
|
||||
System.Reflection.FieldInfo fieldinfo = value.GetType().GetField(value.ToString());
|
||||
attribute = (FriendlyNameAttribute)fieldinfo.GetCustomAttributes(typeof(FriendlyNameAttribute), false).FirstOrDefault(); // no inheritance
|
||||
friendlyNameAttributeCache[value] = attribute;
|
||||
}
|
||||
else
|
||||
{
|
||||
attribute = friendlyNameAttributeCache[value];
|
||||
}
|
||||
}
|
||||
|
||||
return attribute != null
|
||||
? SDAServer.Instance.CacheManager.AquireCache<StringResourcesCache>().Get(attribute.StringResourceId, cultureInfo.LCID, attribute.DisplayText)
|
||||
: value.ToString();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue