اذهب إلى المحتوى

السؤال

Recommended Posts

  • 0
نشر
بتاريخ 39 دقائق مضت قال Hamza Waleed2:

كيف يمكنني ترجمة موقع في دجانجو حتى المعلومات القادمه من قاعدة البيانات

مع العلم انه يمكن اضافة حقول لاحقا 

مرحبا @Hamza Waleed2
يمكنك ذلك من خلال تحديد الحقول التي تحتاج إلى ترجمتها في models.py, لذلك يجب عليك اتباع الخطوات التالية:

  1. إضافة طبقة إلى middleware في ملف settings.py لتصبح الترجمة مفعلة
    MIDDLEWARE = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
      
        'django.middleware.locale.LocaleMiddleware' #new <--
    ]
  2. تحديد النصوص التي تحتاج إلى ترجمتها في models.py باستخدام وظيفة gettext_lazy من django.utils.translation
    from django.db import models
    from django.utils.translation import gettext_lazy as _ #new
    
    # Create your models here.
    class Article(models.Model):
        title = models.CharField(_("Title"), max_length=100) #تعديل
        content = models.TextField(_("Content")) # تعديل
        created_at = models.DateTimeField(auto_now_add=True)
        updated_at = models.DateTimeField(auto_now=True)
  3.  بالعودة إلى ملف settings.py قم بإضافة اللغات إلى language_code للتبديل بينها باستخدام gettext_lazy وتعيين مجلد لوضع ملفات الترجمة فيه وليكن locale

    import os #new
    from pathlib import Path
    from django.utils.translation import gettext_lazy as _ #new
    
    LANGUAGES = (
        ('en', _('English')), #update
        ('ar', _('Arabic')),  #update
    )
    
    LOCALE_PATHS = [
        os.path.join(BASE_DIR, 'locale'), #new
    ]
  4. تشغيل أمر makemessages لإنشاء ملفات تحتوي على النصوص التي تحتاج إلى ترجمة عبر استخدام الأمر التالي ويمكن تحديد اللغة عبر الخيار -l, كذلك تكون للملفات اللاحقة po

     python manage.py makemessages -l ar
  5. تشغيل أمر compilemessages لتجميع ملفات ذات اللاحقة po إلى  ملفات ذات اللاحقة mo التي تحتوي على الترجمة النهائية عبر  الامر التالي

     python manage.py compilemessages
  6. في القوالب (templates)، تستطيع تضمين واستخدام النصوص المترجمة باستخدام وظيفة  tran

    html
    <h1>{% trans "Welcome to my website" %}</h1>

 

 

  • 0
نشر
بتاريخ منذ ساعة مضت قال Hamza Waleed2:

هل بهذه الطريقة سيتم ترجمة محتوى content في هذا المثال

ام سيترجم اسم الحقل فقط؟

 سيتم ترجمة محتوى الحقل "content" أيضًا.

والطريقة تتمثل في استخدام نموذج "ModelTranslation" لترجمة النماذج في Django.

وفي المثال، يتم ترجمة اسم الحقل "content" فقط ولكن باستطاعتك ترجمة محتوى الحقل أيضًا عن طريق إضافة ترجمة لقيمة الحقل كالتالي:

# models.py

class MyModel(models.Model):
    name = models.CharField(max_length=255)
    content = models.TextField()

    class Meta:
        translations = {
            'content': {
                'en': 'content in English',
                'ar': 'محتوى باللغة العربية',
            },
        }

والنتيجة هي ترجمة محتوى الحقل "content" إلى "content in English" باللغة الإنجليزية و "محتوى باللغة العربية" باللغة العربية.

ولإضافة حقول جديدة إلى نموذجك، ما عليك سوى إضافة حقول جديدة إلى نموذجك وإضافة ترجمات لها إلى الملف "models.py".

وهناك طرق أخرى لترجمة المعلومات القادمة من قاعدة البيانات في Django، ولكن تلك الطريقة هي طريقة بسيطة وفعالة.

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...