টার্মিনাল বার্তা / সতর্কতা / ত্রুটির জন্য অস্থায়ীভাবে ভাষা পরিবর্তন করুন


22

আমার টার্মিনালের বার্তাগুলি ডিফল্টরূপে রাশিয়ান ভাষা ব্যবহার করে প্রদর্শিত হয় যা আমার স্থানীয়।

এক মুহুর্তের জন্য আমি তাদের ইংরাজীতে থাকতে চাই (উদাঃ ফোরামে পেস্ট করা), তারপরে আবার ডিফল্ট ভাষায় স্যুইচ করুন।

আমি কীভাবে ব্যাশ ব্যবহার করে স্যুইচ করতে এবং স্যুইচ করতে পারি?

উত্তর:


23

ভাষার সেটিংস পরিবর্তন করার জন্য বেশ কয়েকটি পরিবেশগত ভেরিয়েবল উপলব্ধ। localeকমান্ডটি কার্যকর করে আপনি আপনার বর্তমান লোকাল সেটিংস দেখতে পারেন । সমস্ত স্থানীয় সেটিংস ইংরাজীতে পরিবর্তন করতে, ব্যবহার করুন LANG=CCঅতিরিক্ত লোকাল প্যাকগুলি ইনস্টল না করে এই লোকেলটি সর্বদা উপলব্ধ। (অস্থায়ীভাবে অ-ইংরাজী অবস্থানগুলিতে পরিবর্তন করতে, @ এমকেলেটমেন্টের পোস্ট দেখুন))

উদাহরণ:

ডিফল্ট ভাষা সেটিংস সহ একটি কমান্ড কার্যকর করা এবং বর্তমান লোকাল সেটিংস মুদ্রণ করুন:

$ /nonexistent
bash: /nonexistent: Bestand of map bestaat niet
$ locale
LANG=nl_NL.UTF-8
LANGUAGE=
LC_CTYPE="nl_NL.UTF-8"
LC_NUMERIC="nl_NL.UTF-8"
LC_TIME="nl_NL.UTF-8"
LC_COLLATE="nl_NL.UTF-8"
LC_MONETARY="nl_NL.UTF-8"
LC_MESSAGES="nl_NL.UTF-8"
LC_PAPER="nl_NL.UTF-8"
LC_NAME="nl_NL.UTF-8"
LC_ADDRESS="nl_NL.UTF-8"
LC_TELEPHONE="nl_NL.UTF-8"
LC_MEASUREMENT="nl_NL.UTF-8"
LC_IDENTIFICATION="nl_NL.UTF-8"
LC_ALL=

একটি প্রোগ্রামের জন্য অস্থায়ীভাবে ভাষা ওভাররাইড করে দেখান যে এটি সত্যই অস্থায়ী:

$ LANG=C ls /nonexistent
ls: cannot access /nonexistent: No such file or directory
$ ls /nonexistent
ls: kan geen toegang krijgen tot /nonexistent: Bestand of map bestaat niet

বর্তমান শেলটিতে সম্পাদিত সমস্ত কমান্ডের জন্য স্থানীয় অবস্থান পরিবর্তন করুন এবং আবার প্রমাণাদি অন্তর্ভুক্ত করুন:

$ LANG=C
$ ls /nonexistent
ls: cannot access /nonexistent: No such file or directory
$ locale
LANG=C
LANGUAGE=
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

6
অন্যান্য ব্যবহারকারীদের এটির কাজ করতে সমস্যা হচ্ছে - সেটিংস স্থাপন করছে LANGবা LANG_ALLআমার পক্ষে কাজ করছে না, তা এখনও LANGUAGE। দেখুন কেন ল্যাং পরিবেশ পরিবর্তনশীলকে ওভাররাইড করা আমার জন্য ভাষা পরিবর্তন করছে না?
জার্মটভিডিজক

1
@gertvdijk: এর জন্য ধন্যবাদ; কারণ এই উত্তরটি এমনকি সেটিং ছাড়া কাজ করে LANGUAGEএকটি হল ব্যতিক্রম : GNU gettext এর ইনফো থেকে প্রাধান্য দেয় LANGUAGEমান ব্যতীত করেন (কার্যকর) LC_MESSAGESমান (সাধারণত মাধ্যমে পরোক্ষভাবে সেট LANGবা LC_ALL) হয় হয় Cঅথবা (তার সমার্থক) POSIX। এছাড়াও লক্ষ করুন যে LANGUAGEএই উত্তরে আনসেট হওয়ার মতো ঘটনা ঘটেছে, এটি ডিফল্ট হিসাবে সেট করা আছে এবং এটি সেট করা থাকলে একটি নির্দিষ্ট স্থানীয় ভাষার ("সি" / "পসিক্স" এর বিপরীতে) স্যুইচ করতে আপনাকে অবশ্যই এটিকে ওভাররাইড করতে হবে , যা আপনি কি খুঁজে পেয়েছেন।
mklement0

