Переводить из строковых ресурсов, когда задействован динамический контент? - PullRequest
2 голосов
/ 18 января 2012

Недавно я выяснил, как выполнить локализацию в MVC, используя файлы ресурсов, содержащие строки.Классно, что MVC автоматически выбирает файл ресурса для языка посетителя.Мне это нравится!

Однако как бы я обычно обрабатывал преобразование следующего сообщения в использование файла ресурса?

<p>You have @ViewBag.UnreadCount unread e-mails in your inbox</p>

Как видите, ViewBag.UnreadCount - это динамическая переменнаядолжен быть включен.

Что я могу сделать?

Ответы [ 3 ]

3 голосов
/ 18 января 2012

Я просто использую string.Format с моим файлом ресурсов.

Я не пробовал его с MVC, но он все еще должен работать

@(string.Format(YourResourceFile.Resource, ViewBag.UnreadCount))

А в вашем файле ресурсов

You have {0} unread e-mails in your inbox

Не совсем интуитивный метод, но он отлично справляется со своей задачей. Я просто буду использовать поле комментария в файле ресурсов, чтобы объяснить переводчику, какими будут параметры.

3 голосов
/ 18 января 2012

Вы можете использовать пользовательских помощников , получая параметры и используя заполнители в файлах ресурсов, которые будут заменены динамическими значениями:

<p>@Html.Resource("ResourceName", ViewBag.UnreadCount)</p>

P.S. Я надеюсь, что это ViewBag, которое вы показали здесь, только для иллюстрации и что в вашем реальном приложении вы используете строго типизированные модели представления.

1 голос
/ 18 января 2012

Лучший способ сделать это - использовать string.Format(Resource.UnreadCount ,ViewBag.UnreadCount), и строка ресурса будет выглядеть как "есть {0} непрочитанных счетчиков".

В блоге рассказывается больше о локализации

РЕДАКТИРОВАТЬ: блог, указанный выше, принадлежит автору этого ответа.

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