.
i18n কর্মপ্রবাহ এবং আন্তর্জাতিক অ্যাপ্লিকেশন উন্নয়ন & nbsp প্রক্রিয়া সহজ করার চেষ্টা করে যে একটি প্যাকেজ; এটা বিশেষ gettext এর এবং হট্টগোল কাছাকাছি একটি পাতলা আলোয়ান বিদ্যমান সরঞ্জাম, হয়.
বেসিক ব্যবহার
# Demo.py
#
i18n.translator আমদানি অনুবাদক থেকে
supported_languages = ['it_IT', 'fr_FR', 'de_DE']
# ইতালিয়ান অনুবাদের সক্রিয়
TR = অনুবাদক ('/ পাথ / / root- র জন্য', supported_languages, 'it_IT')
মুদ্রণ TR ._ ('হ্যালো দুনিয়া!')
যেখানে / পাথ / / root- র / আপনার প্রকল্পের রুট ডিরেক্টরি. Instantiated, তখন অনুবাদক বর্গ স্বয়ংক্রিয়ভাবে তৈরি একটি ডিরেক্টরি বলা / পাথ / / root- র / অনুবাদের সংরক্ষণ করা হয় যেখানে ভাষা.
নিষ্কাশন বার্তা
প্রকৃত অনুবাদ কাজ করার আগে, আপনি pybabel সার এবং pybabel আপডেট কাছাকাছি একটি লেফাফা, যা i18n মডিউল, উপর সার কমান্ড invoking দ্বারা, আপনার সোর্স ফাইল থেকে বার্তা নিষ্কাশন করা প্রয়োজন:
& Nbsp; পাইথন -m i18n --root = / পাথ / / root- র --languages = it_IT, fr_FR, de_DE সার
সার ভিতরে আবৃত সমস্ত বার্তা কল জন্য দেখায় যেমন_ (), gettext এর () বা ngettext () এবং একটি ফাইল নামক ভাষা / template.pot উত্পাদন করে. এই অ্যাপ্লিকেশনের মধ্যে পাওয়া সব বার্তা উপস্থিত রয়েছে, যা একটি আদর্শ gettext ডাকঘর file` হয়.
তাছাড়া, এছাড়াও $ কোড উপরের উদাহরণে supported_languages (it_IT, fr_FR এবং de_DE তালিকাভুক্ত ভাষা এক যেখানে ভাষা / $ কোড / LC_MESSAGES / messages.po, হিসাবে সমর্থিত ভাষার প্রতিটি জন্য একটি বার্তা ক্যাটালগ ফাইল তৈরি করে) (নিষ্কাশন ).
ক্যাটালগ ফাইল যেমন QT ভাষাবিদ বা Poedit জন্য, এখন অনেক বিদ্যমান টুল ব্যবহার করে অনুবাদ করা জন্য প্রস্তুত হয়. আবেদন সঠিক কার্যকরী জন্য, সমগ্র ভাষা / অনুক্রমের সংরক্ষিত করা প্রয়োজন. আমরা আবেদন একাত্মতার অন্যান্য ফাইল সঙ্গে একসঙ্গে সংস্করণ কন্ট্রোল সিস্টেম বিভিন্ন messages.po ফাইল ট্র্যাক করার পরামর্শ দিচ্ছি.
আপডেট করার প্রণালী বার্তা
আবেদন উন্নয়ন সময়, আপনি নিশ্চয় নতুন বার্তা যোগ হবে অনুবাদ করা. এটা (বিদ্যমান অনুবাদের সহ) বিদ্যমান ক্যাটালগ ফাইল, তাদের বিষয়বস্তু খুঁজে বের করে যদি সদ্য নিষ্কাশিত বার্তা সঙ্গে মিশে গিয়ে তৈরি হয়: সার কমান্ড স্বয়ংক্রিয়ভাবে এই ক্ষেত্রে সব ব্যবস্থা.
কম্পাইল করার প্রণালী ক্যাটালগ
এটা gettext এর সঙ্গে তাদের ব্যবহার করার পূর্বে ক্যাটালগ ফাইল কম্পাইল করা প্রয়োজন. ডিফল্টরূপে, আমাদের অনুবাদক বস্তুর স্বয়ংক্রিয়ভাবে .mo সংশ্লিষ্ট ফাইল উৎপাদন ভাষা / পাওয়া যায় সমস্ত ক্যাটালগ, প্রনয়ন. সংকলন ক্যাটালগ ফাইল পরিবর্তন করা হয়েছে শুধুমাত্র যখন সম্পন্ন করা হয়. অধিকাংশ ক্ষেত্রে আপনি ক্যাটালগ সংকলন সম্পর্কে চিন্তা করতে হবে না এর মানে হল যে.
আপনি এই পদক্ষেপ সম্পর্কে আরো নিয়ন্ত্রণ করতে পছন্দ করেন, আপনি অনুবাদক রচয়িতা মিথ্যা autocompile = পাস ও কমান্ড-লাইন থেকে নিজে তাদের কম্পাইল করতে পারেন:
& Nbsp; পাইথন -m i18n --root = / পাথ / / root- র --languages = it_IT, fr_FR, de_DE কম্পাইল
একটি ডাটাবেসের মধ্যে সংরক্ষণ অনুবাদের
কিছু অ্যাপ্লিকেশনের জন্য এটি নতুন অনুবাদের নির্ধারণ এবং / অথবা ডিফল্ট বেশী অগ্রাহ্য করা যাক দরকারী. i18n অনুবাদক একটি উপশ্রেণী, যা DBTranslator বর্গ, সঙ্গে এই ব্যবহার ক্ষেত্রে সমর্থন করে. অনুবাদ যখন, DBTranslator প্রথম ডাটাবেসের মধ্যে মনে হচ্ছে: বার্তা খুঁজে পাওয়া যায় না করা হয়, মান gettext এর আচরণ এটি প্রতিনিধিদের.
DBTranslator sqlalchemy উপর ভিত্তি করে. তার রচয়িতা একটি অতিরিক্ত ইঞ্জিন পরামিতি লাগে:
i18n.dbtranslator আমদানি DBTranslator থেকে
sqlalchemy আমদানি create_engine থেকে
ইঞ্জিন = create_engine ('SQLite: ///db.sqlite')
Root = '/ পাথ / / রুট'
ভাষা = ['it_IT', 'fr_FR']
DEST_LANGUAGE = 'it_IT'
TR = DBTranslator (root পরিচয়ে, ভাষা, DEST_LANGUAGE, ইঞ্জিন = ইঞ্জিন)
মুদ্রণ TR ._ ("ওহে দুনিয়া")
DBTranslator স্বয়ংক্রিয়ভাবে ডিবি টেবিল translation_entries সৃষ্টি করে. তারপর, এটা টেবিল নিপূণভাবে একটি ইউজার ইন্টারফেস প্রদান করে আবেদন করতে হয়. পরীক্ষার জন্য, আপনি ডিবি একটি নতুন অনুবাদ সন্নিবেশ করতে add_translation () মেথড ব্যবহার করতে পারেন:
tr.add_translation ("it_IT", "হ্যালো ওয়ার্ল্ড", "Ciao Mondo")
মুদ্রণ TR ._ ("ওহে দুনিয়া") # প্রিন্ট "Ciao Mondo"
একটি বিশ্বব্যাপী অনুবাদক কিভাবে ব্যবহার করার জন্য
নকশা দ্বারা, i18n সম্পূর্ণভাবে কোনো বৈশ্বিক রাষ্ট্র এড়ানোর চেষ্টা করে. এই আপনি আপনি চান হিসাবে অনেক অনুবাদক ও DBTranslator, একটি ভিন্ন ডিরেক্টরি এবং / অথবা ডাটাবেস উল্লেখ প্রতিটি instantiate করতে পারেন. এই পরীক্ষার জন্য সহায়ক.
তবে, বাস্তবে অধিকাংশ প্রকল্পের প্রকল্প সব উপাদান এর বার্তা সম্পর্কে জানে, যা একটি বৈশ্বিক অনুবাদক ব্যবহার করতে চান. ডেমো আবেদন translate.py মডিউল এটা করতে একটি উপায় দেখায়:
আমদানি PY
i18n.translator আমদানি অনুবাদক থেকে
# এই ফাইল ধারণকারী ডিরেক্টরির প্রকল্পের রুট সেট
Root = py.path.local (__ ফাইল __). Dirpath ()
ভাষা = ['it_IT', 'fr_FR', 'de_DE']
TR = অনুবাদক (root পরিচয়ে, ভাষা, 'it_IT')
_ = Tr._
ngettext = tr.ngettext
__name__ == '__main__' যদি:
& Nbsp; tr.cmdline (sys.argv)
এই ভাবে, আবেদন বাকি কেবল আমদানি এবং translate.py থেকে: _ () এবং ngettext () ব্যবহার করতে পারেন. অথবা, আপনার পছন্দ, আমদানি সরাসরি TR বস্তু এবং ব্যবহার TR ._ () এবং tr.ngettext এ () বার্তা অনুবাদ করতে.
কোড শেষ দুই লাইন নিজে রুট ডিরেক্টরি এবং সমর্থিত ভাষায় উল্লেখ করেও সার কল এবং কমান্ড লাইন থেকে কম্পাইল করার জন্য একটি সুবিধাজনক উপায় করতে সক্ষম হবেন. শুধু রান:
& Nbsp; পাইথন translate.py সার # ... অথবা কম্পাইল
আবশ্যক
- পাইথন
পাওয়া মন্তব্যসমূহ না