我正在在Google App Engine上建立一个网站,其核心代码和数据库旨在处理不同的语言和区域。

我真正寻找的是有关如何将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环境 DOCS您可以将多个子域映射到同一应用程序 - 实际上,托管的应用程序都会响应[任何东西]。[应用程序名称] .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)
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top