Лучшие практики для локализации Silverlight? - PullRequest
2 голосов
/ 20 января 2010

Есть ли у кого-нибудь лучшие практики или опыт локализации в Silverlight. MSDN рекомендует связывать ресурс с XAML, но результат довольно грязный:

<TextBlock Text="{Binding Path=Resource1.HelloText, Source={StaticResource LocalizedStrings }}"/>

Страница этого сделает XAML нечитабельным!

Есть какие-нибудь ярлыки?

Ответы [ 2 ]

2 голосов
/ 20 января 2010

Некоторое время назад я задал похожий, но более сложный вопрос ( параметризованные значения silverlight для интернационализации )

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

Вы можете реализовать более продвинутый механизм, внедрив мультисвязывание в silverlight самостоятельно - Колин Эберхардт сделал хорошую реализацию ( silverlight multibindings, как прикреплять множественные привязки к одному свойству ) - немного скорректировал и скомбинировал с помощью MultiValue Converter вы можете выполнять несколько привязок, позволяя первой привязке быть к языковому файлу, а последующие привязки - к внедряемым параметрам.

Это довольно болезненно, но истории с локализацией явно не хватает - даже в чате на PDC09 через silverlight 3/4 в настоящее время действительно не самый удачный маршрут - если WPF multibinding переходит на SL4, что делает его немного проще, но я еще не видел хорошей альтернативной реализации, за исключением людей, выводящих все строки из ViewModel - что кажется неправильным с точки зрения «дизайнеров».

0 голосов
/ 17 ноября 2012

Я согласен с тем, что рекомендации Microsoft по локализации Silverlight (и WPF и Windows Phone) очень элементарны. У него есть несколько проблем. Наиболее важными являются

  1. Трудно редактировать основной файл поддержки двух отдельных файлов: XAML и RESX
  2. Большая часть строкового содержимого при перемещении из XAML в RESX
  3. XAML становится намного труднее читать и поддерживать

Причина этого заключается в том, что инструменты Microsoft, такие как Visual Studio, не обеспечивают какой-либо способ локализации XAML. Здесь легко найти локализованный XAML и включить локализованный XAML вместе с локализованным RESX в файлы сателлитных сборок.

<TextBlock Text="Hello World"/>

гораздо проще просматривать, редактировать и поддерживать, чем

<TextBlock Text="{Binding Path=Resource1.HelloText, Source={StaticResource LocalizedString }}"/>

+

  <data name="LocalizedString" xml:space="preserve">
    <value>Hello World</value>
  </data>

Что вам нужно сделать, это сохранить жесткую строку кодирования в XAML и локализовать сам XAML. Это становится очень сложно без хорошего инструмента. Вот почему я рекомендую вам использовать инструмент локализации, который может найти XAML. Одного этого не достаточно, потому что если вы локализовали XAML, вам все равно нужно скомпилировать их в файл сборки спутника и, наконец, включить спутник в файл XAP.

Вам необходим инструмент, который может локализовать RESX и XAML, а также компилировать локализованные файлы сателлитных сборок. Есть некоторые инструменты, которые могут сделать это (например, Sisulizer).

Если вы хотите использовать только Visual Studio, вам следует придерживаться передового опыта Microsoft.

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