Cài đặt ngôn ngữ không đúng. Làm thế nào tôi có thể thiết lập lại chúng?


43

Tôi đã có một vấn đề địa phương.
Trình tự đối chiếu trong nautilusvà các chương trình khác đã thay đổi.
Tôi nhận được lỗi bản địa xuất hiện trong thiết bị đầu cuối khi tôi khởi chạy ứng dụng GUI ..

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

Các localelệnh tạo ra các thông báo lỗi

    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=

Như được đề xuất trong câu hỏi Askubfox , tôi đã chạy các lệnh sau, nhưng không có thay đổi.

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

Tôi cũng đã thử đề xuất trong câu hỏi Askubfox ... cũng không thay đổi.

    apt-get install --reinstall locales

Tôi nghĩ rằng nó đã bắt đầu khi tôi tạm thời cài đặt và gỡ cài đặt Trình chỉnh sửa phương thức nhập bằng ngôn ngữ Urdu thông qua IBus.. nó chắc chắn đã xảy ra cùng ngày.

Có thể nó liên quan đến IBus, nhưng tôi chưa gặp vấn đề gì với nó trước đây.

  • HĐH là 10.04

Câu trả lời:


27

Tôi đã xoay sở để khiến mọi thứ chạy "bình thường" trở lại.

Sau khi thử rất nhiều gói cài đặt lại, v.v., bao gồm loại bỏ hoàn toàn IBus (tất cả đều không có tác dụng), tôi bắt đầu nghĩ rằng nó có thể do cài đặt cấu hình mà cài đặt lại không sửa đổi.

Tôi đã nhận thấy rằng đầu ra từ localekhá đơn giản, của các bài tập UTF-8, vì vậy tôi đã kiểm tra điều này trong một VM được cài đặt gần đây ... tất cả các mục của LC_ * (ngoại trừ LC_ALL, ghi đè tất cả các mục khác) được đặt bằng .UTF-8hậu tố. vì vậy tôi tự đặt các giá trị LC_ * như bên dưới.

Tôi có thể vừa mới sử dụng LC_ALL="en_AU.UTF-8", nhưng khi đọc về điều này, tôi đã khám phá ra cách tùy chỉnh định dạng ngày và giờ của hệ thốngLC_ALLsẽ ghi đè cài đặt tùy chỉnh của tôi.

Tôi không biết nếu tôi đã sử dụng phương pháp phù hợp nhất, nhưng nó hoạt động!

Các tập tin sửa đổi là: /etc/default/locale

  • Điều này cho thấy nội dung trước khi mod:

    LANG="en_AU.UTF-8"
    LANGUAGE="en_AU:en"
    LC_MESSAGES="en_AU.UTF-8"
    
  • Điều này cho thấy nội dung sau khi mod:

    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"
    

Cùng một tệp trong VM chỉ chứa một dòng này:

    LANG="en_AU.UTF-8" 


cảm ơn vì bài viết của bạn Để ghi lại, tôi phải khởi động lại hệ thống của mình để sửa lỗi. (có lẽ có thể đã sử dụng emacs eval-buffer?)
David LeBauer

19

Xác định lại vị trí và cấu hình lại có thể đủ để khắc phục sự cố:

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

Khi bạn chạy, sudo dpkg-reconfigure localesbạn có thể chọn ngôn ngữ bạn muốn bằng cách nhấp vào spacebarvà di chuyển cùng trước khi nhấn Enter.


Có lẽ điều đáng nói là bạn chọn ngôn ngữ bạn muốn bằng phím cách.
Daniel Kmak

@Daniel Tôi không hiểu: phím cách?
Guillaume Vincent

1
Khi chạy, dpkg-reconfigurebạn nhận được danh sách với các hộp kiểm và để chọn ngôn ngữ bạn phải sử dụng phím cách. Không có thông tin như vậy trong chương trình console nên tôi nghĩ nó sẽ giúp viết nó theo câu trả lời. Tôi không biết cách chọn những ngôn ngữ này.
Daniel Kmak

1
@Daniel đã hoàn thành :)
Guillaume Vincent

15

