2010-11-02 8 views
3

Je crée un site sur google app engine et son code principal et sa base de données sont conçus pour gérer différentes langues et régions. Ce que je cherche vraiment, ce sont des suggestions sur la façon dont les url devraient être structurées, spécifiquement pour une configuration gae/django/python, donc le site sait quelle langue il devrait charger les pages en fonction de l'URL.Site Google App Engine conçu pour une audience internationale, plusieurs langues

Voici mes suggestions, s'il vous plaît CARILLON sur ce que vous pensez est le meilleur:

SUBDOMAIN: http://fr.mysite.com/ Mais est-ce possible d'avoir des sous-domaines différents, tels que "en", "fr", « de ", et toujours pointer vers la même application google dans votre compte?

EXTENSION DE DOMAINE: http://www.mysite.fr/Serait-il possible d'acheter des noms de domaine pour chacune des langues, pointez à la même application?

FOLDER PREMIER: http://www.mysite.com/fr/about-us Cette méthode fonctionnerait, mais serait gênant pour coder et je préfère ne pas avoir plus urls que nécessaire. Pensées?

Existe-t-il d'autres options auxquelles je ne pense pas? Tout conseil serait apprécié, merci.

+0

Depuis Il semble qu'il soit possible de pointer différents sous-domaines vers la même application. Je pense que je vais suivre l'exemple de wikipedia: http://www.wikipedia.org/ – adam

Répondre

1

Tous les trois sont des possibilités du point de vue du développement. Le modèle "extension de domaine" risque de s'avérer coûteux et éventuellement impossible en fonction de vos ressources et des langues que vous souhaitez prendre en charge. Par exemple, le .fr est réservé aux seuls résidents ou entités ayant une présence française.

Le modèle "premier dossier" n'est peut-être pas si difficile à programmer. Lors de la configuration de vos gestionnaires, vous pourriez faire quelque chose comme ceci:

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

qui serait alors passer explicitement l'identificateur de langue en tant que premier paramètre au gestionnaire.

Les sous-domaines, comme vous l'avez souligné, seront les plus propres d'un point de vue URL. Comme indiqué dans les documents PythonRuntime Environment, vous pouvez mapper plusieurs sous-domaines à la même application. En fait, les applications hébergées répondront toutes à [n'importe quoi]. [Nom de l'application] .appspot.com. L'hôte utilisé pour l'accès peut être extrait de l'objet de requête. Dans l'ensemble, il semble que plus d'une préférence personnelle que toute autre chose.

+0

Notez que les sous-domaines génériques sont également possibles pour les domaines personnalisés - vous pouvez faire une carte * .votredomaine.com vers votre application App Engine. –

3

Je voulais juste souligner que cela pourrait également être fait avec un préfixe dans l'URL. Comme ceux-ci:

www.site.com/en/rest_of_url

www.site.com/fr/rest_of_url

l'application serait la configuration comme ceci:

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)