Hướng dẫn how do i change the locale in python? - làm cách nào để thay đổi ngôn ngữ trong python?

Bản địa hóa phần mềm

Khám phá khái niệm cơ bản đằng sau mô -đun địa phương của Python và tìm hiểu cách sử dụng nó cho chuỗi, số và định dạng ngày.

Hướng dẫn how do i change the locale in python? - làm cách nào để thay đổi ngôn ngữ trong python?

Mô -đun địa phương của Python là một phần của thư viện tiêu chuẩn để quốc tế hóa (I18N) và bản địa hóa (L10N) trong Python. Mô -đun địa phương cho phép các nhà phát triển đối phó với một số vấn đề văn hóa trong các ứng dụng của họ. Tin tốt là họ không cần biết tất cả các chi tiết cụ thể về vị trí hoặc ngôn ngữ nơi phần mềm được sử dụng. Hãy khám phá rất chi tiết khái niệm cơ bản về mô -đun địa phương của Python.

Những điều cơ bản của mô -đun địa phương của Python

Chúng ta hãy xem các loại hạt và bu lông của mô -đun địa phương của Python.

Nhập và khởi tạo

Dựa trên tài liệu chính thức, mô -đun địa phương được triển khai trên đầu mô -đun _Locale. Nó sử dụng triển khai địa phương ANSI C nếu có. Một ứng dụng bình thường thường bắt đầu bằng mã sau để đặt locale:_locale module. It uses an ANSI C locale implementation if available. A normal application typically starts with the following code to set the locale:

import locale

# use user's default settings

locale.setlocale(locale.LC_ALL, '')

# use current setting

locale.setlocale(locale.LC_ALL, None)

Tham số đầu tiên biểu thị danh mục Locale trong khi tham số thứ hai sửa đổi cài đặt locale cho danh mục. Nó sẽ sử dụng cài đặt hiện tại cho danh mục nếu tham số thứ hai không có hoặc không có. Mặt khác, một chuỗi trống sẽ sử dụng cài đặt mặc định của người dùng.

Trong ví dụ sau, địa phương được đặt thành tiếng Đức (DE_DE).German (de_DE).

# name might vary with operating system, refer to the notes below

locale.setlocale(locale.LC_ALL, 'de_DE')

Hầu hết thời gian, nó sử dụng tham chiếu Mã định danh mã ngôn ngữ (LCID), như đã nêu trong liên kết sau (thay thế dấu gạch nối trong các thẻ ngôn ngữ bằng dấu gạch dưới). Ví dụ, de-de-de được nêu là DE_DE. Tuy nhiên, các phiên bản HĐH cũ hơn có thể chấp nhận ngôn ngữ ở một định dạng khác, như được hiển thị bên dưới:de-DE should be stated as de_DE. However, older OS versions might accept the locale in a different format, as shown below:

# using standard Language Code Identifier (LCID) Reference

locale.setlocale(locale.LC_ALL , 'de_DE')

# using ISO country code, alpha-3

locale.setlocale(locale.LC_ALL , 'deu_deu')

# using language name

locale.setlocale(locale.LC_ALL , 'German')

Danh sách các địa phương có sẵn

Phương pháp được đề xuất là kiểm tra tham chiếu mã số mã ngôn ngữ tiêu chuẩn trước tiên. Nếu bạn gặp phải lỗi, bước tiếp theo là in ra danh sách đầy đủ các địa phương có sẵn trong máy của bạn.

# for Windows users

for lang in locale.windows_locale.values():

    print(lang)

# for other operating systems

for lang in locale.locale_alias.values():

    print(lang)

Nhận một địa điểm hiện có

Bạn có thể nhận chuỗi cho ngôn ngữ hiện có với mã sau:

# get current locale

loc = locale.getlocale()

Thông tin về một địa điểm hiện có

Gọi hàm localeconv () tích hợp sẽ cung cấp cho bạn thông tin chi tiết về địa phương hiện tại. Chạy mã sau để trực quan hóa nó:localeconv() function will provide you with detailed information about the current locale. Run the following code to visualize it:

for key, value in locale.localeconv().items():

    print("%s: %s" % (key, value))

Dưới đây là một ví dụ đầu ra cho en_sg & nbsp; (tiếng Anh/singapore):en_SG (English/Singapore):

