Как заставить мое .NET-приложение поддерживать разные языки
-
01-07-2019 - |
Вопрос
Приложение, которое я пишу, почти готово, и мне бы хотелось, чтобы его использовали люди, говорящие на разных языках.
Я не знаю, с чего начать. В чем разница между глобализацией и культурой в плане программирования?
Как можно взять необычные фразы, такие как «это приложение было создано для того и этого» вместо «Файл», «Открыть», «Сохранить» и т. д., и превратить их, скажем, в испанский?
Большое спасибо :-)
Решение
У Microsoft уже есть очень хороший руководство
Другие советы
Вам нужно сделать разные вещи, чтобы иметь «глобализированное» приложение.
1) Переведите каждую метку в ваших формах и элементы управления в вашем приложении.
Вам необходимо установить для свойства «Localizable» значение true в каждой форме и элементе управления.Это свойство позволяет создавать файлы ресурсов на каждом языке и регионе.Теперь с помощью свойства «Язык» вы можете выбрать, какой язык вы хотите поддерживать.Когда вы выбираете язык в списке поля со списком, ваша форма (или элемент управления) автоматически переключается на этот язык.Теперь ваша задача — перевести каждое слово в элементе управления.Как только вы внесете изменение, Visual Studio создаст файл ресурсов для определенного языка.(Например, MyForm.fr-FR.resx для Франции-Франции).
2) Импортируйте каждую жестко закодированную строку вашего кода в файл resx.
Создайте файл ресурсов (лично я использую StringTable.resx) и добавьте в этот файл каждую строку для перевода.После этого создайте файл ресурсов для каждого языка, который вы хотите поддерживать, и переведите строки в каждом файле.Например, если вы хотите поддерживать французский язык, вы создаете StringTable.fr.resx или StringTable.fr-FR.resx для French-France.С РесурсМенеджер class, вы можете загрузить каждую строку.
Примечание: Если вы используете Visual Studio 2005 или 2008, у вас уже есть файлы ресурсов, созданные по умолчанию.
3) Вам необходимо тщательно продумывать формы и элементы управления.
Рекомендации от Microsoft: Рекомендации Майкрософт
4) Работа с датой и числами
Если ваше приложение создает файлы данных, которые можно отправить другому пользователю в другом регионе, вам нужно подумать об этом, когда вы сохраняете свои данные в файле.Поэтому всегда указывайте дату и время в формате UTC и выполняйте преобразование в локальном формате только при загрузке информации.То же самое относится и к десятичным числам, особенно если они хранятся в виде текста.
Когда вы скомпилируете свое приложение, Visual Studion создаст вспомогательный файл, например MyApplication.fr.dll в подпапке фр..Чтобы загрузить эту dll, вам необходимо переключить язык текущего потока при запуске вашего приложения.
Вот код:
CultureInfo ci = new CultureInfo("fr");
Thread.CurrentThread.CurrentUICulture = ci;
На все ваши вопросы есть ответы в книге ниже.В начальных главах объясняются все основные понятия и терминология, а также причудливые сокращения, такие как i18n.Не успела прочитать до конца..но хорошо до того момента, пока я не прочитал.Рекомендуется, если вы серьезно настроены сделать это правильно и у вас есть время :)
http://www.amazon.com/NET-Internationalization-Developers-Applications-Development/dp/0321341384
Для очень простой системы создайте интерфейс, который определяет такие методы, как GetSaveText() и т. д.и разрешить подключение подобных сборок к вашему приложению.
Это должно быть довольно хорошее решение для 10-1000 строк:
Имейте файл ресурсов для каждой локали.Я не знаю .NET, но уверен, что есть какой-то распространенный способ сделать это.Затем в коде получения ресурсов загрузите соответствующий код в зависимости от настроек локали вашего браузера.Попросите этот код получить правильную строку для некоторого ключа.
Пример содержимого файла, если бы я реализовал его с нуля:
ресурсы.ru:
save=Save
close=Close
ok=OK
areYouSure=Are you sure?
ресурсы.es:
save=I don't know how to say anything in Spanish, oops
close=...
ok=...
areYouSure=...