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