Không thể tạo en_US.UTF-8 Locale


8

Tôi đã cố gắng thiết lập ngôn ngữ của mình en_US.UTF-8mà không thành công. Dựa trên các câu trả lời khác trên internet, trước tiên tôi nên tạo miền địa phương với

sudo locale-gen en_US.UTF-8

Và sau đó áp dụng nó với

sudo dpkg-reconfigure locales

Tuy nhiên, chạy locale-genlàm một cái gì đó kỳ lạ:

user@Host /home/user $ sudo locale-gen en_US.UTF-8
Generating locales (this might take a while)...
  en_US.ISO-8859-1... done
Generation complete.

Như bạn thấy, nó không bao giờ thực sự tạo ra UTF-8, mà thay vào đó tiếp tục rơi trở lại ISO-8859-1. Tôi không bao giờ có thể quản lý để thiết lập LC_ALLđể en_US.UTF-8, có lẽ bởi vì nó không thể tạo ra.

Tôi có làm điều gì sai? Tôi đang chạy Debian 8.1.

Câu trả lời:


28

Bạn đã thử áp dụng một công thức cho Ubuntu trong Debian. Điều đó thường hoạt động, nhưng trong trường hợp cụ thể này thì không.

Ubuntu có nguồn gốc từ Debian và không thay đổi nhiều so với trình cài đặt và GUI. Các locale-genlệnh là một trong những vài thứ khác mà nó thay đổi. Tôi không biết tại sao.

Trong Debian, locale-genlệnh không có đối số và tạo lại các định nghĩa miền được biên dịch theo danh sách các ngôn ngữ được cấu hình. Để sửa đổi lựa chọn các địa điểm mà bạn muốn sử dụng, hãy chỉnh sửa tệp /etc/locale.gensau đó chạy locale-genlệnh. Hoặc, chạy dpkg-reconfigure localesvới quyền root, chọn các địa điểm bổ sung mà bạn muốn (và bỏ chọn những địa điểm bạn không muốn) và nhấn OK.

Trong Ubuntu, nếu bạn chạy locale-genlệnh mà không có đối số, nó sẽ tạo lại các định nghĩa miền địa phương được biên dịch theo danh sách các ngôn ngữ được cấu hình. Nhưng nếu bạn vượt qua một số đối số, chúng sẽ được thêm vào danh sách và được tạo ngay lập tức. Danh sách các địa phương được giữ trong /var/lib/locales/supported.d/local. Chạy dpkg-reconfigure localeschỉ tái tạo các địa điểm được biên dịch mà không cho bạn cơ hội để sửa đổi lựa chọn.

Tóm lại, để thêm en_US.UTF-8vào danh sách các ngôn ngữ có thể sử dụng:

  • Debian, tương tác: dpkg-reconfigure locales
  • Debian, tự động: sed -i 's/^# *\(en_US.UTF-8\)/\1/' /etc/locale.gen && locale-gen
  • Ubuntu, tự động: locale-gen en_US.UTF-8

Vì vậy, làm thế nào bạn sẽ thêm các gói với dpkg-reconfigure? Tôi đã có giao diện tương tác, nhưng khi chọn một mục bằng enter, nó không được cài đặt.
Erik S

@ErikDolor Tôi không hiểu câu hỏi của bạn. Trừ khi bạn thay đổi cài đặt dpkg-reconfigure localesgỡ lỗi , hãy hiển thị hộp thoại chế độ văn bản, với hộp kiểm cho mỗi ngôn ngữ có thể được tạo. Bạn cuộn xuống en_US.UTF-8, kiểm tra nó và nhấn nút OK.
Gilles 'SO- ngừng trở nên xấu xa'

Tôi đã thử kiểm tra nó bằng nút enter, nhưng rõ ràng nó hoạt động như nhấn OK.
Erik S

2
@ErikDolor ơi. Nhấn phím cách để chuyển một hộp kiểm.
Gilles 'SO- ngừng trở nên xấu xa'

Cũng hoạt động cho jessie
raspbian

5

Sau khi thực sự đọc tệp man cho locale-gen thay vì tin tưởng một cách mù quáng vào internet, tôi thấy rằng nó locale-genthực sự lấy các địa phương để tạo ra /etc/locale.gen. Bằng cách không chú ý en_US.UTF-8đến đó, tôi quản lý để tạo ra nó.


sed -i '/^#.* es_ES / s / ^ # //' /etc/locale.gen Nếu bạn đang sử dụng Docker này có thể có ích
Borjante

Câu trả lời DUY NHẤT có hiệu quả với tôi sau khi lùng sục trên mạng nhiều ngày !! Cảm ơn bạn rất nhiều!
I <.Guy
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.