Шаблоны дизайна для веб-сайта с несколькими языками?
-
28-09-2019 - |
Вопрос
Позвольте сказать, что я проектирую сайт, где у нас есть английский, французский, испанский, немецкий и Корея (я нет, но давай притворяться, что я).
Я не могу положиться на такие услуги, как Google Translate, так как природа сайта не для развлечения, а дело. Позвольте сказать, что у меня есть доступ к профессиональным переводчикам, которые могут перевести что-то в контексте на другой язык и дать мне этот текст.
Каковы некоторые известные и простые способы обслуживать контент на нескольких языках с веб-сайтом?
Есть много вариантов, таких как отдельные страницы, используя базу данных и пр. ... Но я не могу действительно решить, что лучше всего, как концепция будет масштабироваться, что нужно учитывать, и как иметь дело с отсутствующими переводами?
Есть ли удобные практики для этого?
Решение
Широкая тема, о которой вы спрашиваете, называется «интернационализация и локализация» (или I18N и L10N для коротких). Важно помнить, что это нет только о переводе сообщений. Есть много других вещей, которые идут на интернационализацию веб-сайта.
Более очевидные вещи, которые вам понадобится:
- Кодировка персонажа, который работает для персонажей на всех языках, а не только на английском языке (это означает, что все вниз для базы данных должны использовать кодировку UTF)
- Какой-то способ представления пользователя Локаль (то есть: Java Локаль сорт)
- Общий рисунок для создания сообщения в локалии этого пользователя (т. Е. Весной Добыча
Другие вещи, которые вам нужно рассмотреть:
- Правильно сортировка строк на основе локали
- Дата форматирования на основе локали
- Всегда показывая времена в часовом поясе пользователя
- Отображение измерений расстояния для локали пользователя (т. Е. Майлз против километров?)
- Выкладывая сайт в правом налево на языки, такие как иврит
- Подумайте, как вы плюяли свои сообщения.
String message = "Please fix the following error" + (errors.size() > 1 ? "s" : "");
Просто не работает в интернационализированной программе. - Подумайте о том, как выложить свои веб-страницы, когда длина текста может отличаться дико. И никогда не предполагает, что символ более или менее или меньше определенной ширины (один символ в кандзи может быть в 8 раз шире, чем в нижнем регистре » я')
Лучший ресурс, который я могу найти за это Руководство пользователя библиотеки ICU. Отказ Если вы используете Java, это библиотека для использования.
Надеюсь, этот ответ - полезное начало!
Другие советы
Посмотрите на рекомендации Google для Многорегиональные и многоязычные сайты. Отказ Надеюсь, что информация пригодится. Удачи.
Совершенно согласен с @michael D и другими разработчиками, которые размещали свои ответы. Хотя то на этот вопрос уже принят, но я думаю, что один маленький вариант, такой как класс Pseudo: Lang (), также может быть полезным для создания многоязычных сайтов. Pseudo класс: Lang () позволяет определить язык в различных документах.
CSS-код:
Q: Lang (Fr) {/ * Цитаты для французских * / цитаты: " 00ab" " 00bb"; } Q: lang (en) {цитаты: " 201c" 201д "; / * Цитаты на английский * /}
HTML-код:
<html>
<body>
<pre>
<p>Quote in French: <q lang="fr">То être ou ne pas être</q>.</p>
<p>Quote in English: <q lang="en">То be or not to be</q>.</p>
</pre>
</body>
</html>
И вывод будет таким:
Quote in French language: << То être ou ne pas être >>.
Quote in English language: "То be or not to be".
Обратите внимание, что мы говорим о документах, а не в тексте, поскольку они выполняют сложное форматирование.
У нас есть набор файлов на диске, который содержит все строки в данном виджете / модуле / что угодно и отдельные файлы на язык, т. Е.
foo.strings == generic (happens to be US english)
foo.fr.strings == french
foo.fr-CA.strings == canadian french
foo.en-CA.strings == canadian english
На основе заголовка языка клиента, мы определяем, какой язык он хочет.
Когда заданный язык сначала запрашивается, мы попали в файловую систему для создания большого сопоставления строки для этого языка, а затем кэшируйте его в памяти. Если данная строка не определена в FR-CA, мы будем опрокидывать стек до FR, а затем в конечном итоге к общему
Страницы генерируются динамически, и сгенерированная версия каждого URL-адреса кэшируется в зависимости от языковых заголовков пользователя (среди прочего).
надеюсь, это поможет