Как заставить мое .NET-приложение поддерживать разные языки

StackOverflow https://stackoverflow.com/questions/90061

  •  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 Image

Для очень простой системы создайте интерфейс, который определяет такие методы, как 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=...
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top