国際的な視聴者向けに構築されたGoogleアプリエンジンサイト、複数の言語

StackOverflow https://stackoverflow.com/questions/4081756

質問

Google App Engineにサイトを構築しており、そのコアコードとデータベースは、さまざまな言語と地域を処理するように設計されています。

私が本当に探しているのは、特にGAE/Django/PythonセットアップのためにURLの構造をどのように構成すべきかについての提案です。そのため、WebサイトはURLに応じてページをロードする言語を知っています。

私の提案は次のとおりです。あなたが最高だと思うものについてチャイムしてください:

サブドメイン: http://fr.mysite.com/ しかし、これにより、「en」、「fr」、「de」など、異なるサブドメインを持つことが可能ですか?

ドメイン拡張機能: http://www.mysite.fr/各言語の異なるドメイン名を購入してから、同じアプリを指すことは可能ですか?

最初のフォルダー: http://www.mysite.com/fr/about-us この方法は機能しますが、コーディングするのが面倒で、必要以上にURLが長くないことを望みます。考え?

私が考えていない他のオプションはありますか?どんなアドバイスにも感謝します、ありがとう。

役に立ちましたか?

解決

これら3つはすべて、開発の観点からの可能性です。 「ドメイン拡張」モデルは、リソースやサポートしたい言語に応じて、高価で不可能であることが証明される可能性があります。

「最初のフォルダー」モデルは、プログラムするのがそれほど難しくないかもしれません。ハンドラーをセットアップするとき、あなたは次のようなことをすることができます:

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)
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top