স্থানীয় পরিবেশের পরিবর্তনশীল কীভাবে পরিবর্তন করবেন?


18

আমি en_US.utf8 , et_EE.iso88591 এবং ru_RU.utf8 স্থানীয়করণ ফাইল তৈরি করেছি। এখন যদি আমি লোকাল ভেরিয়েবলগুলির কোনও একটি r_RU.utf8 বা en_US.utf8 তে পরিবর্তন করার চেষ্টা করি তবে এর কোনও প্রভাব নেই:

# locale -a
C
en_US.utf8
et_EE
et_EE.iso88591
POSIX
ru_RU.utf8
# LC_TIME=ru_RU.utf8
# locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
# LC_TIME="ru_RU.utf8"
# locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
# 

যাইহোক, আমি যদি LANG = পরিবর্তনশীল পরিবর্তন করি তবে অন্য সমস্ত ভেরিয়েবলগুলি তবে LANGUAGE = এবং LC_ALL = বাদে LANG = ভেরিয়েবলের মান নিবেন । প্রতিটি লোকেল ভেরিয়েবল পৃথকভাবে সংশোধন করার কোনও উপায় আছে কি? তদুপরি, আমি কি ঠিক করেছি যে লোকেল ভেরিয়েবলগুলি নিয়মিত শেল ভেরিয়েবল নয়, তবে লোকেল ইউটিলিটির প্যারামিটারের মতো ?

উত্তর:


15

আপনি যে কোনও স্থানীয় বিভাগ স্বাধীনভাবে সেট করতে পারেন। LANGস্পষ্টভাবে সেট করা নেই এমন বিভাগগুলিতে প্রয়োগ হয়।

LANGএবং LC_xxxসাধারণ পরিবেশ পরিবর্তনশীল। এগুলি localeইউটিলিটির জন্য সেটিংস নয় : localeপ্রোগ্রামটি কোনও লোকাল প্রক্রিয়াজাতকরণের সাথে জড়িত নয়, বর্তমান এবং উপলভ্য লোকাল সেটিংসের প্রতিবেদন করার জন্য এটি কেবল একটি ছোট্ট ইউটিলিটি।

আপনি যখন লিখবেন LC_TIME=ru_RU.utf8, এটি কোনও পরিবেশের পরিবর্তনশীল সেট করে না, কেবল শেল ভেরিয়েবল। শেল ভেরিয়েবলগুলি শেলের অভ্যন্তরীণ হয়, তারা অন্যান্য প্রোগ্রাম দ্বারা দেখা যায় না। অন্যদিকে পরিবেশ পরিবর্তনশীলগুলি শেলটি শুরু হওয়া প্রোগ্রামগুলির মাধ্যমে উত্তরাধিকার সূত্রে প্রাপ্ত হয়। আপনার পরিবেশেও পরিবর্তনশীল রফতানি করতে হবে:

$ LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
LC_TIME="et_EE.iso88591"
$ export LC_TIME
$ locale | grep LC_TIME
LC_TIME="ru_RU.utf8"

বা সরাসরি

$ export LC_TIME=ru_RU.utf8
$ locale | grep LC_TIME
LC_TIME="ru_RU.utf8"

"ল্যাং এবং এলসি_এক্সএক্সএক্সএক্সএক্স হ'ল এনভায়রনমেন্ট ভেরিয়েবল" আপনি কীভাবে জানবেন যে LANGএবং LC_xxxপরিবেশের পরিবর্তনশীল? আমার পরীক্ষাটি দেখায় যে কেবল LANGএবং LANGUAGEএবং LC_MESSAGESএবং LC_ALLপরিবেশের ভেরিয়েবলগুলি রয়েছে, যখন অন্যান্য ভেরিয়েবলগুলি পরিবেশের ভেরিয়েবলগুলি পছন্দ করে না LC_CTYPEএবং LC_MONETARY(এছাড়াও তারা শেল ভেরিয়েবল নয়)?
rony_t

@rony_t আপনি অ্যাপ্লিকেশন এবং গ্রন্থাগারগুলির উত্স কোডটি দেখতে, তাদের ডকুমেন্টেশনগুলি দেখতে বা তাদের সাথে পরীক্ষা করতে পারেন। উদাহরণস্বরূপ, compate env LC_TIME=en_GB dateসঙ্গে env LC_TIME=fr_FR dateএবং env PATH="$PATH" date(অবশ্যই, লোকেল যে আপনার সিস্টেমে কোন অস্তিত্ব বাছাই)। স্পষ্টতই, প্রতিটি ভেরিয়েবল কোনও প্রদত্ত প্রক্রিয়াটির পরিবেশে সেট করা যায় বা নাও পারে। আপনি কি পরীক্ষা করেছেন? আপনি কি নিশ্চিত যে আপনি যে অ্যাপ্লিকেশনটি ব্যবহার করেছেন সেটি LC_CTYPE(মোটামুটি সাধারণ) এবং LC_MONETARY(বেশ বিরল) এর ভিত্তিতে আলাদা আচরণ করে ?
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

