• Привет, Гость!
  • Войти
  • Регистрация
  • Записи
  • Форумы
  • Люди
  • Файлы
  • Работа
  • Технологии
  • Все
  • Новости
  • События
  • Статьи
  • Блоги

Локализация ASP.NET приложений. Стиль кодирования

Локализация ASP.NET приложений. Стиль кодирования

mvcdev
05.07.2010 7:21

Вот уже год я разрабатываю ASP.NET Web Forms приложение, которое будет работать на нескольких языках. За это время я набил несколько шишек в вопросах связанных с локализацией ASP.NET приложений. Хочу поделиться несколькими правилами, которыми я руководствуюсь, при написании кода.

1. Обертывайте все локализуемые строки в Label, Literal или Localize. Это позволит автоматически сгенерировать ресурсы.

2. Не используйте локализуемые строки внутри событий OnClientClick:


Лучше:


3. Старайтесь использовать ASP.NET элементы управления вместо HTML:


Лучше так:


Для них автоматически генерируются ресурсы.

4. Задавайте атрибут ID для серверных элементов управления, которые должны быть локализованы. Мастер генерации локальных ресурсов использует ID для формаирования имени ресурса.

5. Избегайте разорванных фраз:


Лучше так:


А вот еще один распространенный пример того, как не нужно писать:


Уж лучше так:


Так же избегайте пробелов в конце фраз. После локализации они могут потеряться.


Лучше так:

 

6. Есть в Visual Studio удобный мастер, который умеет генерировать на основе aspx разметки ресурсы. Он переносит туда все локализуемые строки. Чтобы мастер локализации успешно сгенерировал для страницы ресурсы, нужно, что бы на странице в режиме дизайнера не было ошибок.

Это лишь правила написания кода. Следуя им, Вы сделаете приложение пригодным для последующей локализации. Далее понадобится перенести строки в ресурсы. Об этом в следующий раз.

mvcdev
05.07.2010 7:21
Комментариев:4 RSS Просмотров:829
Теги: asp.net, c#, localization
Дмитрий Васильев
07.07.2010 7:47
Еще один тонкий момент в локализации сообщений JS: фраза на некоторых языках вполне может содержать символы, которые являются служебными. Например одинарные или двойные кавычки. Во втором примере это однозначно приведет к проблеме из за того, что JS код станет некорректным из за несбалансированных кавычек.
Ссылка
mvcdev
07.07.2010 8:58
Да, есть такая проблема. Попробовал найти стандартный способ ее решить, но его похоже нет. Нашел вот такой способ.
Родитель | Ссылка
mvcdev
29.08.2010 6:51
В .NET 4.0 появилось пространство имен System.Web.Script.Serialization. Теперь можно писать так:
JavaScriptSerializer serializer = new JavaScriptSerializer();
string js = string.Format("alert('{0}');", 
    serializer.Serialize("\"Хитрый код — плохой код\" — Стив Маконнелл.")
);
Родитель | Ссылка
Bodom Lake
18.07.2010 21:11
Работа с js и сss это вообще отдельная тема...

На мой взгляд не понятно почему до сих пор нельзя было сделать компиляции *.js (скажем *jsx файлы которые становились бы js) файлов...MS вкладывает такие средства в веб-технологии, постоянно выходят WebMatrixы, iisexpressы, Razor наконец (это причем только за последний месяц) однако для конкуренции с php, на мой взгляд нужны более простые решения для самых банальных задач...

Я тоже сталкивался с необходимостью вывода данных в js из ресурсов и тоже использовал подход как у Rick Strahl...другого действительно нет.

Хотя как бы было элегантно писать: alert(<%= GetGlobalResourceObject("Message", "Text")) %>)в js или
Backgound-image: <%= GetGlobalResourceObject "Images", "Image")) %> в css
Ссылка

WebDev

mvcdev Разработчик .NET
Веб разработка
  • Блог

Облако тегов

.net asp.net c# localization powershell resharper sql server visual studio
Строишь сложные системы? Хостинг от Parking.Ru

Записи

Популярные
  • diverofdark > C#: Expression Tree + Extension Method + Lambda как замена Safe Navigation Operator
  • sashaeve > Интересные возможности C# и ASP.NET
  • trukhinyuri > О чтении технической литературы в pdf на английском
  • snoralip > Обработка структурированн­ого текста с помощью регулярных выражений
  • Dmitryk > Парадигма генерации и обработки исключений
  • snoralip > Применение хеш-функций, SHA1, GetHashCode, HashSet и Dictionary
  • mvcdev > Говорящий PowerShell скрипт
  • mbakirov > I am back.
  • ][tiger > Singleton in .NET 4.0 - вопрос снят?
  • SergeyT. > [Перевод] Джозеф Албахари. Работа с потоками в C#. Часть 3
Все популярные записи
Обсуждаемые
  • mbakirov > I am back.
  • trukhinyuri > О чтении технической литературы в pdf на английском
  • diverofdark > C#: Expression Tree + Extension Method + Lambda как замена Safe Navigation Operator
  • NetGuru > Определение имени текущего пользователя SharePoint
  • snoralip > Применение хеш-функций, SHA1, GetHashCode, HashSet и Dictionary
  • Dmitryk > Парадигма генерации и обработки исключений
  • NetGuru > Строка подключения к БД.
  • Soldata > Преобразование даты в строку типа "вчера; сегодня; завтра" с помощью метода расширения
  • NetGuru > Extension methods – «методы-расшири­тели»:
  • trukhinyuri > Группы в Windows Live Messenger
Все обсуждаемые записи

Блоги

Новые
  • sharok> Round Angle .NET
  • Regfor> Блог
  • NetGuru> Kurakin Vit's Blog
  • Andrey> Андрей Веселов
  • danverPD> podzyubanBlogs
  • Stanislav Gornakov> Stanislav Gornakov
  • k0stya> k0stya
  • ][tiger> Just do IT - просто дует
  • Oxozle> KLUBS
  • mvcdev> WebDev
Обсуждаемые
  • mihailik> Олег Михайлик
  • ceo> Нотатник Вiктора Шатохiна [MSFT]
  • gaidar> Gaidar Magdanurov
  • MikhailChernomo­rdikov> Mikhail Chernomordikov [MSFT]
  • Alexander Lozhechkin [MSFT]> Alexander Lozhechkin
  • agladkik> Andrey Gladkikh: Microsoft Dynamics
  • sergun> Sergey Zwezdin
  • beerbong> Bong Blog
  • sos> Dmitry Soshnikov [MSFT]
  • not-a-kernel-gu­y> Зеркало: Not a kernel guy
О сайте   Свяжитесь с нами   Версия для печати
Работает на 1С-Битрикс: Управление сайтом ASP.NET  |  Хостинг на Parking.Ru