django-transmeta

ภาพหน้าจอของซอฟแวร์:
django-transmeta
รายละเอียดซอฟแวร์:
รุ่น: 0.6.11
วันที่อัพโหลด: 20 Feb 15
ผู้พัฒนา: Yaco Sistemas
การอนุญาต: ฟรี
ความนิยม: 1

Rating: 3.0/5 (Total Votes: 1)

Django-Transmeta เป็น app Django เนื้อหาที่แปลได้ในรูปแบบของ Django & nbsp;. ในแต่ละภาษาจะถูกจัดเก็บและบริหารจัดการโดยอัตโนมัติในคอลัมน์ที่แตกต่างกันในระดับฐานข้อมูล
การใช้ Transmeta
การสร้างแบบจำลองที่แปลได้
ดูรุ่นนี้:
ชั้นหนังสือ (models.Model):
& nbsp; title = models.CharField (max_length = 200)
& nbsp; คำอธิบาย = models.TextField ()
& nbsp; ร่างกาย = models.TextField (default = '')
& nbsp; ราคา = models.FloatField ()
สมมติว่าคุณต้องการที่จะให้คำอธิบายและร่างกายที่แปลได้ รูปแบบที่เกิดขึ้นหลังการใช้ Transmeta คือ
จากการนำเข้า Transmeta Transmeta
ชั้นหนังสือ (models.Model):
& nbsp; __ metaclass__ = Transmeta
& nbsp; title = models.CharField (max_length = 200)
& nbsp; คำอธิบาย = models.TextField ()
& nbsp; ร่างกาย = models.TextField (default = '')
& nbsp; ราคา = models.FloatField ()
& nbsp; ชั้น Meta:
& nbsp; แปล = ('คำอธิบาย', 'ร่างกาย',)
ให้แน่ใจว่าคุณได้ตั้งค่าเริ่มต้นและภาษาที่มีอยู่ใน settings.py ของคุณ:
LANGUAGE_CODE = 'es'
ugettext = แลมบ์ดา S หน้าหุ่น # ugettext ฟังก์ชั่นเป็นเอกสาร django ว่า
ภาษา = (
& nbsp; ('es', uge​​ttext ('สเปน'))
& nbsp; ('en', uge​​ttext ('ภาษาอังกฤษ'))
)
นี่คือ SQL สร้างขึ้นด้วยคำสั่ง ./manage.py sqlall:
BEGIN;
สร้างตาราง "fooapp_book" (
& nbsp; "id" อนุกรมคีย์หลัก 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; "ราคา" ความแม่นยำสองไม่เป็นโมฆะ
)
;
COMMIT;
หมายเหตุ: * Transmeta สร้างคอลัมน์หนึ่งสำหรับแต่ละภาษา ไม่ต้องกังวลเกี่ยวกับต้องภาษาใหม่ในอนาคต Transmeta แก้ปัญหานี้ให้คุณ * ถ้าเขตข้อมูลหนึ่งเป็นโมฆะ = เท็จและไม่ได้มีค่าเริ่มต้น, Transmeta จะสร้างเพียงหนึ่งสนามโมฆะไม่ได้สำหรับภาษาเริ่มต้น ทุ่งภาษารองอื่น ๆ จะ nullable นอกจากนี้ภาษาหลักจะต้องดูแลระบบในการตรวจสอบในขณะที่สาขาอื่น ๆ จะเป็นตัวเลือก (ด้วยความว่างเปล่า = True) นี้ทำเช่นนี้เพราะวิธีการปกติสำหรับการแปลเนื้อหาเป็นครั้งแรกเพิ่มเนื้อหาในภาษาหลักและต่อมามีนักแปลที่แปลเป็​​นภาษาอื่น ๆ * คุณสามารถใช้ 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; เปิดใช้งาน ('es')
& gt; & gt; & gt; b.description
u'mi Descripcion '
& gt; & gt; & gt; b.description_en
คำอธิบาย u'my '
การเพิ่มภาษาใหม่
ถ้าคุณต้องการที่จะเพิ่มภาษาใหม่กับคนที่มีอยู่ที่คุณจะต้องเปลี่ยน settings.py ของคุณและขอ Transmeta เพื่อซิงค์ DB อีกครั้ง ตัวอย่างเช่นการเพิ่มภาษาฝรั่งเศสให้กับโครงการของเราที่คุณต้องการเพื่อเพิ่มภาษาใน settings.py:
ภาษา = (
& nbsp; ('es', uge​​ttext ('สเปน'))
& nbsp; ('en', uge​​ttext ('ภาษาอังกฤษ'))
& nbsp; ('เริ่ม', uge​​ttext ('ฝรั่งเศส'))
)
และดำเนินการคำสั่ง sync_transmeta_db พิเศษ:
& nbsp; ./ manage.py sync_transmeta_db
ที่ขาดหายไปในภาษา "คำอธิบาย" ข้อมูลจาก "fooapp.book" รุ่น FR
SQL เพื่อประสาน "fooapp.book" คีมา:
& nbsp; เปลี่ยนแปลงตาราง "fooapp_book" เพิ่มคอลัมน์ "description_fr" ข้อความ
คุณแน่ใจหรือว่าคุณต้องการที่จะดำเนินการก่อนหน้า SQL (Y / N) [n]: y
การดำเนินการของ SQL ... เรียบร้อยแล้ว
ที่ขาดหายไปในภาษา "ร่างกาย" ข้อมูลจาก "fooapp.book" รุ่น FR
SQL เพื่อประสาน "fooapp.book" คีมา:
& nbsp; เปลี่ยนแปลงตาราง "fooapp_book" เพิ่มคอลัมน์ "body_fr" ข้อความ
คุณแน่ใจหรือว่าคุณต้องการที่จะดำเนินการก่อนหน้า SQL (Y / N) [n]: y
การดำเนินการของ SQL ... เรียบร้อยแล้ว
และทำ!
เพิ่มสาขาใหม่ที่แปลได้
ตอนนี้คิดว่าหลังจากหลายเดือนโดยใช้ app เว็บนี้ (มีหนังสือหลายเล่มที่สร้างขึ้น) คุณจะต้องทำหนังสือราคาที่แปลได้ (ตัวอย่างเช่นเนื่องจากราคาหนังสือขึ้นอยู่กับเงิน)
เพื่อบรรลุเป้าหมายนี้เป็นครั้งแรกเพิ่มราคาในการแปลรูปแบบของรายการฟิลด์:
ชั้นหนังสือ (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; เปลี่ยนแปลงตาราง "fooapp_book" เพิ่มคอลัมน์ "price_es" ความแม่นยำสอง
& nbsp; UPDATE "fooapp_book" ตลาดหลักทรัพย์ฯ "price_es" = "ราคา"
& nbsp; เปลี่ยนแปลงตาราง "fooapp_book" แก้ไขคอลัมน์ "price_es" SET ไม่เป็นโมฆะ
& nbsp; เปลี่ยนแปลงตาราง "fooapp_book" เพิ่มคอลัมน์ "ราคาสินค้า" ความแม่นยำสอง
& nbsp; เปลี่ยนแปลงตาราง "fooapp_book" ลบคอลัมน์ "ราคา"
คุณแน่ใจหรือว่าคุณต้องการที่จะดำเนินการก่อนหน้า SQL (Y / N) [n]: y
การดำเนินการของ SQL ... เรียบร้อยแล้ว
อะไรคำสั่งนี้ไม่?
คำสั่ง sync_transmeta_db ไม่เพียง แต่จะสร้างคอลัมน์ฐานข้อมูลใหม่สำหรับเขตข้อมูลที่แปลใหม่ ... มันคัดลอกข้อมูลจากข้อมูลราคาเดิมในภาษาใดภาษาหนึ่งและนั่นคือเหตุผลว่าทำไมคำสั่งขอให้คุณสำหรับข้อมูลภาษาปลายทางสำหรับข้อมูลที่เกิดขึ้นจริง
บูรณาการดูแลระบบ
Transmeta โปร่งใสแสดงฟิลด์ที่แปลทั้งหมดเป็นส่วนติดต่อผู้ดูแล นี้เป็นเรื่องง่ายเพราะมีรูปแบบในความเป็นจริงหลายสาขา (หนึ่งสำหรับแต่ละภาษา)
เปลี่ยนเขตข้อมูลแบบฟอร์มในการดูแลค่อนข้างเป็นงานที่ร่วมกันและ Transmeta รวมถึงฟังก์ชั่นยูทิลิตี้ canonical_fieldname เพื่อใช้การเปลี่ยนแปลงเหล่านี้สำหรับสาขาภาษาทั้งหมดในครั้งเดียว มันอธิบายได้ดีขึ้นด้วยเช่น:
จากการนำเข้า Transmeta canonical_fieldname
ชั้น 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-US.

ต้องการ

  • Django
  • หลาม

ซอฟแวร์อื่น ๆ ของนักพัฒนา Yaco Sistemas

ความคิดเห็นที่ django-transmeta

ความคิดเห็นที่ไม่พบ
เพิ่มความคิดเห็น
เปิดภาพ!