ОК, так что, думаю, есть три варианта:
Перекомпилируйте программу с переведенными строками.
Это чревато опасностью, так как в итоге вы получите две копии источника. Исправление ошибок в одном должно быть сделано в другом. А потом, что произойдет, если вам нужен французский? Итальянский? Испанский? Единственным преимуществом этого подхода является то, что не-разработчик может выполнить работу. (Просто о.)
Получите ресурсы для строк и автоматически проверьте, какой язык интерфейса загружен.
Здесь строки заменяются на GetResource("key")
или аналогичные. При загрузке программа автоматически переводит на культуру пользователя. Это может сработать, но я знаю много немецкоговорящих людей, у которых на компьютерах установлена англоязычная культура, но в некоторых местах они предпочли бы программы на немецком языке.
Извлеките строки из памяти и предоставьте пользователю выбор при загрузке
В общем, всегда лучше дать пользователю контроль. Это может быть запрос на загрузку, хотя, если приложение часто используется, это может раздражать. Возможно, баланс заключается в том, чтобы спросить пользователя во время установки о его предпочтениях, а затем дать возможность в диалоговом окне позже изменить этот параметр.
Кстати, обратите внимание, что перевод не является локализацией. Например: форматы чисел в Германии сильно отличаются (например, 1,233,44) от английского (например, 1233,44). Иконы и тому подобное часто имеют национальные особенности.