2008-10-01 3 views
3

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

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

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

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

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

[Редактировать]

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

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

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

[Edit2]

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

i18n in your projects

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

ответ

3

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

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

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

2

Идите медленно.

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

1

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

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

1

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

1

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

0

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

обеспечения перевода службе поддержки

текст, который должен быть переведен был разделить на три категории:

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

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

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

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

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

Смежные вопросы