আপনার উত্তরটি "সি" লোকালে (মার্কিন ইংরেজী বার্তাগুলি সহ, যেমন প্রত্যাশিত হিসাবে) স্যুইচ করার সময় দুর্দান্ত কাজ করে তবে LANGUAGEস্পষ্টভাবে সেট না করা বা ওভাররাইড না করা হলে অন্যান্য লোকেলের পক্ষে কাজ করবে না । প্রশ্নের জেনেরিক শিরোনাম দেওয়া, সম্ভবত লোকেরা এই উত্তরটি একটি অ-ইংরাজী ভাষাতেও স্যুইচ করতে চাইবে বলে মনে হয়, সুতরাং দয়া করে আপনার উত্তরে এই তথ্যটি যুক্ত করার বিষয়টি বিবেচনা করুন।
mklement0

@ mklement0 প্রশ্নের প্রসঙ্গটি দেওয়া (ইংরাজির ত্রুটি বার্তাগুলি পোস্ট করা), আমি মনে করি যে বর্তমান পোস্টটি যথেষ্ট। আপনি চাইলে চারপাশের বিশদটি ব্যাখ্যা করতে আপনি আরও একটি উত্তর যুক্ত LANGUAGEকরতে পারেন :)
লেকেনস্টেইন

আপনার নিজের পরামর্শ অনুসারে আমি আমার নিজের উত্তর যুক্ত করেছি । আপনি যদি আমার মূল্যায়নের সাথে একমত হন যে ভবিষ্যতে পাঠকরা যে কোনও ভাষায় স্যুইচ করতে এখানে আসতে পারেন (যেমন বেশ কয়েকটি লোক ইতিমধ্যে সক্রিয়ভাবে ইঙ্গিত করেছে), দয়া করে আপনার প্রশ্নের উত্তরটির একটি লিঙ্ক যুক্ত করুন। এটি বাদ দিয়ে, আমি LANGUAGEআপনার নমুনা আউটপুটে মানটির পরিবর্তন করার পরামর্শ দিচ্ছি nl, যা আপনার লোকেল হলে আসল ডিফল্ট মান nl_NL.UTF-8
mklement0

9

Lekensteyn এর সহায়ক উত্তর কাজ করে মহান আপনি স্যুইচ করতে চান US English ব্যবহার চাহিদা, যেমন ওপি অনুরোধ করেছে, কিন্তু আপনি একটি স্যুইচ করতে চান বিভিন্ন চাহিদা ভাষা , আরো কাজ প্রয়োজন হয়।

শুরু করার আগে, আপনাকে অবশ্যই বার্তা সারণীগুলি ইনস্টল করতে হবে sudo apt-get install language-pack-<lang-tag>, যেখানে স্পেনীয়দের মতো <lang-tag>একটি সাধারণ আরটিএফ 5646 ভাষার সাবট্যাগ রয়েছেes

পটভূমি তথ্য

GNU gettext ভিত্তিক ইউটিলিটি নন-স্ট্যান্ডার্ড করার প্রাধান্য দিতে LANGUAGEএনভায়রনমেন্ট ভেরিয়েবল [1] POSIX-সংজ্ঞায়িত লোকেল এনভায়রনমেন্ট ভেরিয়েবল উপর LC_ALL, LC_MESSAGESএবং LANG(যাতে)।

প্রদত্ত যে LANGUAGEডিফল্টরূপে উবুন্টু সিস্টেমে সেট করা হয় [2] , যথা একটি থেকে সাবস্ট্রিং এর LANGমান হয় একটি সহজ ভাষায় ট্যাগ প্রতিফলিত (যেমন, esস্পেনীয় জন্য) অথবা একটি ভাষা-অঞ্চল ট্যাগ (যেমন, de_DEজার্মান জার্মানি বৈকল্পিক জন্য) LANGUAGEকোনও ভিন্ন ভাষার বার্তাগুলি কার্যকর হওয়ার জন্য আপনাকে অবশ্যই আনসেট বা ওভাররাইড করতে হবে । [3]

বিকল্প 1: সেট করুন LANGUAGE

উদাহরণ : esঅ্যাড-হক স্প্যানিশ ( ) বার্তাগুলিতে স্যুইচ করুন :

$ LANGUAGE=es ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio

দ্রষ্টব্য : একটি সরল ভাষার ট্যাগ যেমন esযথেষ্ট, তবে আপনি একটি অঞ্চল সনাক্তকারী (উদাহরণস্বরূপ, es_ARআর্জেন্টিনার জন্য), এমনকি একটি চরসেট প্রত্যয় যুক্ত করতে পারেন (যেমন, es_AR.UTF-8)।
তবে, স্থানীয়ীকৃত বার্তাগুলি কেবলমাত্র ভাষা স্তরে উপস্থিত থাকতে পারে এবং ফলব্যাকটি সেই বার্তাগুলি ব্যবহার করে যা ভাষার অংশের সাথে মেলে ( esএই ক্ষেত্রে)।

