Как Вы создаете многоязычный веб-сайт?

list(map(chr, [66, 53, 0, 94]))

map (func, * iterables) -> map object Сделать итератор, который вычисляет функцию, используя аргументы из каждого из iterables. Остановка, когда исчерпана самая короткая итерация.

«Сделать итератор»

означает, что он вернет итератор.

", который вычисляет функцию с использованием аргументов из каждого из итераций "

означает, что функция next () итератора будет принимать одно значение каждого итератора и передавать каждый из них в один позиционный параметр function.

Итак, вы получаете итератор из map () funtion и jsut передаете его в список () встроенную функцию или используете списки.

6
задан Mae 29 September 2016 в 09:17
поделиться

5 ответов

Они способ, которым я разработал базу данных прежде, состоит в том, чтобы иметь таблицу Новостей, содержащую основную информацию как NewsID (интервал), NewsPubDate (дата и время), NewsAuthor (varchar/int), и затем иметь связанную таблицу NewsText, который имеет эти столбцы: NewsID (интервал), NewsText (текст), NewsLanguageID (интервал). И наконец у Вас есть таблица Языка, которая имеет LanguageID (интервал) и LanguageName (varchar).

Затем когда Вы хотите показать Вашим пользователям страницу новостей, Вы делаете:

SELECT NewsText FROM News INNER JOIN NewsText ON News.NewsID = NewsText.NewsID
WHERE NewsText.NewsLanguageID = <<Session["UserLanguageID"]>>

Той разрядной Сессией является локальная переменная, где Вы храните пользовательский язык, когда они входят в систему, или вводит сайт впервые.

6
ответ дан 8 December 2019 в 04:57
поделиться

Предупреждение: я не хакер Java, таким образом, YMMV, но...

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

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

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

echo _("Please do not press this button again");

Затем выполнение gettext инструментов по Вашему исходному коду извлечет все экземпляры, перенесенные как этот в "почтовый" файл. Это будет содержать записи, такие как:

#: myfolder/my.source:239
msgid "Please do not press this button again"
msgstr ""

И можно добавить перевод в соответствующее место:

#: myfolder/my.source:239
msgid "Please do not press this button again"
msgstr "s’il vous plaît ne pas appuyer sur le bouton ci-dessous à nouveau"

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

Профессионалы Gettext

  • Не стоит на пути при кодировании
  • Очень легкий добавить переводы
  • Файлы ПО могут быть скомпилированы вниз для скорости
  • Существуют библиотеки, доступные для большинства языков / платформы
  • Существуют хорошие кросс-платформенные инструменты для контакта с переводами. На самом деле возможно разбудить Ваш набор команды перевода с инструментом, таким как poEdit для создания очень легким для них управлять переводческими проектами

Недостатки Gettext

  • Решает Ваши потребности "мебели" сайта, но Вы обычно все еще хотели бы основанный на базе данных подход для своей базы данных управляемое содержание

Поскольку больше информации о gettext видит эту страницу Википедии

14
ответ дан 8 December 2019 в 04:57
поделиться

Веб-приложения Java поддерживают интернационализацию с помощью библиотеки тегов стандарта Java.

Вы действительно получили 2 проблемы. Статичный довольный и динамический контент.

для статического содержания можно использовать jstl. Это использует java ResourceBundles для выполнения этого. Мне удалось получить Databased поддержанный пакет, работающий с помощью этого сайта.

Второй проблемой является динамический контент. Для решения этой проблемы, необходимо будет хранить данные так, чтобы можно было получить различные переводы на основе Локали пользователя. (Локаль включает Страну и Язык).

Это не тривиально, но это - что-то, что можно сделать с небольшим планированием впереди.

2
ответ дан 8 December 2019 в 04:57
поделиться

@Auron

это - то, к чему мы применяем его. Наши приложения являются всем PHP, но gettext имеет долгое наследие.

Похож существует хорошая реализация Java

1
ответ дан 8 December 2019 в 04:57
поделиться

Библиотеки тегов прекрасны, если Вы используете JSP, но можно также достигнуть I18N с помощью основанной на шаблоне технологии, такой как FreeMarker.

1
ответ дан 8 December 2019 в 04:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: