سؤال كيف أقوم بإصلاح مشكلة اللغة الخاصة بي؟


أتلقى هذه الرسالة في كل مرة أفعل شيئًا مثل بدء خدمة أو إيقافها.

perl: warning: Setting locale failed.   
perl: warning: Please check that your locale settings:   
        LANGUAGE = "en_US:en",   
        LC_ALL = (unset),   
        LC_MESSAGES = "en_US.UTF-8",   
        LANG = "en_US.UTF-8"   
    are supported and installed on your system.   
perl: warning: Falling back to the standard locale ("C").   
locale: Cannot set LC_CTYPE to default locale: No such file or directory   
locale: Cannot set LC_MESSAGES to default locale: No such file or directory   
locale: Cannot set LC_ALL to default locale: No such file or directory   
(Reading database ... 21173 files and directories currently installed.)  
Removing bind9 ...  
 * Stopping domain name service... bind9                                        [ OK ]
Processing triggers for man-db ...   
locale: Cannot set LC_CTYPE to default locale: No such file or directory   
locale: Cannot set LC_MESSAGES to default locale: No such file or directory   
locale: Cannot set LC_ALL to default locale: No such file or directory   

كيف أقوم بإصلاح هذا الخطأ؟


463
2017-07-11 14:08


الأصل


ذات صلة: كيفية ضبط الإعدادات المحلية؟ - Lucio
ممكن من الازدواجية لا تؤثر المتغيرات المحلية في shell البعيد (perl: warning: فشل إعداد الإعدادات المحلية). - Denilson Sá Maia
حل سهل ودائم لجميع المستخدمين: askubuntu.com/questions/881742/... - Galvani


الأجوبة:


الجولة الأولى locale لسرد ما هي اللغات المحددة حاليًا لحساب المستخدم الحالي:

$ locale
LANG=C
LANGUAGE=
LC_CTYPE=fi_FI.UTF-8
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE=fi_FI.UTF-8
LC_MONETARY="C"
LC_MESSAGES=fi_FI.UTF-8
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=

ثم قم بإنشاء الإعدادات المحلية المفقودة وإعادة تكوين الإعدادات المحلية لإخطار:

$ sudo locale-gen "en_US.UTF-8"
Generating locales...
  en_US.UTF-8... done
Generation complete.

$ sudo dpkg-reconfigure locales
Generating locales...
  en_US.UTF-8... up-to-date
Generation complete.

الآن لن ترى أي أخطاء بعد الآن!


471
2017-12-10 12:45



لا يعمل بالنسبة لي - Umair
وقد عمل هذا بالنسبة لي على عدد من الأنظمة. هل هناك طريقة لتجنب هذه المشكلة في الأنظمة المثبتة حديثًا؟ - Brylie Christopher Oxley
UmairAyub قد يكون لديك أكثر من لغة غير معروفة ، جرب هذا: for y in $ (locale | cut -d '=' -f 2 | sort | uniq)؛ do locale-gen $ y؛ فعله سيقوم بإنشاء لغة لكل تعريف لديك - Ivan Buttinoni
اللغة في locale-gen يجب أن يكون الأمر بين علامتي اقتباس لهذا العمل بشكل صحيح: $ sudo locale-gen "en_US.UTF-8" - Sheharyar
Umair هناك خطر كبير من الخطأ البشري في هذه المشكلة. تم تكوين النظام الخاص بك en_GB افتراضيًا ، ولكنك قمت بإعداده en_US. عليك أن تعلق يدويا en_GB و uncomment en_US في /etc/locale.gen. انظر جوابي askubuntu.com/a/790373/25388 في الأجهزة راسبري باي 3B ونظام Raspbian جيسي. - Léo Léopold Hertz 준영


لا شيء اقترح أعلاه عملت في حالتي (أوبونتو خادم 12.04LTS). ما ساعد في النهاية كان يضع الملف /etc/environment:

LC_ALL=en_US.UTF-8
LANG=en_US.UTF-8

لسبب ما كان في عداد المفقودين. ظهرت مخرجات الإعدادات المحلية والأوامر الأخرى كما تم تعريف المتغيرات بشكل صحيح. بعبارة أخرى ، لا تُعتبر الأمور البديهية معلنة عن كل الأشياء الأساسية التي يتم الإعلان عنها حيث يجب الإعلان عنها.


340
2017-12-16 04:11



نعم ، لا شيء آخر يعمل باستثناء هذا واحد ، ربما بسبب نسخة محدثة. لكنني أفضل أن أضع هذا في /etc/default/locale. - Naveed
محدث /etc/default/locale ولا مزيد من التحذيرات. شكر - ohho
نعم ، لم يعمل الآخرون من أجلي. هذا واحد فعل. هنا هو واحد بطانة كنت تستخدم لتحديث غير المراقب من هذا. sudo sh -c "echo 'LC_ALL=en_US.UTF-8\nLANG=en_US.UTF-8' >> /etc/environment" - dman
@ user163207 الحل الخاص بك غير صحيح لأنه يلحق (بدلاً من الكتابة) ، وليس الملف الموصى به ، و echo يجب أن يتم تشغيلها مع تمكين تخطيات الشرطة المائلة للخلف. هذا هو نفس ملكيتك لكن مع ما سبق ذكره: sh -c "echo -e 'LANG=en_US.UTF-8\nLC_ALL=en_US.UTF-8' > /etc/default/locale" - glarrain
لا تنسى LOGPUT و RE-LOGIN! - S.M.Mousavi


يجب أن تختفي بعد إصدار:

sudo locale-gen en_US en_US.UTF-8
sudo dpkg-reconfigure locales 

