การตั้งค่าภาษาไม่ถูกต้อง ฉันจะรีเซ็ตได้อย่างไร


43

ฉันมีปัญหาสถานที่
ลำดับการเรียงในnautilusและโปรแกรมอื่นมีการเปลี่ยนแปลง
ฉันได้รับข้อผิดพลาดของสถานที่ปรากฏในเทอร์มินัลเมื่อฉันเรียกใช้แอพ GUI ..

    Gtk-WARNING **: Locale not supported by C library.
        Using the fallback 'C' locale.

localeคำสั่งผลิตข้อความผิดพลาด

    locale: Cannot set LC_CTYPE to default locale: No such file or directory
    locale: Cannot set LC_ALL to default locale: No such file or directory
    LANG=en_AU
    LANGUAGE=en_AU:en
    LC_CTYPE="en_AU"
    LC_NUMERIC="en_AU"
    LC_TIME="en_AU"
    LC_COLLATE=en_AU.UTF-8
    LC_MONETARY="en_AU"
    LC_MESSAGES=en_AU.UTF-8
    LC_PAPER="en_AU"
    LC_NAME="en_AU"
    LC_ADDRESS="en_AU"
    LC_TELEPHONE="en_AU"
    LC_MEASUREMENT="en_AU"
    LC_IDENTIFICATION="en_AU"
    LC_ALL=

ตามที่แนะนำในคำถาม Askubuntuฉันได้เรียกใช้คำสั่งต่อไปนี้ แต่ไม่มีการเปลี่ยนแปลง

    sudo apt-get install language-pack-en-base
    sudo dpkg-reconfigure locales

ฉันยังลองข้อเสนอแนะในคำถาม askubuntu ... ยังไม่มีการเปลี่ยนแปลง

    apt-get install --reinstall locales

ฉันคิดว่ามันเริ่มต้นเมื่อฉันติดตั้งชั่วคราวและถอนการติดตั้งตัวแก้ไขวิธีการป้อนข้อมูลภาษาอูรดูผ่านIBus.. มันเกิดขึ้นอย่างแน่นอนในวันเดียวกัน

อาจเกี่ยวข้องกับ IBus แต่ฉันไม่เคยมีปัญหาใด ๆ มาก่อน

  • ระบบปฏิบัติการคือ 10.04

คำตอบ:


27

ฉันจัดการเพื่อให้สิ่งต่าง ๆ ทำงาน "ปกติ" อีกครั้ง

หลังจากลองแพคเกจติดตั้งใหม่จำนวนมากรวมถึงการลบ IBus อย่างสมบูรณ์ (ทั้งหมดไม่มีผลกระทบ) ฉันเริ่มคิดว่าอาจเกิดจากการตั้งค่าคอนฟิกที่การติดตั้งใหม่ไม่ได้แก้ไข

ฉันสังเกตเห็นว่าผลลัพธ์จากการlocaleมอบหมาย UTF-8 ค่อนข้างแย่ดังนั้นฉันจึงตรวจสอบใน VM ที่เพิ่งติดตั้งเมื่อเร็ว ๆ นี้ ... รายการทั้งหมดของ LC_ * (ยกเว้น LC_ALL ซึ่งแทนที่ทับทั้งหมด ) ถูกตั้งค่าด้วย.UTF-8คำต่อท้าย ดังนั้นฉันตั้งค่า LC_ * ด้วยตนเองตามที่แสดงด้านล่าง

ฉันอาจจะเพิ่งใช้LC_ALL="en_AU.UTF-8"แต่ในการอ่านเกี่ยวกับเรื่องนี้ฉันได้ค้นพบวิธีการกำหนดรูปแบบวันที่และเวลาของระบบและLC_ALLจะแทนที่การตั้งค่าแบบกำหนดเองของฉัน

ฉันไม่รู้ว่าฉันใช้วิธีที่เหมาะสมที่สุดหรือเปล่า แต่ก็ใช้งานได้!

ไฟล์ที่แก้ไขคือ: /etc/default/locale

  • สิ่งนี้แสดงเนื้อหาก่อนหน้า mod:

    LANG="en_AU.UTF-8"
    LANGUAGE="en_AU:en"
    LC_MESSAGES="en_AU.UTF-8"
    
  • สิ่งนี้แสดงเนื้อหาหลังจากตัวดัดแปลง:

    LANG="en_AU.UTF-8"
    LANGUAGE="en_AU:en"
    LC_CTYPE="en_AU.UTF-8"
    LC_NUMERIC="en_AU.UTF-8"
    LC_TIME="en_AU.UTF-8"
    LC_COLLATE=en_AU.UTF-8
    LC_MONETARY="en_AU.UTF-8"
    LC_MESSAGES=en_AU.UTF-8
    LC_PAPER="en_AU.UTF-8"
    LC_NAME="en_AU.UTF-8"
    LC_ADDRESS="en_AU.UTF-8"
    LC_TELEPHONE="en_AU.UTF-8"
    LC_MEASUREMENT="en_AU.UTF-8"
    LC_IDENTIFICATION="en_AU.UTF-8"
    

ไฟล์เดียวกันใน VM มีเพียงหนึ่งบรรทัดนี้:

    LANG="en_AU.UTF-8" 


ขอบคุณสำหรับการโพสต์ของคุณ สำหรับเร็กคอร์ดฉันต้องรีสตาร์ทระบบเพื่อให้การแก้ไขทำงานได้ (บางทีอาจใช้ emacs eval-buffer?)
David LeBauer

19

การกำหนดโลแคลใหม่และกำหนดค่าใหม่อาจเพียงพอที่จะแก้ไขปัญหา:

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

เมื่อคุณเรียกsudo dpkg-reconfigure localesคุณสามารถเลือกสถานที่ที่คุณต้องการโดยคลิกที่spacebarและการเคลื่อนย้ายด้วยและก่อนที่จะกดปุ่มEnter


อาจพูดได้ว่าคุณเลือกภาษาที่คุณต้องการด้วยสเปซบาร์
Daniel Kmak

@ แดเนียลฉันไม่เข้าใจ: สเปซบาร์?
Guillaume Vincent

1
เมื่อเรียกใช้dpkg-reconfigureคุณจะได้รับรายการพร้อมช่องทำเครื่องหมายและเพื่อเลือกภาษาที่คุณต้องใช้ Spacebar ไม่มีข้อมูลดังกล่าวในโปรแกรมคอนโซลดังนั้นฉันคิดว่ามันจะช่วยในการเขียนภายใต้คำตอบ ฉันไม่รู้วิธีเลือกภาษาเหล่านี้
Daniel Kmak

1
@Daniel ทำ :)
Guillaume Vincent

15

ฉันก็เจอปัญหานี้อย่างที่คุณเห็นคุณLC_ALLว่างเปล่า ฉันทำดังนี้และช่วย:

$ sudo vim /etc/environment

และกำหนดLC_ALLสิ่งที่ต้องการen_US.UTF-8ของฉันคือ:

LANG="en_US.UTF-8"
LC_MESSAGES="C"
LC_ALL="en_US.UTF-8"

จากนั้นรีบูตและรันlocaleและควรเป็นดังนี้:

LANG=zh_CN.utf8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=en_US.UTF-8

วิธีนี้ใช้ได้ดีกับ Ubuntu 12.04 LTS อย่างแม่นยำ
speciousfool

การตั้งค่าLC_ALLไม่ได้รับการสนับสนุน "การใช้ LC_ALL นั้นไม่ควรทำอย่างยิ่งเพราะมันจะแทนที่ทุกอย่างโปรดใช้เมื่อทดสอบเท่านั้นและไม่เคยตั้งไว้ในไฟล์เริ่มต้น" wiki.debian.org/Locale
gertvdijk

4

หากคุณเชื่อมต่อกับเครื่องจากระยะไกลผ่าน ssh (เช่นจากอุปกรณ์ macosx) คุณต้องตั้งค่าตัวแปรเหล่านี้บนเครื่องที่คุณกำลังเชื่อมต่อจาก

เพิ่มสิ่งต่อไปนี้ใน ~ / .bash_profile

#fix for locale issues when connecting to ubuntu servers
export LANG="en_US.utf8"
export LANGUAGE="en_US.utf8"
export LC_ALL="en_US.utf8"

1
นี่เป็นความผิดปกติที่ทราบเมื่อเชื่อมต่อจาก OS X หรือไม่
MindTooth

ไม่ทราบว่าเป็นเพราะการออกแบบหรือความผิดพลาด / ข้อผิดพลาด
Somatik

2

ฉันต้องการเพิ่มที่ฉันต้องแก้ไขโปรไฟล์บ้านของฉันด้วย:

gedit ~/.profile

ดังนั้นในกรณีของคุณมันจะมีลักษณะ:

...
LANG="en_AU.UTF-8"
LANGUAGE="en_AU:en"

ออกจากระบบ + เข้าสู่ระบบและทั้งหมดเป็นไปตามที่คาดไว้


ผมจำเป็นต้องมีจุดเริ่มต้นของแต่ละบรรทัดและฉันใส่ไว้ในexport ~/.bashrc
Sparhawk

2

ฉันมีปัญหาเดียวกันหลายเดือนเครื่องมือซอฟต์แวร์จำนวนมากเตือนเกี่ยวกับการตั้งค่าภาษาที่ใช้งานไม่ได้และบางคนถึงกับปฏิเสธที่จะทำงาน ฉันต้องการใช้ภาษาอังกฤษ แต่การตั้งค่าทางการเงินและหมายเลขของสวีเดน

ในที่สุดสิ่งที่ทำงานได้สำหรับฉันคือการแก้ไข/etc/default/localeที่ฉันลบทุกอย่างในไฟล์นั้น จากนั้นฉันก็เริ่มตั้งค่าภาษา Unity ตั้ง(Settings -> Language Support)ค่าทุกอย่าง (Ubuntu ต้องการติดตั้งส่วนประกอบที่ขาดหายไป) และกด"Apply System-wide"เมื่อฉันทำเสร็จแล้ว

/etc/default/localeตอนนี้ฉันดูเหมือนว่านี้

LC_NUMERIC = "sv_SE.UTF-8"
LC_TIME = "sv_SE.UTF-8"
LC_MONETARY = "sv_SE.UTF-8"
LC_PAPER = "sv_SE.UTF-8"
LC_IDENTIFICATION = "sv_SE.UTF-8"
LC_NAME = "sv_SE.UTF-8"
LC_ADDRESS = "sv_SE.UTF-8"
LC_TELEPHONE = "sv_SE.UTF-8"
LC_MEASUREMENT = "sv_SE.UTF-8"
ภาษา = "th"
LANG = "en_US.UTF-8"

LANGUAGE="en"ความแตกต่างใหญ่ระหว่างนี้และเดิมของฉันไฟล์


ประหยัดชีวิตของฉัน ...
John Joe

2

เป็นเวลานานแล้วที่สิ่งนี้ถูกโพสต์ แต่เมื่อเร็ว ๆ นี้ฉันมีปัญหากับตัวแปร "locale" และไม่มีคำตอบที่ให้ผลลัพธ์ใด ๆ แก่ฉัน บางทีประสบการณ์ของฉันเองอาจช่วยคนอื่นได้

ตัวแปรLANGของฉันว่างเปล่าและสิ่งนี้ทำให้ฉันมีปัญหา

$locale

เอาท์พุท:

LANG=
LANGUAGE=en_US
LC_CTYPE=POSIX
LC_NUMERIC=POSIX
LC_TIME=POSIX
LC_COLLATE=POSIX
LC_MONETARY=POSIX
LC_MESSAGES=POSIX
LC_PAPER=POSIX
LC_NAME=POSIX
LC_ADDRESS=POSIX
LC_TELEPHONE=POSIX
LC_MEASUREMENT=POSIX
LC_IDENTIFICATION=POSIX
LC_ALL=POSIX

ฉันลองคำสั่งบางอย่างเช่น:

sudo locale-gen
sudo dpkg-reconfigure locales

โดยไม่ประสบความสำเร็จ ฉันพยายามแก้ไข/ etc / default / localeและพบว่ามันใช้ได้แล้ว:

$cat /etc/default/locale

เอาท์พุท:

LANG=en_US.UTF-8
LC_NUMERIC="es_CO.UTF-8"
LC_TIME="es_CO.UTF-8"
LC_MONETARY="es_CO.UTF-8"
LC_PAPER="es_CO.UTF-8"
LC_NAME="es_CO.UTF-8"
LC_ADDRESS="es_CO.UTF-8"
LC_TELEPHONE="es_CO.UTF-8"
LC_MEASUREMENT="es_CO.UTF-8"
LC_IDENTIFICATION="es_CO.UTF-8"

ไฟล์. pam_environmentของฉันก็ดูเหมือนจะถูกด้วย:

$cat .pam_environment

เอาท์พุท:

LANGUAGE=en_US:en
LANG=en_US.UTF-8
LC_NUMERIC=es_CO.UTF-8
LC_TIME=es_CO.UTF-8
LC_MONETARY=es_CO.UTF-8
LC_PAPER=es_CO.UTF-8
LC_NAME=es_CO.UTF-8
LC_ADDRESS=es_CO.UTF-8
LC_TELEPHONE=es_CO.UTF-8
LC_MEASUREMENT=es_CO.UTF-8
LC_IDENTIFICATION=es_CO.UTF-8
PAPERSIZE=letter

ฉันไม่ต้องการเพิ่มสิ่งพิเศษลงในโปรไฟล์หรือไฟล์ทุบตีส่วนใหญ่เพราะแม้ว่ามันจะสามารถแก้ไขปัญหาที่ฉันไม่ทราบสาเหตุและนั่นทำให้ฉันรำคาญ

ในที่สุดฉันก็สงสัยว่ามีบางสิ่งบางอย่างที่แทนที่ตัวแปร "locale" อยู่หรือไม่และฉันรันคำสั่งถัดไป:

$cat .bashrc | grep LANG

เอาท์พุท:

unset LANG

ดังนั้นฉันจึงพบสองบรรทัดในไฟล์. bashrcของฉันที่ซึ่งสาเหตุ (ฉันไม่ได้วางไฟล์ทั้งหมด):

unset LANG
export LC_ALL=POSIX

ฉันไม่รู้ว่าหรือเมื่อบรรทัดเหล่านั้นสิ้นสุดลงในไฟล์ทุบตีของฉัน แต่ฉันแน่ใจว่าฉันไม่ได้เขียนพวกเขาบางที. bashrc ของฉันอาจถูกแทนที่เมื่อฉันทำงานกับบางสิ่งในการพัฒนาเว็บฉันจริง ๆ ไม่ ไม่รู้ แต่เนื่องจากฉันรู้ว่านี่เป็นสิ่งที่ไม่ได้ตั้งใจและมีผู้คนมากมายที่นั่นโดยไม่รู้ว่าอะไรทำให้เกิดการกระทำที่ผิด "สถานที่" บางทีนี่อาจช่วยพวกเขาได้ อย่างไรก็ตามการแสดงความคิดเห็นบรรทัดเหล่านั้นและรีบูตแก้ไขปัญหาสำหรับฉัน ที่นี่ฉันตอบคำถามเดียวกันเน้น sublimeT3 ร้องเรียนเกี่ยวกับตัวแปรLANG


1

