2012-10-23 22 views
5

Có phương pháp lấy tên múi giờ bằng ngôn ngữ khác không?Tên múi giờ bằng ngôn ngữ địa phương

Trong Python, nếu tôi làm điều gì đó như thế này:

for tz in pytz.common_timezones_set : 
print tz 

Kết quả là bằng tiếng Anh, nhưng những gì nếu tôi muốn có nó trong Tây Ban Nha hoặc arabic?

Trả lời

1

Không, rất tiếc, không có bản dịch nào cho tên múi giờ. Tên là một phần của Olson timezone database (không phải là một phần của Python hoặc pytz). Những cái mới được thêm vào theo thời gian, vì vậy bất kỳ dự án dịch thuật tiềm năng nào cũng sẽ phải đồng bộ với cơ sở dữ liệu đó.

+0

Không phải là câu trả lời tôi muốn, nhưng nhờ giải thích. – Trollbane

0

pytz.common_timezones_set trả về một bộ múi giờ ids trong cơ sở dữ liệu tz. Chúng được thiết kế để có thể đọc được nhưng không thể dịch được.

PyICU cung cấp quyền truy cập vào các tên múi giờ địa phương:

>>> from datetime import datetime 
>>> import icu 
>>> df = icu.DateFormat.createDateTimeInstance(icu.DateFormat.SHORT, icu.DateFormat.FULL, icu.Locale.getFrance()) 
>>> df.format(datetime.now(icu.ICUtzinfo.getDefault())) 
'27/01/2015 21:01:01 heure normale d’Europe centrale' 
0

Đến khá muộn nhưng tôi chạy vào một vấn đề tương tự gần đây, và kết thúc việc tạo gói của riêng tôi l18n cho mục đích đó. Nó có sẵn ở đây: https://pypi.python.org/pypi/l18n

Nó cung cấp các tệp bản dịch cho những nơi có thể đọc được và múi giờ được sử dụng trong pytz. Hầu hết các bản dịch được tự động tìm nạp từ cơ sở dữ liệu CLDR, nhưng luôn có một vài bản dịch bị thiếu. Hiện tại, chỉ có các tệp dịch cho tiếng Anh và tiếng Pháp. Vui lòng liên hệ với tôi (tạo sự cố trên repo của gói https://bitbucket.org/tkhyn/l18n) hoặc thực hiện theo quy trình từng bước here nếu bạn muốn thêm bản dịch cho ngôn ngữ của mình.

+0

Cảm ơn bạn đã kết hợp điều này! Nhưng một gợi ý: 'l' trông giống như nó có thể là một thủ đô 'i' (và nếu bạn nheo mắt, chữ thường 'i'), nên l18n có thể dễ dàng bị nhầm lẫn với i18n. Đó là một cái tên sáng tạo, nhưng có lẽ ít có khả năng bắt được theo cách này? Ngoài ra, thật tốt khi dịch các tên địa điểm, nhưng một phần hữu ích khác sẽ là cung cấp các tên múi giờ thực tế (ví dụ: có vẻ khá phức tạp, không may). –

+0

@NealGokli bạn có thể lấy tên múi giờ thực tế bằng 'l18n.tz_fullnames', phải không? – ouk

2

Bạn có thể sử dụng babel package

import pytz 
from babel.dates import get_timezone_location 

for tz in pytz.common_timezones_set: 
    print(get_timezone_location(tz, locale='es'))