dpkg-reconfigure يعيد تكوين الحزم بعد أن تم بالفعل        المثبتة. قم بتمريرها أسماء حزمة أو حزم لإعادة تكوين.        سوف يسأل أسئلة التكوين ، يشبه إلى حد كبير عندما كانت الحزمة        أول تثبيت.


140
2017-07-11 14:19



أنا مسرور لمشاكلي منذ عام ساعدك في الحصول على هذا ثابت ؛) - Rinzwind
لا ينبغي أن يتم إنشاء هذه اللغة بشكل افتراضي؟ انا اعني en، en_AU، en_CA، en_GB موجودة بشكل افتراضي ولكن لا en_US؟ - Daniel Serodio
@ Rinzwind شكرا جزيلا لجهودكم! أنا أعتذر؛ كان يجب أن أكون قد كتبت سؤالي بشكل أفضل ما قصدت طرحه هو: لماذا من الضروري إعادة تكوين حزمة لغات بعد إنشاء لغات جديدة؟ يبدو لي مثل لغات العمل حتى من دون dpkg-reconfigure. - Victor
باستخدام Ubuntu 14.04 ، في حاوية Docker ، حتى يتم تعيين أي شيء. في جانغو makemessage يحتاج هذا. هذا عمل تماما! شكر. - Justin
أعتقد أن sudo مفقود. ربما يجب أن يكون: sudo dpkg-reconfigure locales. هذا العمل بالنسبة لي بعد تثبيت جديد من Ubunty 14.10 سطح المكتب 64 بت. - bgoodr


فقط قم بإضافة ما يلي إلى الخاص بك .bashrc ملف (على افتراض أنك تستخدم bash)

export LC_ALL="en_US.UTF-8"

108
2017-11-08 09:42



عملت هذا الإصلاح الحلو بالنسبة لي على صورة بلدي الأمازون EC2 (كان تشغيل الافتراضي RHEL AMI) شكرا جزيلا! :) - gideon
عملت هذه واحدة بالنسبة لي مع بلدي صورة ديجيتال في أوبونتو 12.04. - Inan Berbatov
هذا ثابت مشكلتي. يجب أن أطرح سؤالاً: كيف لم يتم تعيين LC_ALL من قبل الأمر locale-gen كما ذكرت الإجابات الأخرى أعلاه؟ - alexserver
غريب ، لم يعمل كل الحل أعلاه بالنسبة لي ولكن هذا واحد فعل! بعد التصدير LC_ALL يمكن أن أستخدم أخيرا sudo dpkg-reconfigure locales. - sobi3ch
أخيرا بعد تجربة الكثير من الحيل ، هذا هو العمل بالنسبة لي على kubuntu 14.04.3 lts. شكر! - Jonas


هذه مشكلة شائعة إذا كنت تقوم بالاتصال عن بعد ، وبالتالي فإن الحل هو عدم إعادة توجيه الإعدادات المحلية الخاصة بك. تصحيح /etc/ssh/ssh_config والتعليق عليها SendEnv LANG LC_* خط.


88
2017-10-01 00:45



كنت أحاول أجوبة أخرى ، ولكن نسيت أنني كنت أتصل عن بعد حتى رأيت إجابتك. مواقع مختلفة على خادم ssh والعميل كان يسبب المشكلة. - Hieu
على OSX (الاتصال بـ أوبونتو) في /etc/ssh_config - Michiel de Mare
واحد الخطوط الملاحية للقيام بذلك: sed -e '/SendEnv/ s/^#*/#/' -i /etc/ssh/ssh_config (مفيد لتزويد الخادم) - Albin
لم أتمكن من تعيين LC_ALL على جهاز الإعدادات المحلية ولكن تم إصلاح مشكلتي مع الخادم البعيد ، وذلك بفضل. - Alexander Shlenchack
ربما تجدر الإشارة إلى أنه يجب عليك تحرير الملف على الجهاز المحلي وليس جهاز التحكم عن بعد. - Clashsoft


هناك أمر لذلك:

sudo update-locale LC_ALL=en_US.UTF-8 LANG=en_US.UTF-8

انها التحديثات /etc/default/locale مع القيم المقدمة.


63
2017-08-01 11:51



هذا شرعي! لا تنسَ تسجيل الخروج / إعادة تحميل shell ، وإلا فلن ترى التغييرات. لا تنسَ التحقق من الإجابة المعتمدة لتوليد اللغات المحلية وإعادة تشكيلها. - Erik Zivkovic
جري locale لا يزال لا تظهر أي قيم utf. - Cerin
@ سيرين: Myybe ، دعوة إلى locale-gen مفقود. من قبل ، على المرء أن يفعل apt-get install locales. - koppor
لن يؤدي هذا إلى تغيير LANG لصدور الجذر على Ubuntu 16.04 ، حيث يتم إلغاؤه في /root/.profile. - Willem


ما نجح في 12.10 هو:

apt-get install language-pack-en-base  

كان هذا بعد dpkg-reconfigure locales لم تسفر عن نتائج.


30
2018-04-28 02:01



هذا هو أفضل إجابة. إنه ليس أن مواقعي المحلية تم إعدادها بشكل صحيح ، ولكنها لم تكن موجودة بالفعل. أعتقد أن هذا مشابه لمشكلة البروتوكول الاختياري أيضًا ("لا يوجد ملف أو دليل" واضحًا إذا كانت لغتك هو ضبط الحق!). - Breakthrough
كنت أحصل على إصدار العمليات في أي وقت مضى كنت أستعمل apt-get على Ubuntu 12.04 هذا حلها تماما دون الحاجة إلى تحرير أي ملفات. - Deepend
"language-pack-en-base هي بالفعل أحدث إصدار." - karlingen
تسجيل الدخول وتسجيل الدخول قد يساعد - S.M.Mousavi
عملت لي في أوبونتو chroot تحت ديبيان. شكر :) - Wyatt8740