Hướng dẫn how do i change the locale in python? - làm cách nào để thay đổi ngôn ngữ trong python?

Kiểm tra tài liệu chính thức để biết thêm thông tin về các khóa và ý nghĩa tương ứng của chúng.

Định dạng và phân tích số lượng phân tích cú pháp

Mô -đun Locale cung cấp hai hàm chuyên dụng để phân tích một chuỗi vào một số, dựa trên ngôn ngữ hiện tại:

  • atof & nbsp; (chuyển đổi một chuỗi thành số điểm nổi) và (convert a string to a floating point number), and
  • ATOI (chuyển đổi một chuỗi thành số nguyên). (convert a string to integer).

Điều này cực kỳ hữu ích để phân tích một chuỗi có chứa dấu phẩy hoặc dấu chấm, như các địa phương khác nhau giải thích nó khác nhau. Ví dụ:

locale.atof('32,824')
  • 32.824 là 32824.00 cho EN_SG (tiếng Anh/Singapore),32824.00 for en_SG (English/Singapore),
  • 32.824 là 32,824 cho de_de (tiếng Đức).32.824 for de_DE (German).

Trên hết, bạn có thể sử dụng hàm & nbsp; format_string () để định dạng một số theo sở thích của bạn. Đoạn mã sau đây dựa trên & nbsp; locale de_de:format_string() function to format a number according to your preferences. The following code snippet is based on the de_DE locale:

locale.format_string('%10.2f', 738213.78)

# 738213,78

locale.format_string('%10.2f', 738213.78, grouping=True) # grouping is False by default

# 738.213,78

Bạn có thể đặt tham số nhóm & nbsp; nhóm cho hàm & nbsp; format_string (), chấp nhận boolean.grouping parameter for the format_string() function, which accepts a boolean.

  • Nhóm (nếu được đặt thành True, nó sẽ tính đến tài khoản; nếu không, đó là & nbsp; sai theo mặc định). (if set to True, it takes grouping into account; otherwise, it is False by default).

Định dạng tiền tệ

Hơn nữa, bạn có thể sử dụng hàm tiền tệ tích hợp () để định dạng bất kỳ số đầu vào nào. Kết quả cuối cùng đi kèm với biểu tượng hoặc văn bản tiền tệ. Chúng ta hãy xem ví dụ sau cho EN_SG:currency() function to format any input number. The end result comes with the currency symbol or text. Let us have a look at the following example for en_SG:

locale.currency(924531.78)

# $924531.78

locale.currency(924531.78, grouping=True)

# $924,531.78

locale.currency(924531.78, grouping=True, international=True)

# SGD924,531.78

Ngoài số đầu vào, hàm tiền tệ () cũng chấp nhận ba tham số bổ sung:currency() function also accepts three additional parameters:

  • Biểu tượng (nếu được đặt thành true, chuỗi được trả về bao gồm ký hiệu tiền tệ; giá trị mặc định là đúng), (if set to True, the returned string includes the currency symbol; the default value is True),
  • Nhóm & nbsp; (nếu được đặt thành true, nhóm được thực hiện với giá trị; giá trị mặc định là sai), (if set to True, the grouping is done with the value; the default value is False),
  • International & nbsp; (Nếu được đặt thành TRUE, biểu tượng tiền tệ quốc tế được sử dụng; giá trị mặc định là sai).(if set to True, the international currency symbol is used; the default value is False).

Định dạng ngày và giờ

Ngoài ra, mô -đun DateTime giúp định dạng ngày và thời gian, dựa trên ngôn ngữ mà bạn đã đặt. Cách dễ nhất là dựa vào hàm strftime (). Nó chuyển đổi một đối tượng thành một chuỗi theo một định dạng nhất định. Nó có thể là một ngày, thời gian hoặc đối tượng DateTime. Hãy xem danh sách các mã định dạng phổ biến sau đâystrftime() function. It converts an object to a string according to a given format. It can be a date, time, or datetime object. Let's have a look at the following list of common format codes

  • %A & nbsp; - ngày trong tuần là tên đầy đủ của địa phương, – weekday as locale’s full name,
  • %B - Tháng dưới dạng tên viết tắt của địa phương, – month as locale’s abbreviated name,
  • %m-tháng dưới dạng số thập phân không có lông, – month as a zero-padded decimal number,
  • %Y - năm với thế kỷ là một số thập phân, – year with century as a decimal number,
  • %H-giờ (đồng hồ 24 giờ) dưới dạng số thập phân không có lông, – hour (24-hour clock) as a zero-padded decimal number,
  • %I-giờ (đồng hồ 12 giờ) là số thập phân không có lông (vốn "I"), – hour (12-hour clock) as a zero-padded decimal number (capital "i"),
  • %P - Locale tương đương với AM hoặc PM, – locale’s equivalent of either AM or PM,
  • %M & nbsp;-phút như một số thập phân không có lông, – minute as a zero-padded decimal number,
  • %S & nbsp;-thứ hai là số thập phân bằng không, – second as a zero-padded decimal number,
  • %Z & nbsp; - Tên múi giờ (chuỗi trống nếu đối tượng là ngây thơ). – time zone name (empty string if the object is naive).

Bạn có thể tìm thấy danh sách đầy đủ các mã định dạng trong liên kết sau.

Chỉ cần xác định định dạng trong một chuỗi và sử dụng nó làm tham số đầu vào khi gọi hàm & nbsp; strftime (). Kiểm tra ví dụ sau hiển thị ngày và giờ hiện tại.strftime() function. Check out the following example displaying the current date and time.

now = datetime.datetime.now()

format = "%A, %d %b %Y %H:%M:%S %Z"

now.strftime(format)

# Thursday, 23 July 2020 13:11:31

Ngoài ra, bạn có thể chỉ hiển thị thành phần ngày cho một sự kiện RSVP cụ thể như sau:

# name might vary with operating system, refer to the notes below

locale.setlocale(locale.LC_ALL, 'de_DE')
0

Nếu một giá trị được lưu trữ dưới dạng dấu thời gian trong cơ sở dữ liệu của bạn, bạn có thể dễ dàng chuyển đổi nó thành đối tượng DateTime:

# name might vary with operating system, refer to the notes below

locale.setlocale(locale.LC_ALL, 'de_DE')
1

%I (Capital I) đại diện cho đồng hồ 12 giờ dưới dạng số thập phân bằng không. Bạn có thể loại bỏ số 0 hàng đầu bằng cách thêm dấu hiệu dấu gạch nối hoặc pound dựa trên hệ điều hành máy của bạn. Ví dụ, represents a 12-hour clock as a zero-padded decimal number. You can remove the leading zero by adding a hyphen or pound sign based on the operating system of your machine. For example,

  • Linux, OS X: %-I: %-I
  • Windows, Cygwin: %#i: %#I

Ngoài ra, bạn có thể làm nổi bật múi giờ miễn là đối tượng DateTime chứa thông tin múi giờ tối ưu. Chúng tôi gọi đây là đối tượng DateTime & nbsp; Aware DateTime. Ngược lại, một đối tượng DateTime ngây thơ không chứa đủ thông tin để định vị rõ ràng chính nó liên quan đến các đối tượng DateTime khác. Bạn có thể dễ dàng xác định nếu một đối tượng DateTime nhận thức được hoặc ngây thơ bằng cách in nó ra.aware datetime object. In contrast, a naive datetime object does not contain enough information to unambiguously locate itself in relation to other datetime objects. You can easily identify if a datetime object is aware or naive by printing it out.

# name might vary with operating system, refer to the notes below

locale.setlocale(locale.LC_ALL, 'de_DE')
2

Đối với thông tin của bạn, bạn có thể dễ dàng xây dựng và xác định thời gian trong một đối tượng DateTime bằng cách sử dụng DateTime.timezone. Chúng ta hãy xem xét ví dụ sau đây về việc tạo các phiên bản của DateTime hiện tại dựa trên các múi giờ khác nhau.datetime.timezone. Let us have a look at the following example of creating instances of current datetime based on different timezones.

# name might vary with operating system, refer to the notes below

locale.setlocale(locale.LC_ALL, 'de_DE')
3

%Z sẽ trả về một chuỗi trống, được gọi bởi một đối tượng DateTime ngây thơ. will return an empty string, called by a naive datetime object.

Thực hành tốt nhất

Dựa trên tài liệu chính thức, mô-đun địa phương là một thuộc tính toàn chương trình theo định nghĩa tiêu chuẩn C. Kết quả là, nó là vô cùng tốn kém để thay đổi một địa điểm ở giữa.

Thay đổi địa phương thường xuyên có thể gây ra các bãi rác lõi. Đó là lý do tại sao rất khuyến khích đặt nó chỉ một lần trong khi khởi tạo ứng dụng của bạn.

Một mô -đun mở rộng hoặc thói quen thư viện không bao giờ được gọi là & nbsp; setLocale (), vì nó sẽ ảnh hưởng đến toàn bộ chương trình.setlocale() function, since it will affect the entire program.

Ngoài hàm & nbsp; format_string (), cách duy nhất để thực hiện các hoạt động số theo ngôn ngữ là sử dụng các hàm đặc biệt được xác định bởi mô -đun này:format_string() function, the only way to perform numeric operations according to the locale is to use the special functions defined by this module:

  • ATOF (chuyển đổi một chuỗi thành số điểm nổi), (convert a string to a floating point number),
  • ATOI (chuyển đổi một chuỗi thành số nguyên), (convert a string to integer),
  • STR (định dạng một số điểm nổi sử dụng cùng định dạng với hàm tích hợp str (float) nhưng tính đến số thập phân vào tài khoản). (formats a floating point number using the same format as the built-in function str(float) but takes the decimal point into account).

Kết thúc hướng dẫn của chúng tôi về mô -đun địa phương của Python

Tóm lại, mô -đun địa phương cực kỳ hữu ích để quốc tế hóa và bản địa hóa các ứng dụng Python. Nếu bạn đang tìm cách để hợp lý hóa quy trình i18n của mình, hãy để cụm từ thực hiện công việc nặng nhọc. Giải pháp nội địa hóa toàn diện nhất trên thị trường, cụm từ nội địa hóa sẽ trang bị cho bạn mọi thứ bạn cần:

  • Xây dựng tích hợp sẵn sàng sản xuất với quy trình phát triển của bạn,
  • Mời nhiều người dùng như bạn muốn hợp tác trong các dự án của mình,
  • Chỉnh sửa và chuyển đổi các tệp bản địa hóa trực tuyến với nhiều bối cảnh hơn cho chất lượng dịch cao hơn.

Cuối cùng, hãy xem các bài viết sau đây nếu bạn muốn biết nhiều hơn về quốc tế hóa và nội địa hóa trong Python:

  • Khám phá tất cả các lợi thế i18n của Babel cho ứng dụng Python của bạn
  • Cách dịch các ứng dụng Python với mô -đun GNU GetText
  • Hướng dẫn nội địa hóa ứng dụng bình

Cập nhật lần cuối vào ngày 25 tháng 9 năm 2022.

Làm cách nào để thay đổi mã hóa địa phương của tôi?

Locale có thể được đặt trong Windows toàn cầu thành UTF -8, nếu bạn mong muốn, như sau: Bảng điều khiển -> Đồng hồ và Vùng -> Vùng -> Hành chính -> Thay đổi hệ thống Locale -> Kiểm tra Beta: Sử dụng Unicode UTF -8 ..Sau đó, và khởi động lại, tôi đã xác nhận địa phương đó.Control panel -> Clock and Region -> Region -> Administrative -> Change system locale -> Check Beta: Use Unicode UTF-8 ... After this, and a reboot, I confirmed that locale.

Địa điểm trong Python là gì?

Mô -đun địa phương của Python là một phần của thư viện tiêu chuẩn để quốc tế hóa (I18N) và bản địa hóa (L10N) trong Python.Mô -đun địa phương cho phép các nhà phát triển đối phó với một số vấn đề văn hóa trong các ứng dụng của họ.part of the standard library for internationalization (i18n) and localization (l10n) in Python. The locale module allows developers to deal with certain cultural issues in their applications.

En_us là gì?

Ví dụ: người dùng nói tiếng Anh ở Hoa Kỳ có thể chọn Locale EN_US.UTF-8 (tiếng Anh cho Hoa Kỳ), trong khi người dùng nói tiếng Anh ở Vương quốc Anh có thể chọn EN_GB.UTF-8 (tiếng Anh cho Vương quốc Anh).Nói chung, tên địa phương được chỉ định bởi biến môi trường Lang.an English-speaking user in the United States can select the en_US. UTF-8 locale (English for the United States), while an English-speaking user in Great Britain can select en_GB. UTF-8 (English for Great Britain). Generally the locale name is specified by the LANG environment variable.