Локализация .net: сосуществование старых .resx и new-school wpf .baml

Я знаю все о старой школе: используйте файл ресурсов с расширением .resx, укажите атрибут NeutralResourcesLanguage, нейтральный ресурс компилируется в сборке, и вы можете компилировать вспомогательные сборки из других локализованных ресурсов (blahblah.de-DE.resx). Visual Studio также генерирует строго типизированный .cs из ресурсов, поэтому его легко использовать из кода (Properties.Resources.Default.WhateverStringResource).

Я только что изучил новый способ WPF: поместить ресурсы в файл .xaml, использовать тег UICulture в .csproj, чтобы поместить ресурс .baml во вспомогательную сборку или нет, и поместить ресурс .baml в основную сборку. Эти ресурсы легко использовать внутри .xaml, но, AFAIK, а не из кода, так как файл .cs не создается автоматически.

Так что, возможно, я очень ошибаюсь, но у меня есть несколько вопросов. "Серьезно, что, черт возьми, теперь?" быть первым. Чтобы мои рассуждения были обоснованными, просто создайте новое приложение WPF в Visual Studio 2010: вы получите. xaml, и он также поместит туда пустой Properties \ Resources.resx. Вот и все, так что они должны сосуществовать.

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

Теперь большая проблема в том, что я тоже не могу использовать ресурсы .resx из .xaml. ПОЧЕМУ?! Дизайнер Visual Studio 2010 наверняка их не видит, но опять же, это может быть плохо.

MSDN предлагает использовать тег UICulture. Он помещает ресурс .baml во вспомогательную сборку, так что сборка даже не содержит нейтральной. Но это не работает для нейтрального ресурса старой школы, AFAIK, нелокализованный .resx должен войти в основную сборку. Поэтому, если я хочу использовать новую и старую школу в одном проекте, я не могу использовать тег UICulture, мне нужны все нейтральные ресурсы в основной сборке. Я единственный, кого это беспокоит?

Итак, вопросы:

  • могу ли я использовать ресурсы из .xaml в коде строго именованным способом, как в случае с файлами .resx?
  • есть способ использовать. Ресурсы resx в .xaml, которые не ломаются с SilverLight?
  • это только я, или локализация .baml намного сложнее, чем локализация .resx? (анализ dll, перекомпиляция, редактирование csv, по сравнению с редактированием только файла .resx)
  • могу ли я скомпилировать нейтральный .resx во вспомогательную сборку точно так же, как с UICulture в wpf?
7
задан fejesjoco 2 April 2011 в 18:52
поделиться