国際的な視聴者向けに構築されたGoogleアプリエンジンサイト、複数の言語
-
28-09-2019 - |
質問
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)