Вопрос

Позвольте сказать, что я проектирую сайт, где у нас есть английский, французский, испанский, немецкий и Корея (я нет, но давай притворяться, что я).

Я не могу положиться на такие услуги, как 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-адреса кэшируется в зависимости от языковых заголовков пользователя (среди прочего).

надеюсь, это поможет

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