আমি আর্চ লিনাক্স ব্যবহার করছি এবং আমি আমার স্থানীয় অবস্থান নির্ধারণের বিষয়ে উইকির দিকনির্দেশগুলি অনুসরণ করেছি ।
প্রায় প্রতিটি প্রোগ্রাম যা চালায় লোকাল - এমনকি তা নিয়ে অভিযোগ করে locale
। দেখে মনে হচ্ছে:
% locale
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=
LC_CTYPE=en_US.UTF-8
LC_NUMERIC=en-US
LC_TIME=en-US
LC_COLLATE="POSIX"
LC_MONETARY=en-US
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT=en-US
LC_IDENTIFICATION="POSIX"
LC_ALL=
বা:
% perl
perl: warning: Setting locale failed.
perl: warning: Please check that your locale settings:
LANGUAGE = (unset),
LC_ALL = (unset),
LC_TIME = "en-US",
LC_NUMERIC = "en-US",
LC_MONETARY = "en-US",
LC_MEASUREMENT = "en-US",
LC_CTYPE = "en_US.UTF-8",
LANG = (unset)
are supported and installed on your system.
perl: warning: Falling back to the standard locale ("C")
কিছুটা বিভ্রান্তিকর কিছু হল /etc/locale.gen
এর কয়েকটি উদাহরণ রয়েছে; সমস্ত ইউটিএফ -8 লাইনগুলিতে "কিছু.আউটএফ -8" রয়েছে এবং চলমান চলাকালীন locale-gen
শো en_US.UTF-8... done
চলছে তবে locale -a
, যা আপনাকে উপলব্ধ লোকাল শো প্রদর্শন করবে বলে মনে করা হচ্ছে en_US.utf8
। আমি উভয় বিন্যাসের মধ্যে /etc/locale-gen
এবং LOCALE=
ভিতরে বিভিন্ন সংমিশ্রণ চেষ্টা করেছি /etc/rc.conf
, কিন্তু কিছুই সমস্যার সমাধান করেনি।
অতিরিক্ত তথ্য:
% locale -a
C
POSIX
en_US
en_US.iso88591
en_US.utf8
ব্রুস এডিগার সেট LANG=C
ও LC_ALL=en_US.UTF-8
কাজ করার পরামর্শ (বাস্তবে সেটিংস সেট LC_ALL
করে ফেলা হয়েছে, সেটিংয়ের LANG
কোনও গুরুত্ব নেই) তবে আমি কী জানতে চাই তা জানতে চাই। SUS এর মতে , LC_ALL সেট করা থাকলে এবং শূন্য না হলে অন্যান্য সমস্ত LC_ * ভেরিয়েবলগুলি ওভাররাইড করবে। আমার সিস্টেমে এটি সেট করা আছে তবে এটি শূন্য, সুতরাং এটি উপেক্ষা করা উচিত এবং পরিবর্তে অন্যান্য মানগুলি ব্যবহার করা উচিত। এটি যা ঘটছে তা নয়, মনে হচ্ছে অ্যাপ্লিকেশনগুলি কল setlocale
করছে LC_ALL
, NULL
ফিরে এসেছে এবং একটি ত্রুটি তৈরি করছে, এমনকি অন্য কলগুলি যখন setlocale
ভাল স্ট্রিং ফিরে আসে তখনও ।
এখানে একটি উপরে উঠছে ltrace
এর locale
(ফাংশন রিটার্ন মান দেখতে স্ক্রোল করুন ডান)
% ltrace locale
(0, 0, 0, -1, 0x7f5c1ae44510) = 0x7f5c1ae47140
__libc_start_main(0x401d70, 1, 0x7fff7c8cfbf8, 0x404610, 0x4046a0 <unfinished ...>
setlocale(0, "") = "en_US.UTF-8"
setlocale(5, "") = "en_US.UTF-8"
textdomain("libc") = "libc"
argp_parse(0x607280, 1, 0x7fff7c8cfbf8, 0, 0x7fff7c8cfad4) = 0
setlocale(6, "") = NULL
dcgettext(0, 0x405aa8, 5, 0, 0) = 0x405aa8
error(0, 2, 0x405aa8, 1, 0locale: Cannot set LC_ALL to default locale: No such file or directory)
.utf8
মধ্যে LOCALE
এবং LC_*
, কিন্তু দৃশ্যত .UTF-8
খুব এখানে কাজ করে ... স্বীকারোক্তি-মার্কিন হিসাবে: এটা (ছাড়া প্রদর্শিত হচ্ছে না .utf8
মধ্যে) locale -a
?
export LANG=C
এবং export LC_ALL=en_US.UTF-8
এবং দেখুন সেখানে কি ঘটছে। আমার আর্চ লিনাক্স ল্যাপটপে রয়েছেLOCALE="en_US.UTF-8"
/etc/rc.conf রয়েছে এবং আমি বুঝতে পারি না যে আমার ল্যাপটপটি LANG = C সেট করে।
/etc/locale.conf
? দেখে মনে হচ্ছে আপনি দুর্ঘটনাক্রমে LANG=en-US
(হাইফেন সহ) লিখেছেন ( LANG=en_US
আন্ডারস্কোর সহ ) instead
/etc/locale.gen
খুব দরকারী হবে।
locale -a
?