I'm trying to localize an open source project but I'm stuck with enum strings.
My Enum.cs is;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Reflection;
using System.Web;
namespace TestSite.Domain.Models
{
public enum SortSpan
{
/// <summary>
/// Default value
/// </summary>
[Display(Name = "Hepsi")]
All = 0,
/// <summary>
/// Span aralığını 1 saate indirger
/// </summary>
[Display(Name = "Saat")]
Hour,
/// <summary>
/// Span aralığını 1 güne indirger
/// </summary>
[Display(Name = "Gün")]
Day,
/// <summary>
/// Span aralığını 1 haftaya indirger
/// </summary>
[Display(Name = "Hafta")]
Week,
/// <summary>
/// Span aralığını 1 aya indirger
/// </summary>
[Display(Name = "Ay")]
Month,
/// <summary>
/// Limits search span to ~90 days
/// </summary>
[Display(Name = "Mevsim")]
Quarter,
/// <summary>
/// Limits search span to 1 year
/// </summary>
[Display(Name = "Yıl")]
Year
}
}
I give [Display(Name = "...")] for each string on my enum SortSpan. But in view it always sees for the string name not DisplayName.
Here is the view;
@*Top Sort Span Buttons*@
@if (Model.Context != null && Model.Sort == TestSite.Domain.Models.SortAlgorithm.Top)
{
<div>
<ul class="tabmenu submenu">
@{
var spans = new SortSpan[] { SortSpan.Day, SortSpan.Week, SortSpan.Month, SortSpan.Quarter, SortSpan.Year, SortSpan.All };
foreach (var span in spans)
{
<li class='@(Model.Span.HasValue && Model.Span.Value == span ? "selected" : "disabled")'>
@Html.RouteLink(span.ToString(), Model.Submissions.RouteName, new { sort = (Model.Sort == null ? "" : Model.Sort.ToString().ToLower()), span = span.ToString().ToLower() })
</li>
}
}
</ul>
</div>
}
And this is the live screenshot; It still shows as Day, Week, Month..
But I want to change them with Gün, Ay, Yıl as you can see [Display(Name = "Gün)]...
Thanks..
UPDATE: FULL CODE OF VIEW (.cshtml)
@using Voat.Domain.Models
@model Voat.Models.ViewModels.SubmissionListViewModel
@{
ViewBag.Title = Model.Title;
ViewBag.Description = Model.Description;
int counter = 0;
}
@section PageHeader {
@if (Model.IsActualSubverse)
{
@Html.Partial("_SubverseStylesheetLink", Model.Context.Name, new ViewDataDictionary())
}
}
<style type="text/css">
body > .content .link .rank {
width: 3.2ex;
}
</style>
<div id="container">
@if (Model.IsActualSubverse)
{
@Html.Action("SidebarForSelectedSubverse", "Subverses", new { selectedSubverse = Model.Context.Name })
}
else if (Model.Context != null && Model.Context.Type == Voat.Domain.Models.DomainType.Set)
{
@Html.Action("Sidebar", "Set", new { name = Model.Context.FullName })
}
else
{
@Html.Partial("~/Views/Shared/Sidebars/_SidebarFrontpage.cshtml")
}
<div class="content" role="main">
@*Top Sort Span Buttons *@
@if(Model.Context != null && Model.Sort == Voat.Domain.Models.SortAlgorithm.Top)
{
<div>
<ul class="tabmenu submenu">
@{
var spans = new SortSpan[] { SortSpan.Day, SortSpan.Week, SortSpan.Month, SortSpan.Quarter, SortSpan.Year, SortSpan.All };
Type type = typeof(SortSpan);
foreach (var span in spans)
{
SortSpan sortSpan = SortSpan.All;
Type type = typeof(SortSpan);
MemberInfo[] memberInfo = type.GetMember(sortSpan.ToString());
object[] attributes = memberInfo[0].GetCustomAttributes(typeof(DisplayAttribute), false);
string name = ((DisplayAttribute)attributes[0]).Name;
<li class='@(Model.Span.HasValue && Model.Span.Value == span ? "selected" : "disabled")'>@Html.RouteLink(name, Model.Submissions.RouteName, new { sort = (Model.Sort == null ? "" : Model.Sort.ToString().ToLower()), span = name.ToLower() })</li>
}
}
</ul>
</div>
}
<div class="sitetable linklisting">
@if (Model.IsActualSubverse)
{
@Html.Action("StickiedSubmission", "Subverses", new { subverseName = Model.Context.Name })
}
else if (Model.Context == null || (Model.Context != null && Model.Context.Type != DomainType.Set))
{
@Html.Partial("~/Views/Welcome/_FirstTimeVisitorWelcome.cshtml")
@Html.Action("FeaturedSub", "Home")
@Html.Action("StickiedSubmission", "Home")
}
@if (Model.Submissions.Count <= 0)
{
Html.RenderPartial("_DefaultMessage", new ViewDataDictionary() {{"selectedSubverse", Model.Context.Name}});
}
@foreach (var submission in Model.Submissions)
{
@Html.Partial("~/Views/Shared/Submissions/_Submission.cshtml", submission, new ViewDataDictionary() { { "CssClass", new string[] { counter % 2 == 0 ? "even" : "odd" } } })
counter++;
}
</div>
@{
Model.Submissions.RouteData = Request.RequestContext.RouteData.Values;
if (Model.Sort != null)
{
Model.Submissions.RouteData["sort"] = Model.Sort.ToString().ToLower();
}
if (Model.Span != null)
{
Model.Submissions.RouteData["span"] = Model.Span.ToString().ToLower();
}
if (!String.IsNullOrEmpty(Request.QueryString["frontpage"]))
{
Model.Submissions.RouteData["frontpage"] = Request.QueryString["frontpage"];
}
}
@Html.DisplayFor(model => Model.Submissions, "IPaginatedList")
@*<div class="pagination-container">
<ul>
@if (Model.Submissions.HasPreviousPage)
{
<li class="btn-whoaverse-paging">
@Html.RouteLink("< prev", Model.Submissions.RouteName, new {
page = (Model.Submissions.PageIndex - 1),
sort = (Model.Sort == null ? "" : Model.Sort.ToString().ToLower()),
time = (Model.Span == null ? "" : Model.Span.ToString().ToLower()),
frontpage = Request.QueryString["frontpage"]
}, new {rel = "prev"})
</li>
}
@if (Model.Submissions.HasNextPage)
{
<li class="btn-whoaverse-paging">
@Html.RouteLink("next >", Model.Submissions.RouteName, new {
page = (Model.Submissions.PageIndex + 1),
sort = (Model.Sort == null ? "" : Model.Sort.ToString().ToLower()),
time = (Model.Span == null ? "" : Model.Span.ToString().ToLower()),
frontpage = Request.QueryString["frontpage"]
}, new { rel = "next" })
</li>
}
</ul>
</div>*@
@if (!Model.IsActualSubverse)
{
<div>
<a href="/random">rastgele evren getir</a> veya <a href="/randomnsfw">rastgele NSFW evren getir </a>
</div>
}
</div>
</div>