- PVSM.RU - https://www.pvsm.ru -
В продолжении статьи [1] про основы локализации приложений Windows 8MetroRTStore (сам черт ногу сломит что правильнее — и ещё проблемнее гуглить) хотел бы поделиться ещё одним небольшим скриптом, автоматизирующим эту самую локализацию.
Вам уже известно, что чтобы локализовать, к примеру, текст какого-нибудь лейбла (TextBlock) нам необходимо проделать следующие действия:
Муторно, да?
Для других XAML-проектов (Silverlight, WPF, Windows Phone), есть такой замечательный инструмент как Resharper, а именно — Ctrl+Shift+R (Move to Resource):
Открывается такой user-friendly диалог:
который затем вставляет в Xaml большую строчку, но идиологически верную:
<TextBlock Text="{Binding Resources.MainPage_Title, Source={StaticResource ResourcesWrapper}}"/>
Но, к сожелению, в Windows Store, resharper (7.1) на попытку «двинуть ресурсы» отвечает что-то невнятное (требует наличие resx, и не понимает наличие resw):
Что ж, остается надеятся, что это недаразуменее в JetBrains исправят, а пока спешу поделиться ещё одним T4 скриптом, алгоритм которого следующий:
Dictionary<string, string> PreferredPropertiesMap = new Dictionary<string, string>
{
{"TextBlock", "Text"},
{"Run", "Text"},
{"Button", "Content"}
//Add Element-Property pairs here
};
Если же тип элемента не найден в PreferredPropertiesMap, то ищется одно из следующих свойств:
private static readonly string[] Properties = { "Text", "Content", "Header", "Caption" };
А теперь собственно сам скрипт: paste.org.ru/?teyin2 [2]
Cздаем в нашем проекте файл с расширением tt, вставляем текст скрипта, и запускаем через контекстное меню по средствам команды «Run Custom Tool» = Profit!
Спасибо за внимание, надеюсь, скрипт вам пригодится.
PS: Не забудьте поменять константу ReswFilePath (относительный от корня проекта путь к resw)
PS2: Скрипт в данный момент не поддерживает локализацию нескольких свойств у одного элемента
Автор: Nagg
Источник [3]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/windows-8/20546
Ссылки в тексте:
[1] продолжении статьи: http://habrahabr.ru/post/153543/
[2] paste.org.ru/?teyin2: http://paste.org.ru/?teyin2
[3] Источник: http://habrahabr.ru/post/159367/
Нажмите здесь для печати.