জাজানোতে আমি কীভাবে বর্তমান ভাষা পেতে পারি?


95

আমি কোনও মডেল বা প্রশাসকের বর্তমান থ্রেডে বর্তমান ভাষা কীভাবে পেতে পারি?


4
দয়া করে নির্দিষ্ট করুন 'আমার ওয়েবের ভাষা' - আপনার অর্থ ওয়েব অনুরোধ, ওয়েব সার্ভার, বা কী?
মাইকমেকানা

উত্তর:


141

বিশেষ আগ্রহের কাজগুলি django.utils.translation.get_language()যা বর্তমান থ্রেডে ব্যবহৃত ভাষা ফিরিয়ে দেয়। ডকুমেন্টেশন দেখুন ।


4
ক্যাভ্যাট: অনুবাদগুলি অস্থায়ীভাবে নিষ্ক্রিয় করা থাকলে (নিষ্ক্রিয়_আল (দ্বারা) বা যখন ওভাররাইডে (কোনও) পাস করা হয় না তখন কিছুই প্রত্যাবর্তন করে না। জাজানো ১.৮ এর আগে, অনুবাদগুলি নিষ্ক্রিয় করা হলে get_language () সর্বদা LANGUAGE_CODE ফিরিয়ে দেয়।
পিটার

91

অথবা আপনি এটি আপনার দৃষ্টিতে পেতে পারেন

অনুরোধ.লুঙ্গোপাতো

6
আমি এটিকে ভোট দিয়েছি (কোনও কারণে -১ থেকে)। স্থির (মিডলওয়্যার-কম) অনুবাদ সহ নিম্নলিখিতগুলি ( ডকস.ডজ্যাঙ্গোপ্রজেক্ট /en/dev/topics/i18n/depدام/… থেকে দ্রষ্টব্য ) ভাষাটি সেটিংসে রয়েছে ANGU request.LANGUAGE_CODE "।
আলেকজান্ডার Marquardt

4
এই লিঙ্কটি মারা গেছে এবং আমি উপরের ডকুমেন্টেড গৃহীত সমাধানটি ব্যবহার না করার কোনও কারণ দেখতে পাচ্ছি না:django.utils.translation.get_language()
qris

4
উদাহরণস্বরূপ মডেলগুলিতে ভাষাটি পাওয়ার চেষ্টা করা যদি এখনও কোন অনুরোধ না থাকে তবে সম্ভব হবে না। আমি মনে করি এটি django.utils.translation.get_language()সর্বদা একটি ভাল সমাধান।
হুসাম

একটি টেমপ্লেটে বর্তমান ভাষা পেতে কি?
আজমেউক

4
@azmeuk এটি আপনার জন্য দরকারী হতে পারে ডকস.ডজ্যাঙ্গোপ্রজেক্ট.ইন
আই

38

ভাষাটি পেতে আপনি যে পদ্ধতিটি ব্যবহার করেন সে সম্পর্কে সাবধান হন । কোন পদ্ধতির উপর নির্ভর করে জাজানো সঠিক ভাষাটি ব্যবহারের জন্য নির্ধারণ করতে বিভিন্ন উপায় এবং তথ্য ব্যবহার করবে।

django.utils.translation.get_language()ফাংশনটি ব্যবহার করার সময় এটি থ্রেড ভাষার সাথে লিঙ্কযুক্ত । জাজানো ১.৮ এর আগে settings.LANGUAGE_CODEঅনুবাদগুলি অক্ষম করা থাকলে এটি সর্বদা ফিরে আসে । আপনি যদি ম্যানুয়ালিভাবে থ্রেডের ভাষাটি ওভাররাইড করতে চান, আপনি সেইগুলি override()বা activate()ফাংশনগুলি ব্যবহার করতে পারেন , যা খুব স্পষ্টভাবে নাম দেওয়া হয়নি, তবে ভাল, এখনও দরকারী:

from django.utils import translation

with translation.override('fr'):
    print(_("Hello")) # <= will be translated inside the with block

translation.activate('fr') # <= will change the language for the whole thread.
# You then have to manually "restore" the language with another activate()
translation.activate('en') # <= change languages manually

আপনি যদি জাঙ্গোকে পথ এবং / অথবা অনুরোধ (ভাষা কুকি, ...) যাচাই করতে চান , যা অনেক বেশি সাধারণ উদাহরণ, www.example.com/en/<somepath>বনাম www.example.com/fr/<somepath>, ব্যবহার django.utils.translation.get_language_from_request(request, check_path=False)। এছাড়াও, এটি সর্বদা সেট করে একটি বৈধ ভাষা সেট করেsettings.LANGUAGES

আমি এই বিষয় সম্পর্কে গুগলের মাধ্যমে এই পার্থক্যগুলি খুঁজে পাওয়া খুব সহজ খুঁজে পাইনি সুতরাং এটি আরও রেফারেন্সের জন্য এখানে।


মনে রাখবেন এটি django.utils.translationঅনুবাদ, নয়। প্রদত্ত লিঙ্কটিতে একটি ভুল বানান রয়েছে। স্নিপেটে এটি সঠিক।
J0ANMM

4
মধ্যে পার্থক্য জন্য +1 django.utils.translation.get_language()এবং django.utils.translation.get_language_from_request(request, check_path)। দৃশ্য আপনার সাথে আধুনিক ব্যবহার করা উচিত যদি check_path = True। ভাষা আপনার টেম্পলেটে অনুষ্ঠিত হবে পেতে
Ondrej Skalicka

7

কেবল এটি যুক্ত করার জন্য আপনি যদি এটি ব্যবহার করেন django.utils.translation.get_language()তবে আপনার মনে রাখা উচিত যে কোডটির সেই বিভাগটি যদি অ্যাসিনক্রোনাস নামে ডাকা হয় (যেমন সেলারি কাজ হিসাবে) তবে এটি ভিন্ন থ্রেডে চলার কারণে এই পদ্ধতির কাজ হবে না।


4
এখানে স্পষ্ট পন্থাটি
হ'ল ভাষাটিকে

1

আপনি এটি ব্যবহার করতে পারেন

from django.utils import  translation
translation.get_language()

ইতিমধ্যে micha480 দ্বারা উত্তর। আপনার উত্তরের কোনও মান যুক্ত হয় না।
স্যামুয়েল ডাজন

0

localeভাষা সংক্রান্ত তথ্যের জন্য আপনি সিস্টেমটি পড়তে পারেন ।


4
আপনি -৩ থেকে সংযত হয়েছিলেন তবে আমি মনে করি যে প্রশ্নটি অস্পষ্ট - "আমার ওয়েবের বর্তমান ভাষা"। এটি অনুমান করার জন্য আপনার দোষ নয় যার অর্থ ওএস।
মাইকমেকানা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.