Как вы обычно программируете выбор языка - PullRequest
0 голосов
/ 03 октября 2019


Я хотел бы узнать от кого-то, имеющего практический опыт, какова наилучшая практика реализации программы с использованием пользовательского интерфейса или CMD на нескольких языках (позволяя пользователю выбирать, например, между английским, французским и немецким языками).

Если бы уже была дискуссия на эту тему, я был бы признателен, если бы кто-нибудь отправил мне ссылку на нее, в первые несколько поисков в Google я нашел только такие вещи, как выбор языка программирования

Первые варианты, которые пришли мне в голову, где switch (globalStringLanguage) и #ifdef GERMAN
# define PROGRESS Fortschritt
...
.

Очень хотелось бы знать, если естьэто лучшая практика (и какая из них будет), и как вы, ребята, реализуете ее в своей фирме.

Заранее спасибо за ответы,
1973ProgrammingDude

1 Ответ

0 голосов
/ 05 октября 2019

Существует 4 «лучших практики / темы», которые вы можете исследовать: -

i18n - интернационализация

Это больше окак вы разрабатываете программное обеспечение. Вы разрабатываете кнопки и т. Д., Чтобы «искать» текст, который они должны содержать, из файла словаря, а не жестко кодировать их в исходный код.

Это также относится к таким вещам, как даты и валюта, и позволяет форматировать их по-разному в зависимости от языка / языка.

Если вы правильно оформите свой продукт, вы сможете изменить весь текстна кнопках, ссылках и т. д. и измените формат даты, форматирование валюты и т. д. при изменении одной языковой переменной.

Think of this part as designing your system to account for translation, local formatting and even right to left layouts for languages such as Arabic that are read from the right to the left

l10n - локализация

Это процесс, который следует из проектирования вашей системы под i18n. Вы должны определить параметры форматирования, чтобы даты и т. Д. Были правильными.

Вы также определили бы формулировку кнопок и т. Д., Чтобы они были правильными.

Наконец, у вас также будет система, чтобы содержимое могло бытьпереведено для данной локали.

Think of this part as the actual translation process.

l12y - Локализуемость

в значительной степени охватывает процесс и соображенияl10n - только что упомянуто, чтобы вы могли исследовать его для более сложных сценариев и идей реализации.

g11n - Глобализация

Охватывает все вышеперечисленные стандарты, еще раз только что упомянутый для справки, так как он иногда выдает несколько разных статей в Google при поиске путей решения конкретной проблемы.

Быстрые проверки работоспособности

При проектированиисистема, которая поддерживает glln, проще иметь пару пунктов, которые помогут вам думать о принимаемых вами решениях.

  1. Если вы вводите ЛЮБОЙ простой текст wВ HTML-тегах / элементах управления / независимо от того, что применимо к выбранному вами языку программирования, вы, вероятно, допустили ошибку. Каждый элемент простого текста должен быть программно вставлен в страницу.

  2. Разработка системы словарей - для каждого фрагмента простого текста, который вы хотите добавить на сайт, добавьте его в словарь. Словарь может быть простым ключом: список значений, если вам нужно, где ключ - это перевод на английский, а значение - перевод для вашей локали. Убедитесь, что вы начинаете с английского: английский перевод, чтобы вы не пропустили ни одного. Я бы порекомендовал массивы JSON, так как большинство переводческих компаний теперь понимают, как их использовать в настоящее время, без необходимости разрабатывать для них пользовательский интерфейс.

  3. При разработке виджета / компонента учитывайте последствия более длительноготекст - то, что макет работает на английском языке (т.е. группа кнопок помещается на одной строке), не означает, что она будет работать на другой. Некоторые языки могут быть в 3 раза длиннее для перевода слова, поэтому вы должны учитывать это при разработке макета.

  4. Все должно быть спроектировано так, чтобы его можно было легко перевернуть. Версии справа налево должны быть просты в реализации, поэтому спроектируйте свою систему так, чтобы для создания версии RTL нужно было изменить только пару переменных. (т. е. если веб-интерфейс имеет основное определение CSS виджета, а затем убедитесь, что глобальный класс CSS, примененный к телу, может переключать макет).

  5. Это не просто текст -> Образы должны быть разными, поскольку разные культуры будут интерпретировать изображение по-разному. Также иконка должна быть интернационализирована, так как иконка долларовой банкноты не подходит для представления денег в Великобритании, не говоря уже о других странах.

Пример CSS, но принципраспространяется на все языки / платформы

.widget{
   //define general styles
}
.left-to-right .widget{
   //add some formatting to adjust layout for left-to-right languages such as English when the 'left-to-right' global variable is set.
    margin-left: 20px;
}

.right-to-left .widget{
   //add some formatting to adjust layout for right-to-left languages such as Arabic when the 'right-to-left' global variable is set.
   margin-right: 0px;
}
...