Сайт приложений Google App, построенный для международной аудитории, несколько языков
-
28-09-2019 - |
Вопрос
Я строю сайт на приложении Google App, и его основной код и база данных предназначены для обработки различных языков и регионов.
То, что я действительно ищу, являетесь предложениями о том, как URL-адрес должен быть структурирован, в частности для настройки GAE / Django / Python, поэтому веб-сайт знает, на каком языке он должен загружать страницы в зависимости от URL.
Вот мои предложения, пожалуйста, позвоните на то, что вы думаете, лучше всего:
Поддомен: http://fr.mysite.com/ Но возможно, это возможно иметь разные субдомены, такие как «en», «FR», «de» и все еще указывают на то же приложение Google в вашей учетной записи?
Расширение домена: http://www.mysite.fr./ Было бы возможно приобрести разные доменные имена для каждого из языков, затем укажите его в одно и то же приложение?
Первая папка: http://www.mysite.com/fr/about-us. Этот метод будет работать, но было бы раздражает кодировать, и я бы предпочел не иметь более длинных URL, чем необходимо. Мысли?
Есть ли другие варианты, о которых я не думаю? Любой совет будет оценен, спасибо.
Решение
Все три из них являются возможностями с точки зрения развития. Модель «расширения домена», вероятно, окажется дорогим и, возможно, невозможным в зависимости от ваших ресурсов и языков, которые вы хотите поддержать - .fr, например, ограничен только жителями или организациями с французским присутствием.
Модель «Первая папка» может быть не так сложно программировать. При настройке ваших обработчиков вы можете сделать что-то подобное:
application = webapp.WSGIApplication(
[
('/(en|fr|de)/', IndexController),
]
Что затем явно пропустите идентификатор языка в качестве первого параметра для обработчика.
Поддомены, как вы указали, стану самыми чистыми с точки зрения URL. Как отмечено в Экокраса Pythonruntime Документы Вы можете сопоставить несколько поддоменов к тому же приложению - на самом деле принимаемые приложения все отвечают на [что-нибудь]. [Название приложения] .Appspot.com. Хост, используемый для доступа, может быть извлечен из объекта запроса.
В целом это кажется больше личных предпочтений, чем что-либо еще.
Другие советы
Я просто хотел указать, что это также можно сделать с префиксом в URL. Как это:
www.site.com/en/rest_of_url.
www.site.com/fr/rest_of_url.
Приложение будет установлено так:
class LanguageHandler(webapp2.RequestHandler):
def dispatch(self):
request = self.request
args = request.route_args
if len(args) and args[0] in ['en','fr']:
self.language = args[0]
request.route_args = args[1:]
try:
# Dispatch the request.
webapp2.RequestHandler.dispatch(self)
finally:
# The web page response Header will now include the 2 letter language code...
self.response.headers['Content-Language'] = str(self.language)
class HomePage(LanguageHandler):
def get(self):
# self.language is now 'en' or 'fr'
# ...code goes here...
app = webapp2.WSGIApplication([
(r'/(en|fr)', HomePage),
], debug = True)