2017-02-07 3 views
0

У меня есть сайт Asp.Net MVC. На веб-сайте есть некоторые уведомления, и я хочу локализовать уведомления, которые система отправляет пользователям. Как и то, что показывает StackOverflow, но когда пользователи меняют свой язык, я хочу, чтобы они видели уведомления на своем языке.Локализация системных сообщений

Интересно, какое лучшее решение для этого. Я мог бы сохранить сообщение как enum и идентификатор связанной информации в виде нескольких int s. Например:

public class NotificationMessage 
{ 
    [Required] 
    public virtual ApplicationUser User { get; set; } 

    public NotificationMessageType Type { get; set; } 

    public int Id1 { get; set; } 
    public int Id2 { get; set; } 
    public int Id3 { get; set; } 
} 

Проблема с этим является идентификатором. Они не имеют большого значения, и они не строго типизированы, поэтому я должен был бы знать, как их использовать по типу.

Другим решением было бы просто сохранить его как строку и попытаться перевести его, если язык не является английским. Который может быть легко запутанным.

Окончательный метод заключается в том, чтобы просто сохранить сообщение в качестве выбранного в данный момент языка, а когда они меняют свой язык, сообщение останется прежним, а новые сообщения будут на новом языке.

Возможно, есть лучший и более стандартный подход к этому, но я только что придумал это.

+0

Рекомендуемый способ это использование ресурсов. Взгляните на эту статью: http://www.c-sharpcorner.com/UploadFile/4d9083/globalization-and-localization-in-Asp-Net-mvc-4/ – JuanR

+0

@Juan Я знаю о ресурсах. Вопрос в том, как хранить уведомления? –

ответ

1

как я Предлагайте вы должны хранить все уведомления сразу, как мастер на другом языке, как

English -this is a pen for {0} and {1} 

Germen -dies ist ein Stift {0} und {1} 

шоу, когда вам нужно отправить уведомление в соответствии с этим просто выберите сообщение и передать параметры

+0

Итак, это было бы первое решение, которое я упомянул, правильно? Таким образом, я должен хранить эти аргументы как целые идентификаторы. Поскольку разные типы уведомлений имели бы различное количество аргументов и даже разные типы –

+0

yes.you нужно хранить каждое уведомление на разных языках с необходимыми параметрами, поэтому в момент создания уведомления вы должны использовать String.Format, передавая значения параметров, –

+0

Я не нашел другого способа сделать то же самое, или вы не можете перевести уведомление на другой язык, потому что ни один переводчик не может перевести все предложение точно так, как мы хотим. –

Смежные вопросы