Я ищу чрезвычайно простой способ локализовать свое приложение на японский язык, а также на английский по умолчанию. Единственное требование - чтобы мы могли запустить его на указанном языке. Мы использовали материал 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 строк, которые нужно локализовать. Я думаю, что самый простой путь здесь лучший, особенно учитывая относительную простоту нашего приложения.