Tôi cũng gặp vấn đề này, như bạn thấy, của bạn LC_ALLtrống rỗng. Tôi đã làm như sau và nó giúp:

$ sudo vim /etc/environment

và đặt thành LC_ALLmột cái gì đó như en_US.UTF-8, của tôi là:

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

sau đó khởi động lại và chạy locale, và nó sẽ giống như:

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

Giải pháp này hoạt động tốt trên Ubuntu 12.04 LTS chính xác
speciousfool

Cài đặt LC_ALLkhông được khuyến khích. "Sử dụng LC_ALL được khuyến khích mạnh mẽ vì nó ghi đè lên mọi thứ. Vui lòng chỉ sử dụng khi kiểm tra và không bao giờ đặt nó trong tệp khởi động." wiki.debian.org/Locale
gertvdijk

4

Nếu bạn được kết nối từ xa với máy qua ssh (ví dụ: từ thiết bị macosx), bạn cần đặt các biến này trên máy bạn đang kết nối từ

thêm phần sau vào ~ / .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
Đây có phải là lỗi đã biết khi kết nối từ OS X không?
MindTooth

không biết đây là do thiết kế hay lỗi / lỗi
Somatik

2

Tôi chỉ muốn thêm, rằng tôi cũng cần chỉnh sửa hồ sơ nhà của mình:

gedit ~/.profile

Vì vậy, trong trường hợp của bạn, nó sẽ trông như:

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

Đăng xuất + Đăng nhập. Và tất cả đều như mong đợi.


Tôi cần exportở đầu mỗi dòng, và tôi đặt nó vào ~/.bashrc.
Sparhawk

2

Tôi đã gặp vấn đề tương tự trong vài tháng, rất nhiều công cụ phần mềm đã cảnh báo về các cài đặt ngôn ngữ bị hỏng và một số thậm chí từ chối chạy. Tôi muốn sử dụng ngôn ngữ tiếng Anh, nhưng cài đặt số và tiền tệ của Thụy Điển.

Điều cuối cùng làm việc cho tôi là chỉnh sửa /etc/default/localenơi tôi đã xóa mọi thứ trong tệp đó. Sau đó tôi bắt đầu thiết lập ngôn ngữ Unity (Settings -> Language Support), thiết lập mọi thứ (Ubuntu muốn cài đặt một số thành phần còn thiếu) và nhấn "Apply System-wide"khi tôi hoàn thành.

/etc/default/localeBây giờ của tôi trông như thế này.

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"
NGÔN NGỮ = "vi"
LANG = "en_US.UTF-8"

Sự khác biệt lớn giữa tệp này và tệp gốc của tôi là LANGUAGE="en".


Người cứu mạng tôi ...
John Joe

2

Đã được một thời gian kể từ khi điều này được đăng nhưng gần đây tôi có vấn đề với các biến "miền địa phương" và không có câu trả lời nào cho tôi bất kỳ kết quả nào. Có lẽ kinh nghiệm của riêng tôi có thể giúp đỡ người khác.

Biến LANG của tôi trống và điều này khiến tôi gặp vấn đề.

$locale

Đầu ra:

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

Tôi đã thử một số lệnh như:

sudo locale-gen
sudo dpkg-reconfigure locales

Không có thành công. Tôi đã thử chỉnh sửa / etc / default / locale và tìm ra nó đã ổn:

$cat /etc/default/locale

Đầu ra:

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"

Ngoài ra, tập tin .pam_en môi trường của tôi có vẻ đúng:

$cat .pam_environment

Đầu ra:

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

Tôi không muốn thêm nội dung bổ sung vào hồ sơ hoặc tệp bash, chủ yếu vì mặc dù nó có thể giải quyết vấn đề nhưng tôi không biết nguyên nhân và điều đó làm tôi khó chịu.

Cuối cùng tôi tự hỏi nếu một cái gì đó đã ghi đè các biến "locale" và tôi đã chạy lệnh tiếp theo:

$cat .bashrc | grep LANG

Đầu ra:

unset LANG

Vì vậy, tôi đã tìm thấy hai dòng trên tệp .bashrc của mình trong đó nguyên nhân (tôi không dán toàn bộ tệp):

unset LANG
export LC_ALL=POSIX

Tôi không biết làm thế nào hoặc khi những dòng đó kết thúc trên tệp bash của tôi, nhưng tôi hoàn toàn chắc chắn rằng tôi đã không viết chúng, có lẽ .bashrc của tôi đã được thay thế khi tôi đang làm việc với một số công cụ phát triển web, tôi thực sự không Tôi không biết, nhưng vì tôi biết điều này là vô tình và có những người ngoài kia không có manh mối về những gì gây ra hành vi sai trái "địa phương", có lẽ điều này có thể giúp họ. Dù sao bình luận những dòng đó và khởi động lại đã giải quyết vấn đề cho tôi. Ở đây tôi đã trả lời cùng một câu hỏi tập trung vào các khiếu nại sublimeT3 về biến LANG .


1

Có vẻ như một bản cập nhật chiên địa phương nào đó. Cách khắc phục tôi tìm thấy là đăng xuất, thay đổi ngôn ngữ đã chọn trước khi đăng nhập và đăng nhập lại.

Nó cũng có thể giúp cài đặt lại các ngôn ngữ trong synap, mặc dù tôi không thể xác nhận rằng đây là cái đã sửa nó cho tôi, tôi nghĩ rằng nó đã đăng xuất hoặc cái gì đó.


Đăng nhập lại và thay đổi ngôn ngữ. Tôi thấy không có cách nào thực sự để thay đổi ngôn ngữ khi đăng nhập .. Tôi thấy văn bản đề cập đến việc thay đổi ngôn ngữ, nhưng không có tùy chọn (nút hoặc tương tự) .. có lẽ đó là vì tôi chỉ bật tiếng Anh Úc .... và tôi đã chạy tất cả các lệnh ở trên .. vì vậy nó vẫn còn là một bí ẩn tại thời điểm này ...
Peter.O

@ red.bear: Hãy thử cài đặt language-pack-enlanguage-support-ensau đó lặp lại quy trình trên.
RolandiXor

1

Tôi đã thử chỉnh sửa tập tin miền địa phương và chọn các ngôn ngữ khác nhau khi đăng nhập.

Lọc các gói bị hỏng bằng Synaptic và loại bỏ hoàn toàn 9 gói vi phạm làm việc cho tôi (libreoffice và python uno).

Nhưng, tôi không thể cài đặt LibreOffice mà không làm hỏng trình quản lý gói. Nó, tuy nhiên, cài đặt.

Tôi vào ngày 11.04 i386. Tuyên bố miễn trừ trách nhiệm: Đã xảy ra sự cố mất điện trong phần cài đặt cuối cùng của tôi khi Ubuntu đang tải xuống các bản cập nhật.


1

Tôi gặp vấn đề tương tự nhưng đi đến Hệ thống> Quản trị> Hỗ trợ ngôn ngữ có thể giải quyết vấn đề của bạn vì nó có thể yêu cầu bạn cài đặt một số gói và sau đó sẽ ổn !! Nó làm việc cho tôi vì vậy tôi đoán nó sẽ làm như vậy với bạn !!


0

Chạy

export LC_ALL="zh_CN.utf8"
ibus-setup

và chọn một trong các tùy chọn cho phương thức nhập liệu theo ý muốn.


0

Tôi đã gặp một vấn đề tương tự (đáng chú ý nhất trong Thunderbird) với ví dụ en_AU ở đây - nhưng tôi đến từ en_NZ - và sau một số thử nghiệm và lỗi với Ubuntu 17.10, cách khắc phục của tôi là cập nhật ~ / .pam_en môi trường, thay thế tất cả các mục khác ( chủ yếu là en_AU và en_US) với en_NZ, sau đó khởi động lại.

Thật xấu hổ khi bạn không thể đặt ngôn ngữ của mình và làm cho nó thực hiện những gì nó tuyên bố sẽ làm - thất vọng nhất là việc chạy các địa điểm cấu hình dpkg dường như không thực sự có ích gì.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.