টার্মিনালে, আমি ব্যাশের printenvপরিবেশগত ভেরিয়েবলগুলি তালিকাভুক্ত করার জন্য কমান্ডটি কার্যকর করেছি এবং শুধুমাত্র LANGএবং LANGUAGEএবং LC_MESSAGESএবং LC_ALLপরিবেশের ভেরিয়েবল হিসাবে তালিকাভুক্ত করেছি। আমিও কমান্ড মৃত্যুদন্ড কার্যকর set -o posixকমান্ড দ্বারা অনুসরণ setএনভায়রনমেন্ট ভেরিয়েবল এবং ব্যাশ শেল ভেরিয়েবল পেতে, এবং শুধুমাত্র LANGএবং LANGUAGEএবং LC_MESSAGESএবং LC_ALLতালিকাভুক্ত করা হয়। সুতরাং এর অর্থ এই যে LANGএবং LANGUAGEএবং LC_MESSAGESএবং LC_ALLবিভিন্ন পরিবেশের ও স্থান ভেরিয়েবল বাকি না হয়, এবং এছাড়াও তারা শেল ভেরিয়েবল নয়।
rony_t

@rony_t নং এর মানে আপনি বিভিন্ন পরিবেশের সেট করেছেন LANG, LANGUAGE, LC_MESSAGESএবং LC_ALL। (হয় আপনি এটি স্পষ্টভাবে করেছেন বা আপনার বিতরণ বা আপনার সিস্টেম প্রশাসক এটি আপনার জন্য করেছেন)) আপনি কোনও (সিন্ট্যাক্টিক্যালি বৈধ) নামের দ্বারা একটি পরিবেশের পরিবর্তনশীল সেট করতে পারেন! তবে কিছু নাম কিছু প্রয়োগের জন্য অর্থপূর্ণ, এবং কিছু নাম হয় না। LC_MESSAGES, LC_CTYPE, LC_TIMEএবং তাই অ্যাপ্লিকেশন যে ত্রুটি বার্তা ভাষা, অক্ষর এনকোডিং, সময় ফর্ম্যাট যত্নশীল দ্বারা তাই ব্যবহার করা হয়, এবং।
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

@rony_t আপনার কনফিগারেশনটি খুব অদ্ভুত। LC_ALLসেটিংস অন্য সমস্ত সেটিংসকে ওভাররাইড করে, তাই অন্যান্য স্থানীয় ভেরিয়েবলের মান বিবেচনা করে না। এটি কেবলমাত্র কোনও প্রোগ্রামকে প্রদত্ত লোকাল ব্যবহার করতে বাধ্য করার জন্য অস্থায়ীভাবে ব্যবহৃত হয়, এটি আপনার সাধারণ পরিবেশে রাখার কোনও মানে হয় না।
গিলস 'অসন্তুষ্ট হওয়া বন্ধ করুন'

6

ফেডোরা / সেন্টোস / আরএইচইএল ভিত্তিক ডিগ্রোসের অধীনে আমি বিশ্বাস করি যে আপনি যখন locale -aএই সিস্টেম ফাইলে কমান্ডটি চালাবেন তখন আপনি লোকেলের প্রদর্শিত কোনও একটিতে লোকালটি পরিবর্তন করতে পারবেন :

/etc/sysconfig/i18n

উদাহরণস্বরূপ আমার ফেডোরা 14 সিস্টেমে:

$ more /etc/sysconfig/i18n 
LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"

জিনোমের অধীনে আপনি সহায়তা অ্যাপটি চালাতে পারেন:

system-config-language

যা এই জিইউআই নিয়ে আসে:

             এস এস ল্যাং  GUI

আমি মনে করি এটি ডেবিয়ান / উবুন্টু ডিগ্রোসের জন্য কিছুটা আলাদা। আমি বিশ্বাস করি এটি এই ফাইল:

/etc/default/locale

আমি বিশ্বাস করি যে তারা পরিবেশের পরিবর্তনশীল তবে পুরোপুরি নিশ্চিত নয় যে কীভাবে অ্যাপ্লিকেশনগুলি সেগুলি ব্যবহার করে how

তথ্যসূত্র


4

কমপক্ষে রেডহ্যাট On-তে, নোট করুন যে এলসি_এলএল সেট করা থাকে, তবে অন্যান্য এলসি_ * এনভায়রনমেন্ট ভেরিয়েবলের কোনও প্রভাব পড়বে না, কারণ এলসি_এলএল অন্যান্য সমস্ত এলসি_ * এনভায়রনমেন্ট ভেরিয়েবলের চেয়ে অগ্রাধিকার নেয়।

[root@nbu76 bin]# LC_TIME=en_US.UTF-8
[root@nbu76 bin]# export LC_TIME
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE="en_IE"
LC_NUMERIC="en_IE"
LC_TIME="en_IE"
...
LC_ALL=en_IE
[root@nbu76 bin]# unset LC_ALL
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_US.UTF-8
...
LC_ALL=
[root@nbu76 bin]# export LC_TIME=en_IE
[root@nbu76 bin]# locale
LANG=en_US.UTF-8
LC_CTYPE=en_US.UTF-8
LC_NUMERIC="en_US.UTF-8"
LC_TIME=en_IE
....
LC_ALL=

1

ডেবিয়ান সিস্টেমে, কেউ dpkg-reconfigure localesমূল ভাষা সেট করতে এবং অন্যকে উপলব্ধ করার জন্য চালাতে পারে; তারপরে কেউ ফ্যালব্যাক ভাষা রাখতে পরিবেশের পরিবর্তনশীল update-localeসেট করতে চালাতে পারে ।LANGUAGE/etc/default/locale


2
dpkg-reconfigure locales, নাlocale
লরিগুলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.