Как вы реализуете мультикультурное веб-приложение

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

  •  03-07-2019
  •  | 
  •  

Вопрос

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

Более того, я также считаю, что у некоторых из нас есть некоторые события, запускаемые по времени (например, при истечении срока действия доступа к членству), когда местоположение пользователя должно приниматься во внимание для расчета, например, полуночи в соответствии с правильным часовым поясом.

Наконец, существует также необходимость поддерживать пользовательские интерфейсы справа налево в соответствии с определенными языками и использовать различные кодировки при чтении отправленных файлов данных (например, при анализе текста и данных Excel)

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

Каков ваш опыт решения этих проблем?

[Править]

Я предполагаю, что большинство людей думают, что такой уровень требований к мультикультурности подобен созданию огромного проекта.На самом деле, если вы спросите об онлайн-опросе, где:

  1. Ответы будут собираться только до полуночи
  2. Определение анкеты и часть ответы взяты из текстового файла (на любом языке), а также переводы
  3. Вопросы и варианты ответов должны отображаться на нескольких языках, в зависимости от того, кто имеет к ним доступ
  4. Отчеты также должны быть показаны и созданы на нескольких разных языках

Как можно видеть, нам не нужно заходить слишком далеко в разработке приложения, чтобы предъявлять такого рода требования.

[Правка2]

Только что узнал, что мой вопрос является дубликатом

i18n в ваших проектах

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

Это было полезно?

Решение

Будьте очень, очень осторожны.Из того, что вы говорите о функциях i18n, которые вы пытаетесь реализовать, я задаюсь вопросом, не перегибаете ли вы палку.

Обратите внимание , что большой мальчик (например ,eBay, amazon.com, yahoo, bbc) веб-приложения фактически предоставляют отдельные приложения на каждом языке, который они хотят поддерживать.Каждое из этих веб-приложений использует общий базовый набор сервисов.Не удивляйтесь, если бизнес-потребности двух разных стран, которые даже говорят на одном языке (напримерВеликобритания и США) настолько различны, что для каждого из них вам нужно отдельное приложение.

С другой стороны, вам, возможно, придется стать таким же, как следующий amazon.com.Трудно создать успешное веб-приложение на одном языке, а тем более на многих.Вам не следует бояться отдавать предпочтение одной группе пользователей (скажем, носителям вашего азиатского языка) перед другими, если это имеет смысл для бизнес-потребностей вашего веб-приложения.

Другие советы

Двигайся медленно.

Хорошенько все обдумайте, а затем еще раз по-настоящему подумайте о том, что вы делаете.Имейте в виду, что чем больше вы добавите (например, справа налево), тем длиннее будет ваш цикл контроля качества.

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

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

Делайте то, что нужно вашим пользователям.Например, большинство программистов понимают английский, нет смысла переводить посты на этом сайте.Если многим вашим пользователям нужен перевод, добавьте новый столбец таблицы с идентификатором языка и еще один столбец, чтобы связать переведенную строку с оригиналом.Если ваша целевая аудитория состоит из пользователей с Ближнего Востока, перемещайте справа налево.Если точность определения времени критична с точностью до часа, добавьте столбец часового пояса в таблицу пользователей и так далее.

Если вы используете *NIX, используйте gettext - получить текст.Большинство языков, которые я использовал, имеют определенный уровень поддержки; PHP- это например, это довольно хорошо.

Я опишу, что было сделано в моем проекте (это была не моя оригинальная архитектура, но в любом случае она мне понравилась).

Предоставление поддержки в области перевода

Текст, который необходимо перевести, был разделен на три различные категории:

  1. Текст ошибки:Например, ошибки, которые происходят глубоко на бизнес-уровне приложения
  2. Текст пользовательского интерфейса:Текст, отображаемый в пользовательском интерфейсе (надписи, кнопки, заголовки таблиц, меню)
  3. Пользовательский текст:текст, который должен быть переведен в соответствии с предпочтениями конечного пользователя (то есть пользователь создает вопрос в опросе, и он также может создать переведенную версию этого опроса)

Для каждой отдельной категории схема, используемая для предоставления услуг перевода, отличается, так что у нас есть:

  1. Текст ошибки:Библиотека со статическими функциями, которые обращаются к файлам ресурсов
  2. Текст пользовательского интерфейса:Класс "Helper", который, связанный с механизмом просмотра, предоставляет переводы из удаленных сборок
  3. Пользовательский текст:Таблица в базе данных, которая предоставляет переводы (в соответствии с typeID переведенной сущности и идентификатором объекта) и связана с сущностью через отношение 1 x N

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

Кто-нибудь когда-нибудь решал другие проблемы i18n?

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top