django-transmeta

البرمجيات قطة:
django-transmeta
تفاصيل البرنامج:
الإصدار: 0.6.11
تاريخ إيداع: 20 Feb 15
المطور: Yaco Sistemas
ترخيص: حرر
شعبية: 1

Rating: 3.0/5 (Total Votes: 1)

وجانغو-transmeta هو التطبيق جانغو للمحتوى للترجمة في نماذج جانغو على & nbsp؛ يتم تخزين كل لغة وتمكن تلقائيا في عمود مختلفة على مستوى قاعدة البيانات.
باستخدام transmeta
خلق نماذج للترجمة
انظروا إلى هذا النموذج:
الطبقة كتاب (models.Model):
على & nbsp؛ عنوان = models.CharField (MAX_LENGTH = 200)
على & nbsp؛ وصف = models.TextField ()
على & nbsp؛ الجسم = models.TextField (الافتراضي = '')
على & nbsp؛ السعر = models.FloatField ()
افترض أنك تريد أن تجعل الوصف وللترجمة الجسم. النموذج الناتج بعد استخدام transmeta هو:
من transmeta TransMeta استيراد
الطبقة كتاب (models.Model):
على & nbsp؛ __ metaclass__ = TransMeta
على & nbsp؛ عنوان = models.CharField (MAX_LENGTH = 200)
على & nbsp؛ وصف = models.TextField ()
على & nbsp؛ الجسم = models.TextField (الافتراضي = '')
على & nbsp؛ السعر = models.FloatField ()
على & nbsp؛ الطبقة ميتا:
على & nbsp؛ ترجمة = ('وصف'، 'الهيئة'،)
تأكد من أنك قد وضعت اللغات الافتراضية والمتاحة في settings.py الخاص بك:
LANGUAGE_CODE = 'وفاق'
ugettext = امدا الصورة: الصورة # دمية ugettext وظيفة، كما يقول مستندات جانغو ل
LANGUAGES = (
على & nbsp؛ ('وفاق'، ugettext ('الإسبانية'))،
على & nbsp؛ ('أون'، ugettext ('الإنجليزية'))،
)
هذا هو SQL ولدت مع الأمر sqlall ./manage.py:
ابدأ؛
CREATE TABLE "fooapp_book" (
على & nbsp؛ "المعرف" التسلسلي المفتاح الأساسي NOT NULL،
على & nbsp؛ "عنوان" VARCHAR (200) NOT NULL،
وnbsp؛ "كرة description_en" النص،
وnbsp؛ "كرة description_es" النص NOT NULL،
وnbsp؛ "كرة body_es" النص NOT NULL،
وnbsp؛ "كرة body_en" النص NOT NULL،
على & nbsp؛ "السعر" الدقة المزدوجة NOT NULL
)
.
ارتكابها.
ملاحظات: * transmeta يخلق عمود واحد لكل لغة. لا تقلق بشأن الحاجة لغات جديدة في المستقبل، transmeta يحل هذه المشكلة بالنسبة لك. * إذا كان حقل واحد باطل = خطأ وليس لديها قيمة افتراضية، سوف transmeta خلق المجال NOT NULL واحد فقط، للغة الافتراضية. سوف حقول للغات ثانوية أخرى تكون قيم الفارغة. أيضا، سوف تكون هناك حاجة اللغة الأساسية في التطبيق المشرف، في حين أن غيرها من المجالات سوف تكون اختيارية (مع فارغة = صحيح). وقد تم ذلك حتى لأن النهج العادي للترجمة المحتوى هو أولا إضافة المحتوى في اللغة الرئيسية وبعد ذلك يكون المترجمين ترجمة إلى لغات أخرى. * يمكنك استخدام syncdb ./manage.py لخلق مخطط قاعدة البيانات.
اللعب في قذيفة الثعبان
transmeta يخلق حقل واحد لكل لغة المتاحة لكل حقل للترجمة المحددة في نموذج. وsuffixed أسماء الحقول مع لغة رموز قصيرة، على سبيل المثال: description_es، description_en، وهلم جرا. وبالإضافة إلى ذلك فإنه يخلق جالبة FIELD_NAME لاسترداد قيمة الحقل في اللغة النشطة.
دعونا اللعب قليلا في قذيفة الثعبان لفهم أفضل كيف يعمل هذا:
وGT؛ & GT؛ & GT. من fooapp.models استيراد كتاب
وGT؛ & GT؛ & GT. ب = Book.objects.create (description_es = u'mi descripcion، description_en = u'my وصف ')
وGT؛ & GT؛ & GT. b.description
وصف u'my "
وGT؛ & GT؛ & GT. من تنشيط استيراد django.utils.translation
وGT؛ & GT؛ & GT. تفعيل ('وفاق')
وGT؛ & GT؛ & GT. b.description
u'mi descripcion "
وGT؛ & GT؛ & GT. b.description_en
وصف u'my "
إضافة لغات جديدة
إذا كنت بحاجة إلى إضافة لغات جديدة إلى القائمة تحتاج فقط إلى تغيير settings.py واطلب transmeta لمزامنة DB مرة أخرى. على سبيل المثال، لإضافة الفرنسية لمشروعنا، تحتاج لإضافته إلى LANGUAGES في settings.py:
LANGUAGES = (
على & nbsp؛ ('وفاق'، ugettext ('الإسبانية'))،
على & nbsp؛ ('أون'، ugettext ('الإنجليزية'))،
على & nbsp؛ ('الاب'، ugettext ('الفرنسية'))،
)
وتنفيذ أمر sync_transmeta_db خاص:
على & nbsp؛ ./ manage.py sync_transmeta_db
في عداد المفقودين اللغات في الحقل "الوصف" من "fooapp.book" نموذج: الاب
SQL لمزامنة "fooapp.book" مخطط:
على & nbsp؛ تغيير الجدول "fooapp_book" إضافة عمود "description_fr" النص
هل أنت متأكد أنك تريد تنفيذ SQL السابق: (Y / N) [ن]: ذ
تنفيذ SQL ... تم
في عداد المفقودين اللغات في الحقل "الهيئة" من "fooapp.book" نموذج: الاب
SQL لمزامنة "fooapp.book" مخطط:
على & nbsp؛ تغيير الجدول "fooapp_book" إضافة عمود "body_fr" النص
هل أنت متأكد أنك تريد تنفيذ SQL السابق: (Y / N) [ن]: ذ
تنفيذ SQL ... تم
وفعل!
إضافة حقول جديدة للترجمة
الآن تخيل أنه بعد عدة أشهر باستخدام هذا التطبيق على شبكة الإنترنت (مع العديد من الكتب خلقت)، تحتاج إلى جعل للترجمة سعر الكتاب (على سبيل المثال بسبب سعر الكتاب يعتمد على العملة).
ولتحقيق ذلك، إضافة أولا السعر إلى قائمة الحقول ترجمة للنموذج:
الطبقة كتاب (models.Model):
على & nbsp؛ ...
على & nbsp؛ السعر = models.FloatField ()
على & nbsp؛ الطبقة ميتا:
على & nbsp؛ ترجمة = ('وصف'، 'الهيئة'، 'سعر'،)
كل ما تبقى الآن هو الدعوة الأمر sync_transmeta_db تحديث المخطط DB:
على & nbsp؛ ./ manage.py sync_transmeta_db
اللغات المتاحة:
على & nbsp؛ 1. اللغة الاسبانية
على & nbsp؛ 2. اللغة الانكليزية
اختيار اللغة التي لوضع بيانات غير مترجمة الحالية.
ما هي لغة البيانات الحالية؟ (1-2): 1
في عداد المفقودين اللغات في الحقل "السعر" من "fooapp.book" نموذج: وفاق، EN
SQL لمزامنة "fooapp.book" مخطط:
على & nbsp؛ تغيير الجدول "fooapp_book" إضافة عمود "price_es" الدقة المزدوجة
على & nbsp؛ UPDATE "fooapp_book" SET "price_es" = "السعر"
على & nbsp؛ تغيير الجدول "fooapp_book" ALTER العمود "price_es" SET NOT NULL
على & nbsp؛ تغيير الجدول "fooapp_book" إضافة عمود "price_en" الدقة المزدوجة
على & nbsp؛ تغيير الجدول "fooapp_book" DROP عمود "السعر"
هل أنت متأكد أنك تريد تنفيذ SQL السابق: (Y / N) [ن]: ذ
تنفيذ SQL ... تم
ماذا بحق الجحيم هذا الأمر لا؟
قيادة sync_transmeta_db ليس فقط يخلق الأعمدة قاعدة بيانات جديدة لحقل جديد للترجمة ... ونسخ البيانات من حقل السعر القديم إلى واحدة من اللغات، وهذا هو السبب في قيادة يطلب منك لحقل اللغة وجهة للبيانات الفعلية.
التكامل المشرف
transmeta يعرض بشفافية كافة المجالات للترجمة في واجهة الادارة. هذا أمر سهل لأن النماذج لديها في الواقع العديد من المجالات (واحد لكل لغة).
تغيير حقول النموذج في المشرف هو مهمة مشتركة الى حد بعيد، ويشمل transmeta دالة المنفعة canonical_fieldname لتطبيق هذه التغييرات لكافة الحقول اللغة في آن واحد. لقد أوضح ذلك أفضل مع مثال على ذلك:
من transmeta canonical_fieldname استيراد
الطبقة BookAdmin (admin.ModelAdmin):
على & nbsp؛ مواطنه formfield_for_dbfield (النفس، db_field **، kwargs):
على & nbsp؛ الحقل = عظمى (BookAdmin، النفس) .formfield_for_dbfield (db_field **، kwargs)
على & nbsp؛ db_fieldname = canonical_fieldname (db_field)
& nbsp؛ إذا db_fieldname == 'وصف':
على & nbsp؛ # هذا ينطبق على جميع * حقول description_
على & nbsp؛ field.widget = MyCustomWidget ()
على & nbsp؛ أليف field.name == 'body_es':
على & nbsp؛ # ينطبق هذا فقط على المجال body_es
على & nbsp؛ field.widget = MyCustomWidget ()
على & nbsp؛ الحقل عودة

والميزات:



إنشاء مخطط التلقائي مع الحقول للترجمة.
دمج الحقول ترجمة في واجهة المشرف جانغو.
الأمر لمزامنة مخطط قاعدة البيانات لإضافة حقول جديدة للترجمة واللغات الجديدة.

ما هو الجديد في هذا الإصدار:



وأضاف وظيفة get_mandatory_fieldname.

ما هو الجديد في الإصدار 0.6.9:



الدعم في طريقة get_field_language لأسماء الحقول مع سفلية

ما هو الجديد في الإصدار 0.6.8:



إصلاح خلل بسيط في sync_transmeta_db الأمر (UnboundLocalError: متغير محلي "و" المشار إليها قبل الاحالة)

ما هو الجديد في الإصدار 0.6.7:



تغيير التمثيل (verbose_name) من التسميات transmeta

ما هو الجديد في الإصدار 0.6.6:



التحسينات وسهولة الاستخدام في sync_transmeta_db القيادة
إصلاح بعض الخلل
توثيق

ما هو الجديد في الإصدار 0.6.5:



التحسينات وسهولة الاستخدام في sync_transmeta_db القيادة
يعمل مع جانغو الأخير (sync_transmeta_db الأوامر)
يعمل مع الخلية (وsync_transmeta_db الأوامر)

ما هو الجديد في الإصدار 0.6.4:



خطأ إصلاحات مع الميراث في النماذج.

ما هو الجديد في الإصدار 0.6.3:



السماح لاستخدام إعدادات TRANSMETA_LANGUAGES.
وأضاف خيارين لsync_transmeta_db: -y (تفترض نعم على الإطلاق) و-d (الافتراضي رمز اللغة)

ما هو الجديد في الإصدار 0.6.2:



يعمل عندما اللغة الافتراضية لها بدائل إملائي ES-ES أو EN-US.

والمتطلبات:



جانغو
بيثون

البرامج الأخرى من المطور Yaco Sistemas

Cmsutils
Cmsutils

14 Apr 15

transhette
transhette

11 May 15

Merengue
Merengue

14 Apr 15

تعليقات ل django-transmeta

لم يتم العثور على التعليقات
إضافة تعليق
بدوره على الصور!