موقع محرك تطبيق Google مصمم للجمهور الدولي ، لغات متعددة

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

سؤال

أقوم بإنشاء موقع على محرك تطبيق 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 أطول مما هو مطلوب. أفكار؟

هل هناك أي خيارات أخرى لا أفكر فيها؟ سيكون موضع تقدير أي نصيحة، وذلك بفضل.

هل كانت مفيدة؟

المحلول

الثلاثة جميع هذه الاحتمالات من وجهة نظر التنمية. من المحتمل أن يثبت نموذج "تمديد المجال" أنه مكلف وربما مستحيل اعتمادًا على مواردك واللغات التي ترغب في دعمها - على سبيل المثال ، تقتصر فقط على السكان أو الكيانات ذات الوجود الفرنسي.

قد لا يكون نموذج "المجلد الأول" أمرًا صعبًا للبرمجة. عند إعداد معالجاتك ، يمكنك أن تفعل شيئًا كهذا:

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

والتي من شأنها أن تمرر بشكل صريح معرف اللغة في المعلمة الأولى إلى المعالج.

النطاقات الفرعية ، كما أشرت ، ستكون أنظف من منظور عنوان URL. كما لوحظ في بيئة بيثونرونتيم مستندات يمكنك تعيين نطاقات فرعية متعددة لنفس التطبيق - في الواقع ، ستستجيب التطبيقات المستضافة إلى [أي شيء]. [اسم التطبيق] .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