django-transmeta

צילום מסך תוכנה:
django-transmeta
פרטי תוכנה:
גרסה: 0.6.11
טען תאריך: 20 Feb 15
מפתחים: Yaco Sistemas
רשיון: ללא תשלום
פופולריות: 1

Rating: 3.0/5 (Total Votes: 1)

Django-Transmeta היא אפליקציה Django לתוכן לתרגום במודלים של Django & nbsp;. כל שפה מאוחסנת ומנוהלת באופן אוטומטי בעמודה שונה ברמת מסד הנתונים.
Transmeta שימוש ב
יצירת מודלים לתרגום
תסתכל על מודל זה:
כיתת ספר (models.Model):
& Nbsp; title = models.CharField (MAX_LENGTH = 200)
& Nbsp; תיאור = models.TextField ()
& Nbsp; גוף = models.TextField (ברירת מחדל = '')
& Nbsp; מחיר = models.FloatField ()
נניח שאתה רוצה להפוך את התיאור ותרגום גוף. מודל התוצאה לאחר שימוש Transmeta הוא:
מTransmeta יבוא Transmeta
כיתת ספר (models.Model):
& Nbsp; __ metaclass__ = Transmeta
& Nbsp; title = models.CharField (MAX_LENGTH = 200)
& Nbsp; תיאור = models.TextField ()
& Nbsp; גוף = models.TextField (ברירת מחדל = '')
& Nbsp; מחיר = models.FloatField ()
& Nbsp; Meta כיתה:
& Nbsp; לתרגם = ('תיאור', 'גוף',)
ודא שיש לך להגדיר את שפות ברירת מחדל וזמינות בsettings.py שלך:
"Es '= LANGUAGE_CODE
ugettext = S מבדה: # דמה של ugettext פונקציה, כמו המסמכים של Django אומרים
שפות = (
& Nbsp; ("es", ugettext ("ספרדי")),
& Nbsp; ("en", ugettext ("אנגלית")),
)
זהו SQL שנוצר עם פקודת sqlall ./manage.py:
בגין;
ליצור "fooapp_book" לוח (
& Nbsp; מפתח הראשי NOT NULL סדרתי "id",
& 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 פותרת בעיה זו עבורך. * אם תחום אחד הוא null = False ואין לו ערך ברירת מחדל, Transmeta תיצור שדה אחד בלבד NOT NULL, לשפת ברירת המחדל. שדות לשפות משניים אחרות יהיו מאפשרים ערכים null. כמו כן, השפה העיקרית תידרש באפליקצית admin, בעוד שהתחומים האחרים יהיו אופציונליים (עם ריק = True). זה נעשה כך כי הגישה הנורמלית לתרגום תוכן להוסיף תוכן ראשון בשפה העיקרית ולאחר מכן יש לי מתרגמים לתרגם לשפות אחרות. * אתה יכול להשתמש בsyncdb ./manage.py ליצור סכמת מסד הנתונים.
שיחק בפגז פיתון
Transmeta יוצרת שדה אחד לכל שפה זמינה לכל תחום הניתן לתרגום שהוגדר במודל. שמות שדותיהם מצמידים עם קודי שפה קצרים, למשל: 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; להפעיל ("es")
& Gt; & gt; & gt; b.description
descripcion u'mi '
& Gt; & gt; & gt; b.description_en
תיאור u'my '
הוספת שפות חדשות
אם אתה צריך להוסיף שפות חדשות לאלו קיימים אתה רק צריך לשנות settings.py שלך ולשאול את Transmeta לסנכרן DB שוב. לדוגמה, כדי להוסיף צרפתי לפרויקט שלנו, אתה צריך להוסיף אותו לשפות בsettings.py:
שפות = (
& Nbsp; ("es", ugettext ("ספרדי")),
& Nbsp; ("en", ugettext ("אנגלית")),
& Nbsp; ('fr', ugettext ('צרפתית')),
)
ולבצע פקודה sync_transmeta_db מיוחדת:
& Nbsp; ./ manage.py sync_transmeta_db
חסר שפות בשדה "תיאור" ממודל "fooapp.book": fr
SQL לסנכרן סכימה "fooapp.book":
& Nbsp; ALTER "fooapp_book" TABLE ADD טקסט "description_fr" טור
האם אתה בטוח שברצונך לבצע SQL הקודם: (Y / N) [n]: y
SQL ביצוע ... Done
חסר שפות בשדה "גוף" ממודל "fooapp.book": fr
SQL לסנכרן סכימה "fooapp.book":
& Nbsp; ALTER "fooapp_book" TABLE ADD טקסט "body_fr" טור
האם אתה בטוח שברצונך לבצע SQL הקודם: (Y / N) [n]: y
SQL ביצוע ... Done
ונעשה!
הוספת שדות לתרגום חדשים
עכשיו דמיינו ש, לאחר מספר חודשים באמצעות יישום זה אינטרנט (עם ספרים רבים שנוצרו), אתה צריך לעשות תרגום מחיר הספר (למשל, כי מחיר הספר תלוי במטבע).
כדי להשיג זאת, להוסיף ראשון מחיר לרשימת השדות לתרגום של המודל:
כיתת ספר (models.Model):
& Nbsp; ...
& Nbsp; מחיר = models.FloatField ()
& Nbsp; Meta כיתה:
& Nbsp; לתרגם = ('תיאור', 'גוף', 'מחיר',)
כל מה שנשאר עכשיו הוא קורא את פקודת sync_transmeta_db לעדכן את סכימת DB:
& Nbsp; ./ manage.py sync_transmeta_db
שפות זמינות:
& Nbsp; 1. ספרדית
& Nbsp; 2. אנגלית
בחר בשפה שבה הכניסו את הנתונים מתורגמים הנוכחיים.
מה השפה של הנתונים הנוכחיים? (1-2): 1
חסר שפות בשדה "מחיר" ממודל "fooapp.book": es, en
SQL לסנכרן סכימה "fooapp.book":
& Nbsp; ALTER "fooapp_book" TABLE ADD "price_es" טור דיוק כפול
& Nbsp; "price_es" UPDATE "fooapp_book" SET = "מחיר"
& Nbsp; ALTER "fooapp_book" שולחן ALTER "price_es" הטור SET NOT NULL
דיוק כפול ALTER "fooapp_book" TABLE ADD עמודה "price_en"; & nbsp
& Nbsp; ALTER "מחיר" שולחן "fooapp_book" טור DROP
האם אתה בטוח שברצונך לבצע SQL הקודם: (Y / N) [n]: y
SQL ביצוע ... Done
מה לעזאזל פקודה זו עושה?
פקודת sync_transmeta_db לא רק יוצרת עמודות מסד נתונים חדשות לשדה לתרגום חדש ... זה להעתיק נתונים משדה המחיר ישן לאחת משפות, ולכן הפקודה לשאול אותך לשדה שפת יעד לנתונים בפועל.
שילוב Admin
Transmeta שקופה מציגה את כל שדות הניתנים לתרגום לממשק הניהול. זה קל, כי יש לי דגמים בעובדת תחומים רבים (אחד לכל שפה).
שינוי שדות טופס במנהל הוא משימה די נפוצה, וTransmeta כוללת פונקציית תועלת canonical_fieldname כדי להחיל את השינויים הללו לכל תחומי השפה בבת אחת. זה טוב יותר הסביר בדוגמה:
מcanonical_fieldname יבוא Transmeta
הכיתה BookAdmin (admin.ModelAdmin):
& Nbsp; def 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; elif field.name == 'body_es':
& Nbsp; # זה חל רק על שדה body_es
& Nbsp; field.widget = MyCustomWidget ()
& Nbsp; שדה תמורה

מאפיינים :

  • יצירת סכימה אוטומטית עם שדות הניתנים לתרגום.
  • שדות הניתנים לתרגום ישולבו ממשק הניהול של Django.
  • פיקוד לסנכרן סכימת מסד נתונים כדי להוסיף שדות לתרגום חדשים ושפות חדשות.

מה חדש בהודעה זו:

  • פונקצית get_mandatory_fieldname נוסף.

מה חדש בגרסה 0.6.9:

  • תמיכה בget_field_language שיטה לשמות שדות עם קו תחתון

מה חדש בגרסה 0.6.8:

  • תקן קצת באג בsync_transmeta_db הפקודה (UnboundLocalError: משתנה המקומי 'f' הפניה לפני ההקצאה)

מה חדש בגרסה 0.6.7:

  • שנה את הייצוג (verbose_name) של תוויות Transmeta

מה חדש בגרסה 0.6.6:

  • שיפורים ושימושיות בsync_transmeta_db הפקודה
  • לתקן כמה באגים
  • תיעוד

מה חדש בגרסה 0.6.5:

  • שיפורים ושימושיות בsync_transmeta_db הפקודה
  • עובד עם Django האחרון (sync_transmeta_db הפקודה)
  • עובד עם mysql (sync_transmeta_db הפקודה)

מה חדש בגרסה 0.6.4:

  • שגיאת תיקונים עם ירושה במודלים.

מה חדש בגרסה 0.6.3:

  • אפשר להשתמש בהגדרות TRANSMETA_LANGUAGES.
  • שתי אפשרויות נוסף לsync_transmeta_db: -y (תניח כן על כולם) ו-d (קוד שפת ברירת מחדל)

מה חדש בגרסה 0.6.2:

  • עובד כאשר יש לי מיקום ברירת מחדל גרסאות איות כes-ES או en-אמריקאי.

דרישות :

  • Django
  • Python

תוכנות אחרות של יזם Yaco Sistemas

Cmsutils
Cmsutils

14 Apr 15

transhette
transhette

11 May 15

django-form-admin
django-form-admin

14 Apr 15

תגובות ל django-transmeta

תגובות לא נמצא
להוסיף הערה
הפעל את התמונות!