.
জ্যাঙ্গো-Transmeta অনুবাদ করিতে সংভব জ্যাঙ্গো এর মডেল কন্টেন্ট & nbsp জন্য একটি জ্যাঙ্গো অ্যাপ্লিকেশন; প্রতিটি ভাষা সংরক্ষণ করা এবং ডাটাবেস পর্যায়ে একটি ভিন্ন কলামে স্বয়ংক্রিয়ভাবে পরিচালিত হয়.
ব্যবহার করে Transmeta strong>
অনুবাদ করিতে সংভব মডেল তৈরি
এই মডেল তাকান:
বর্গ বুক (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 ল্যামডা S =
ভাষা = (
& Nbsp; ('স্প্যানিশ ভাষায়,' ugettext) ('স্প্যানিশ'),
& Nbsp; ('স্বীকারোক্তি', ugettext ('ইংরেজি')),
)
এই ./manage.py sqlall কমান্ড দিয়ে তৈরি এসকিউএল হয়:
শুরু;
(টেবিল "fooapp_book" তৈরি করুন
& Nbsp; "ID" সিরিয়াল নয় শূন্য প্রাথমিক কী,
& Nbsp; "শিরোনাম" VARCHAR (200) শূন্য নয়,
& Nbsp; "description_en" টেক্সট,
& Nbsp; "description_es" টেক্সট শূন্য নয়,
& Nbsp; "body_es" টেক্সট শূন্য নয়,
& Nbsp; "body_en" টেক্সট শূন্য নয়,
& Nbsp; "মূল্য" ডবল স্পষ্টতা শূন্য নয়
)
;
কমিট;
নোট: * Transmeta প্রতিটি ভাষার জন্য একটি কলাম তৈরি করে. ভবিষ্যতে নতুন ভাষা প্রয়োজন সম্পর্কে চিন্তা করবেন না, Transmeta আপনার জন্য এই সমস্যা solves. * এক ক্ষেত্র মিথ্যা = নাল এবং একটি ডিফল্ট মান আছে না হয়, তাহলে Transmeta ডিফল্ট ভাষা জন্য, শুধুমাত্র এক শূন্য ক্ষেত্র তৈরি করবে. অন্যান্য মাধ্যমিক ভাষার জন্য ক্ষেত্র nullable হতে হবে. অন্যান্য ক্ষেত্রে ঐচ্ছিক হবে এছাড়াও, যখন প্রাথমিক ভাষা (ফাঁকা সঙ্গে = সত্য), অ্যাডমিন অ্যাপ্লিকেশন প্রয়োজন হবে. কন্টেন্ট অনুবাদ জন্য স্বাভাবিক পদ্ধতির প্রথম আছে পরে প্রধান ভাষায় কন্টেন্ট যোগ করা হয় এবং কারণ অনুবাদক অন্যান্য ভাষায় অনুবাদ, তাই এই কাজ ছিল. * আপনি ডাটাবেস স্কিমা তৈরি ./manage.py syncdb ব্যবহার করতে পারেন.
পাইথন শেল মধ্যে বাজানো
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; ('স্প্যানিশ ভাষায়') সক্রিয়
& Gt; & gt; & gt; b.description
u'mi descripcion '
& Gt; & gt; & gt; b.description_en
u'my বর্ণনা '
নতুন ভাষা যোগ করার পদ্ধতি
আপনি শুধুমাত্র আপনার settings.py পরিবর্তন এবং আবার ডিবি সিঙ্ক করতে Transmeta জিজ্ঞাসা করতে হবে বিদ্যমান বেশী নতুন ভাষা যোগ করা প্রয়োজন. উদাহরণস্বরূপ, আমাদের প্রকল্প ফরাসি যোগ করার জন্য, আপনি settings.py মধ্যে ভাষা থেকে এটি যোগ করতে হবে:
ভাষা = (
& Nbsp; ('স্প্যানিশ ভাষায়,' ugettext) ('স্প্যানিশ'),
& Nbsp; ('স্বীকারোক্তি', ugettext ('ইংরেজি')),
& Nbsp; ('ফরাসী ভাষায়,' ugettext ('ফরাসি')),
)
এবং একটি বিশেষ sync_transmeta_db কমান্ড প্রয়োগ করুন:
& Nbsp; ./ manage.py sync_transmeta_db
"Fooapp.book" মডেল থেকে "বিবরণ" ক্ষেত্রে ভাষায় হারিয়ে যাওয়া: ফরাসী ভাষায়
এসকিউএল "fooapp.book" স্কিমা সুসংগত:
& Nbsp; টেবিল "fooapp_book" দ্বিতীয় কলাম "description_fr" টেক্সট যোগ করুন
(Y / N) [এন]:: আপনি আপনার পূর্ববর্তী এসকিউএল চালানো ব্যাপারে নিশ্চিত Y
নির্বাহ এসকিউএল ... সম্পন্ন
"Fooapp.book" মডেল থেকে "শরীর" ক্ষেত্রে ভাষায় হারিয়ে যাওয়া: ফরাসী ভাষায়
এসকিউএল "fooapp.book" স্কিমা সুসংগত:
& Nbsp; টেবিল "fooapp_book" দ্বিতীয় কলাম "body_fr" টেক্সট যোগ করুন
(Y / N) [এন]:: আপনি আপনার পূর্ববর্তী এসকিউএল চালানো ব্যাপারে নিশ্চিত Y
নির্বাহ এসকিউএল ... সম্পন্ন
এবং কাজ!
নতুন অনুবাদ করিতে সংভব ক্ষেত্র যোগ করার পদ্ধতি
এখন (অনেক বই তৈরি সঙ্গে) এই ওয়েব অ্যাপ্লিকেশন ব্যবহার করে বেশ কয়েক মাস পরে, কল্পনা, আপনি (বই মূল্য মুদ্রার উপর নির্ভর করে, কারণ উদাহরণস্বরূপ) বই মূল্য অনুবাদ করিতে সংভব করা প্রয়োজন.
এই অর্জন, প্রথম মডেল এর অনুবাদ করিতে সংভব ক্ষেত্র তালিকায় মূল্য যোগ করুন:
বর্গ বুক (models.Model):
& Nbsp; ...
& Nbsp; মূল্য = models.FloatField ()
& Nbsp; বর্গ মেটা:
& Nbsp; = ('বর্ণনা', 'শরীর', 'মূল্য',) অনুবাদ
যে সমস্ত ডিবি স্কিমা আপডেট করার sync_transmeta_db কমান্ড আহ্বান করা হয় এখন বাকি:
& Nbsp; ./ manage.py sync_transmeta_db
প্রাপ্তি সাধ্য ভাষাসমূহ:
& Nbsp; 1. স্প্যানিশ
& Nbsp; 2. ইংরেজি
বর্তমান অ-অনুবাদিত তথ্য রাখা যা একটি ভাষা নির্বাচন করুন.
বর্তমান তথ্য ভাষা কি? (1-2): 1
"Fooapp.book" মডেল থেকে "মূল্য" ক্ষেত্রে ভাষায় হারিয়ে যাওয়া: স্প্যানিশ ভাষায়, স্বীকারোক্তি
এসকিউএল "fooapp.book" স্কিমা সুসংগত:
& Nbsp; ডবল স্পষ্টতা টেবিল "fooapp_book" কলাম "price_es" যোগ ALTER
& Nbsp; আপডেট "fooapp_book" সেট "price_es" = "মূল্য"
& Nbsp; টেবিল "fooapp_book" পরিবর্তন না শূন্য সেট কলাম "price_es" দ্বিতীয়
& Nbsp; টেবিল "fooapp_book" কলাম যোগ পরিবর্তন "price_en" ডবল স্পষ্টতা
& Nbsp; টেবিল "fooapp_book" ড্রপ কলাম "মূল্য" দ্বিতীয়
(Y / N) [এন]:: আপনি আপনার পূর্ববর্তী এসকিউএল চালানো ব্যাপারে নিশ্চিত Y
নির্বাহ এসকিউএল ... সম্পন্ন
কি এই কমান্ডের জাহান্নাম?
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; ফেরত ক্ষেত্র
বৈশিষ্ট্য
- অনুবাদ করিতে সংভব ক্ষেত্র সঙ্গে স্বয়ংক্রিয় স্কিমা সৃষ্টি.
- অনুবাদ করিতে সংভব ক্ষেত্র জ্যাঙ্গো এর অ্যাডমিন ইন্টারফেস মধ্যে একত্রিত করা.
- কমান্ড নতুন অনুবাদ করিতে সংভব ক্ষেত্র এবং নতুন ভাষা যোগ ডাটাবেস স্কিমার সুসংগত করুন.
এই রিলিজে নতুন কি
- যোগ করা হয়েছে get_mandatory_fieldname ফাংশন.
সংস্করণ 0.6.9 নতুন কি
- আন্ডার ক্ষেত্র নাম পদ্ধতি get_field_language সাপোর্ট
সংস্করণ 0.6.8 নতুন কি
- কমান্ড sync_transmeta_db মধ্যে একটি সামান্য বাগ (UnboundLocalError: নিয়োগ আগে উল্লেখ করা 'চ' স্থানীয় পরিবর্তনশীল)
সংস্করণ 0.6.7 নতুন কি
- Transmeta লেবেল প্রতিনিধিত্ব (verbose_name) পরিবর্তন করুন
সংস্করণ 0.6.6 নতুন কি
- উন্নতি এবং ব্যবহারযোগ্যতা
- ফিক্স কিছু বাগ করুন
- ডকুমেন্টেশন
কমান্ড sync_transmeta_db মধ্যে
সংস্করণ 0.6.5 নতুন কি
- উন্নতি এবং ব্যবহারযোগ্যতা
- গত জ্যাঙ্গো (কমান্ড sync_transmeta_db) কাজ করে
- MySQL সঙ্গে কাজ করে (কমান্ড sync_transmeta_db)
কমান্ড sync_transmeta_db মধ্যে
সংস্করণ 0.6.4 নতুন কি
- মডেল উত্তরাধিকার সঙ্গে সংশোধন করা হয়েছে ত্রুটি.
সংস্করণ 0.6.3 নতুন কি
- TRANSMETA_LANGUAGES সেটিংস ব্যবহার করার অনুমতি দিন.
- যোগ করা হয়েছে দুটি বিকল্প sync_transmeta_db থেকে: -y (সব উপর হ্যাঁ অনুমান) ও -d (ডিফল্ট ভাষা কোড)
সংস্করণ 0.6.2 নতুন কি
- কাজ করে.
ডিফল্ট লোকেল স্প্যানিশ ভাষায়-ES হিসাবে অথবা en-US বানান রূপগুলো আছে যখন
আবশ্যক
- জ্যাঙ্গো
- পাইথন
পাওয়া মন্তব্যসমূহ না