ดูเหมือนว่าสถานที่ทอดการปรับปรุงอย่างใด การแก้ไขที่ฉันพบคือออกจากระบบเปลี่ยนภาษาที่เลือกก่อนเข้าสู่ระบบและเข้าสู่ระบบอีกครั้ง

มันอาจช่วยในการติดตั้งโลแคลใหม่ใน synaptic แม้ว่าฉันจะไม่สามารถยืนยันได้ว่านี่คือสิ่งที่แก้ไขได้สำหรับฉันฉันคิดว่ามันออกจากระบบหรือบางอย่าง


กำลังลงชื่อเข้าใช้และเปลี่ยนภาษา ฉันไม่เห็นวิธีที่แท้จริงในการเปลี่ยนภาษาเมื่อเข้าสู่ระบบ .. ฉันเห็นข้อความที่กล่าวถึงการเปลี่ยนภาษา แต่ไม่มีตัวเลือก (ปุ่มหรืออะไรทำนองนั้น) .. อาจเป็นเพราะฉันเปิดใช้งานภาษาอังกฤษออสเตรเลียเท่านั้น .... และฉันทำงาน คำสั่งทั้งหมดข้างต้น .. ดังนั้นมันจึงเป็นสไตล์ลึกลับในขณะนี้ ...
Peter.O

@ red.bear: ลองติดตั้งlanguage-pack-enและlanguage-support-enจากนั้นทำซ้ำขั้นตอนดังกล่าวข้างต้น
RolandiXor

1

ฉันลองแก้ไขไฟล์ภาษาและเลือกภาษาที่แตกต่างกันเมื่อเข้าสู่ระบบ

การกรองสำหรับแพ็คเกจที่เสียหายด้วย Synaptic และนำแพคเกจที่ละเมิดออกทั้งหมด 9 รายการทำงานให้ฉัน (libreoffice และ python uno)

แต่ฉันไม่สามารถติดตั้ง LibreOffice ได้โดยไม่ทำให้ผู้จัดการแพคเกจเสียหาย อย่างไรก็ตามจะทำการติดตั้ง

ฉันอยู่ที่ 11.04 i386 ข้อจำกัดความรับผิดชอบ: มีปัญหาไฟฟ้าขัดข้องในระหว่างการติดตั้งล่าสุดของฉันเนื่องจาก Ubuntu กำลังดาวน์โหลดอัปเดต


1

ฉันมีปัญหาเดียวกัน แต่ไปที่ระบบ> การดูแลระบบ> การสนับสนุนด้านภาษาอาจช่วยแก้ปัญหาของคุณได้เนื่องจากอาจขอให้คุณติดตั้งแพคเกจบางอย่างแล้วมันจะใช้ได้ !! มันใช้งานได้สำหรับฉันดังนั้นฉันเดาว่ามันจะทำแบบเดียวกันกับคุณ !!


0

วิ่ง

export LC_ALL="zh_CN.utf8"
ibus-setup

และเลือกหนึ่งในตัวเลือกสำหรับวิธีการป้อนข้อมูลตามที่คุณต้องการ


0

ฉันมีปัญหาที่คล้ายกัน (เห็นได้ชัดที่สุดในธันเดอร์เบิร์ด) กับตัวอย่าง en_AU ที่นี่ - แต่ฉันมาจาก en_NZ - และหลังจากการทดลองและข้อผิดพลาดกับ Ubuntu 17.10 การแก้ไขของฉันคือการอัพเดท ~ / .pam_environment แทนรายการอื่น ๆ ทั้งหมด ( ส่วนใหญ่ en_AU และ en_US) ด้วย en_NZ จากนั้นรีบูตเครื่อง

ความอัปยศที่คุณไม่สามารถตั้งค่าสถานที่ของคุณและให้มันทำในสิ่งที่มันอ้างว่าทำ - ผิดหวังมากที่สุดว่าการใช้สถานที่ตั้งกำหนดค่า dpkg ดูเหมือนจะไม่ทำสิ่งที่มีประโยชน์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.