Сайт Google App Engine создан для международной аудитории, на нескольких языках. - PullRequest
3 голосов
/ 02 ноября 2010

Я создаю сайт на движке приложений Google, а его основной код и база данных предназначены для работы с разными языками и регионами.

Что мне действительно нужно, так это предложения о том, как должен быть структурирован 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-адреса, чем необходимо. Мысли

Есть ли другие варианты, о которых я не думаю? Любой совет будет оценен, спасибо.

Ответы [ 2 ]

3 голосов
/ 16 декабря 2012

Я просто хотел отметить, что это также может быть сделано с префиксом в URL.Например:

www.site.com / ru / 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)
1 голос
/ 03 ноября 2010

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

Модель "первой папки" может быть не такой сложной для программирования.При настройке ваших обработчиков вы можете сделать что-то вроде этого:

application = webapp.WSGIApplication(
[
  ('/(en|fr|de)/', IndexController),
]

, который затем явно передаст идентификатор языка в качестве первого параметра обработчику.

Поддомены, как вы указали, будет самым чистым с точки зрения URL.Как отмечалось в документах PythonRuntime Environment , вы можете сопоставить несколько поддоменов с одним приложением - фактически все размещенные приложения будут реагировать на [что угодно]. [Имя приложения] .appspot.com.Хост, используемый для доступа, может быть извлечен из объекта запроса.

В целом это больше похоже на личные предпочтения, чем на что-либо еще.

...