Я ищу очень простой способ локализовать мое приложение на японский, а также на английский по умолчанию. Единственное требование - мы можем запустить его на указанном языке. Мы использовали материал LocBaml, который неуклюжий, сложный, подвержен ошибкам и делает наш процесс сборки чрезвычайно сложным.
Я подумываю переместить все обратно в файлы ресурсов (Strings.resx, Strings.ja.resx) и просто выполнить статическое связывание, например:
<TextBlock Text="{x:Static resx:MyWindow.MessageText}" />
Затем, во время запуска, выясните, какой язык им нужен, и переключитесь, с какого ресурса он извлекает строки:
public static void Main(string[] args)
{
if (args[0] == "-lang")
{
Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo(args[i + 1]);
}
App app = new App();
app.InitializeComponent();
app.Run();
}
Это просто, и, похоже, единственный настоящий недостаток заключается в том, что мы не можем переключаться во время выполнения, что мы никогда не захотим делать. Я видел несколько расширений локализации, подобных этим:
http://wpflocalization.codeplex.com/
http://www.wpftutorial.net/LocalizeMarkupExtension.html
Они обеспечивают более чистый Xaml и выглядят немного лучше во время разработки, но я не вижу каких-либо функциональных отличий, кроме возможности менять языки во время выполнения. Я что-то здесь упускаю или мы должны просто пойти по простому и встроенному маршруту? Итого всего у нас всего ~ 100 строк, которые нужно локализовать. Я думаю, что самый простой маршрут здесь самый лучший, особенно учитывая относительную простоту нашего приложения.