বিকল্প 2: আনসেট করুন LANGUAGEএবং সেট করুনLC_ALL

এই বিকল্প সমাধান undefines LANGUAGE প্রথম, এবং তারপর POSIX লোকেল এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার LC_ALLপরোক্ষভাবে সেট করতে LC_MESSAGES[4] :

$ LANGUAGE= LC_ALL=es_ES.UTF-8 ls NoSuchFile
ls: no se puede acceder a NoSuchFile: No existe el archivo o el directorio

এই সমাধানটিতে স্থানীয়করণের সমস্ত দিক নির্দিষ্ট লোকেলে (যেমন LC_TIMEতারিখ / সময় ফর্ম্যাটগুলির জন্য) সেট করার সুবিধা রয়েছে এবং ( স্পষ্টতই ) সেটিংস দ্বারা পছন্দসই ভাষার নন- জিএনইউ প্রোগ্রামগুলিকে LC_MESSAGESঅবহিত করে।

চার্সেট প্রত্যয় সহ সঠিক, পূর্ণ স্থানীয় নাম কীভাবে কার্যকর হওয়া LC_ALLদরকার তা নোট করুন ( ) বিপরীতে , যার জন্য একটি সহজ ভাষার ট্যাগ যথেষ্ট (যেমন ) থাকে। একই সেটিংস এবং প্রযোজ্য । একটি অবৈধ / অ-ইনস্টল করা লোকাল নাম উল্লেখ করা POSIX লোকালে এবং সুতরাং মার্কিন ইংরেজীতে ফ্যালব্যাকের কারণ হয়।es_ES.UTF-8LANGUAGEesLC_MESSSAGESLANG


পাদটিকা

[১] লেকেনস্টেইনের উত্তরগুলি সেট না করে বা ওভাররাইড না করেও যে কারণে কাজ করে LANGUAGEতা একটি ব্যতিক্রম : যদি (কার্যকর) LC_MESSAGESমানটি (সাধারণত পরোক্ষভাবে LANGবা এর মাধ্যমে নির্ধারিত LC_ALLহয়) হয় হয় Cবা (এর প্রতিশব্দ) POSIXহয় তবে মানটি সম্মানিত হয়, নির্বিশেষে এর মান নির্বিশেষে LANGUAGE, যদি কোন. বিপরীতভাবে, যদি (কার্যকর) LC_MESSAGESমানটি অন্য কোনও নির্দিষ্ট নির্দিষ্ট স্থানীয় হয় তবে LANGUAGEঅগ্রাধিকার নেয়।

[২] এটি উবুন্টুকে যথাযথভাবে প্রযোজ্য , তবে অন্যান্য স্বাদে অগত্যা নয় ; লেকেনস্টেইন বলেছেন যে কুবুন্টু সেট করেন নাLANGUAGE
তাত্ক্ষণিকভাবে, ডিফল্ট হিসাবে সেট করা LANGUAGEউচিত নয় , তার অনুপস্থিতিতে LC_MESSAGESমান দ্বারা আবদ্ধ LANGমান (যা বর্তমান লোকাল নির্ধারণ করে) সম্মানিত হয়।

[3] আপনি এই পদ্ধতিটি [মার্কিন] ইংলিশে স্যুইচ করার জন্য ব্যবহার করতে পারেন উভয়কে ( LANGUAGE=Cবা এর LANGUAGE=POSIXবিকল্প হিসাবে, LANG=C/ LANG=POSIX) বরাদ্দ দিয়ে , যদিও আমি অস্পষ্ট যে এটি সক্রিয়ভাবে স্বীকৃত বা কেবল একটি ফ্যালব্যাক প্রক্রিয়া, এই মানগুলি না দিয়ে একটি ভাষা ট্যাগ দিয়ে শুরু করবেন না ; সম্ভবত আরও ভাল পছন্দ হবে en_US

[]] একটি প্রান্তের কেস রয়েছে যেখানে এই পদ্ধতির কাজ করে না: একটি পাথের সাথে এক্সিকিউটেবলকে অনুরোধ করার চেষ্টা করা - আপেক্ষিক বা পরম প্রকৃতির - নির্দিষ্ট ভাষায় স্যুইচ করে না, যেখানে কেবল ফাইলের নাম ব্যবহার করে:
LANGUAGE= LC_ALL=es_ES.UTF-8 /path/to/no_such_utilityকোনও বার্তা আউটপুট করে না বর্তমান লোকালে) রয়েছে, যেখানে
LANGUAGE= LC_ALL=es_ES.UTF-8 no_such_utility(স্প্যানিশ ত্রুটির বার্তা আউটপুট করে)।
কারও কারও কারও এবং যদি এর জন্য ভাল কারণ আছে কিনা তা জানা থাকে তবে আমাদের জানান।


এই পোস্টটি কাঠামোগত করতে তার সহায়তার জন্য @ wjandrea এ টুপিটির টিপ ।
mklement0
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.