Django国际化和本地化

每次增加新语言

在settings.py的LANGUAGES中增加即可,然后使用命令创建和编译翻译
在商品模型中增加新语言字段,并填充文字

每次增加新地区

在项目urls导入应用urls的路由规则正则表达式中增加地区代码
在gongxiang.py 中增加时区,和列表
只能首页跳转视图中 增加IP地区返回的遍历
增加搜索地区的商品和搜索

路由解说

如果只增加了语言,那么路由格式就是/en/
如果增加了语言和地区,那么路由格式就是/en/us

开始方法:

#settings.py文件的MIDDLEWARE项,在Session后面添加:
django.middleware.locale.LocaleMiddleware', #开启语言路由中间件

编辑应用的urls.py:
#(如果根路由时项目则写进项目,根路由是应用则是应用的文件)

from django.urls import path
from . import views

#这里被项目的语言代码和地区路由包裹
urlpatterns = [
    path("", views.index_view, name="index"),
    path('register', views.register_view, name='register'),
    path('login', views.login_view, name='login'),
    path('ceshi', views.ceshi, name='ceshi'),
    path('active', views.active_view, name='active'),
]

编辑项目的urls.py:这个文件是为了用路由把应用的路由包裹起来

from django.urls import path, include, re_path
from django.conf.urls.i18n import i18n_patterns
from django.contrib import admin
from myapp.views import url_index_view, logout_view, send_emailcode

#这里是没有被包裹的路由
urlpatterns = [
    path('muxiaoliang123/admin', admin.site.urls),
    path("", url_index_view),
    path('logout', logout_view, name='logout'),
    path('send_emailcode', send_emailcode, name='send_emailcode'),
]

#这里是被翻译URL语言代码包裹的路由
urlpatterns += i18n_patterns(
    #使用这则表达式来匹配地区编号,然后通过导入的方式,让应用后面的路由都自动跟在地区编号的后面
    re_path(r"(?P<diqu>(world|cn|tw|sg|hk|jp|kr|us|ca|au|ru))/", include("myapp.urls")), #这里是被地区包裹的路由

#查看不同语言的Django标识django\conf\global_settings.py
编辑settings.py文件:

LANGUAGE_CODE = 'en'  #设置主语言,如果是url模式同时要修改首页跳转默认英语
LANGUAGES = [
    ('en', 'English'),
    ('zh-hans', '简体中文'),
    ('zh-hant', '繁体中文'),
    ('es', 'Español'),
    ('ru', 'Русский'),
    ('ko', '한국어'),
    ('ja', '日本語'),
    # ('vi', 'tiếng Việt'),
    # ('fr', 'Français'),
    # ('de', 'Deutsch'),
    # ('hi', 'हिंदी'),
]

TIME_ZONE = 'UTC'  #设置时间为UTC
USE_I18N = True  #开启多语言
USE_TZ = True  #开启国际时区

#视图文件调用翻译:

from django.utils.translation import gettext as _

def index(request):
    jieguo = Question.objects.all()
    hello = _("你好呀!")  #_代表要翻译的文字
    return render(request, 'index.html', {'jieguo': jieguo, 'hello':hello})

#模板文件调用翻译:

<!-- 语言切换链接 -->
    <ul>
        {% for lang_code, lang_name in LANGUAGES %}
        {% if request.LANGUAGE_CODE == lang_code %}
        <li><a href="/{{ lang_code }}/{{ DIQU.0 }}">{{ lang_name }}</a></li>
        {% endif %}
        {% endfor %}
        {% for lang_code, lang_name in LANGUAGES %}
        {% if request.LANGUAGE_CODE != lang_code %}
        <li><a href="/{{ lang_code }}/{{ DIQU.0 }}">{{ lang_name }}</a></li>
        {% endif %}
        {% endfor %}
    </ul>
<!-- 如果在全局隐式传入了语言变量也可以这样切换语言 LANGUAGES是全局模板变量request.LANGUAGE_CODE是当前请求语言的变量-->
<ul>
    {% for lang_code, lang_name in LANGUAGES %}
        {% if request.LANGUAGE_CODE == lang_code %}
            <li><a href="/{{ lang_code }}/">{{ lang_name }}</a></li>
        {% endif %}
    {% endfor %}
    {% for lang_code, lang_name in LANGUAGES %}
        {% if request.LANGUAGE_CODE != lang_code %}
            <li><a href="/{{ lang_code }}/">{{ lang_name }}</a></li>
        {% endif %}
    {% endfor %}
</ul>

<!-- 包括需要被翻译的内容 -->
<h1>{% trans "欢迎你" %}</h1>

下载gettext翻译套件:
https://mlocati.github.io/articles/gettext-iconv-windows.html

如果是ubuntu系统则sudo apt-get install gettext

在应用程序下创建locale目录
然后执行
django-admin makemessages --locale zh_HAns #创建翻译文件

#去/locale/en/LC_MESSAGES/django.po编辑翻译文件

翻译好所有文件后,执行
django-admin compilemessages #编译文件

部署到服务器记得要将zh_HAns目录文件名改为zh_Hans,否则翻译会变成默认翻译

全局自动处理时区

在myapp创建一个gongxiang.py

from django.conf import settings
from django.utils.translation import gettext as _

def languages_context(request):
    return {'LANGUAGES': settings.LANGUAGES}

def timezone_context(request):
    #获取当前url环境
    url_parts = request.path.split('/')

    #得到不含当前语言的新路由,可以用来放在前端语言切换的url中用来实现改变语言而仍然停留在该页面
    yuyan_luyou = url_parts[2:]

    # 获取URL中的地区变量,假设URL格式是 /{时区变量}/
    timezone_var = url_parts[2]  # 第一个元素是空字符串,第二个元素是地区变量

    yuyan_luyou = '/'.join(yuyan_luyou)  #组合成没有语言代号的新路由
    print(f'当前地区代码{timezone_var}')
    
    #DIQU是当前地区代码,时区,UTC
    if timezone_var == 'cn':
        diqu = timezone_var,'Asia/Shanghai','UTC+8'  #地区,时区,UTC
    elif timezone_var == 'tw':
        diqu = timezone_var,'Asia/Shanghai','UTC+8'
    elif timezone_var == 'sg':
        diqu = timezone_var,'Asia/Shanghai','UTC+8'
    elif timezone_var == 'hk':
        diqu = timezone_var,'Asia/Shanghai','UTC+8'   
    elif timezone_var == 'jp':
        diqu = timezone_var,'Asia/Tokyo','UTC+9' 
    elif timezone_var == 'kr':
        diqu = timezone_var,'Asia/Tokyo','UTC+9'
    elif timezone_var == 'us':
        diqu = timezone_var,'America/New_York','UTC-5'
    elif timezone_var == 'ca':
        diqu = timezone_var,'America/New_York','UTC-5'
    elif timezone_var == 'au':
        diqu = timezone_var,'Australia/Sydney','UTC+11'
    elif timezone_var == 'ru':
        diqu = timezone_var,'Europe/Moscow','UTC+3'
    else:
        diqu = timezone_var,'UTC','UTC'

    #DIQU_LIST是地区代码,名称,这个列表用来供for循环
    diqu_list = [
        ('cn',_('中国')),
        ('tw',_('台湾')),
        ('sg',_('新加坡')),
        ('hk',_('香港')),
        ('jp',_('日本')),
        ('kr',_('韩国')),
        ('us',_('美国')),
        ('ca',_('加拿大')),
        ('au',_('澳大利亚')),
        ('ru',_('俄罗斯')),
        ('world',_('世界'))
        ]    
    return {'DIQU': diqu,'DIQU_LIST':diqu_list}

共享变量添加到上下文全局:
'myapp.gongxiang.timezone_context' 添加进TEMPLATES
这样就可以在所有模板中使用DIQU 和DIQU_LIST变量了

<p>地区代码{{ DIQU.0 }}你的code代码时间是{{ user.vcode_date|timezone:DIQU.1 }}UTC{{ DIQU.2 }}</p>

手动处理时区

{% load tz %}

<!-- 强制转为当前时区 -->
{{ value|localtime }}

<!-- 强制转为指定时区 -->
{{ value|timezone:"Asia/Shanghai" }}

指定视图处理时区:

url 添加一个路由:path('<str:diqu>/', views.index_view, name="index"),

视图:

#智能首页跳转语言地区环境
def url_index_view(request):
    #先从cookie指定语言
    if 'lang' in request.COOKIES:
        lang = request.COOKIES['lang']
    #然后从浏览器指定语言
    elif request.LANGUAGE_CODE:
        lang = request.LANGUAGE_CODE
    else:
        lang = 'en'  #最后使用默认语言
        
    #优先从cookie指定地区
    if 'diqu' in request.COOKIES:
        diqu = request.COOKIES['diqu']
    else:
        diqu = 'world'
    return redirect(f'/{lang}/{diqu}/')
    

def index_view(request,diqu):
    # 设置一个名为'my_cookie'的Cookie,值为'cookie_value'
    response = HttpResponse()
    response.set_cookie('lang', request.LANGUAGE_CODE) #设置一个cookie
    response.set_cookie('diqu', diqu) #设置一个cookie
    # 渲染模板,并传递相应的内容
    context = {'jieguo': Ceshi.objects.all(), 'hello': _('你好呀!')}
    response.content = render(request, 'index.html', context).content
    return response

模板:

{% load tz %}
<p>你的code代码时间是{{ user.vcode_date|timezone:shiqu.0 }},({{ DIQU.2 }})</p>

<!- 上面的方法会本地化翻译时间,并且没有秒数,如果要标准时间则后面再加上-->
{{ user.vcode_date|timezone:DIQU.1|date:"Y-m-d H:i:s" }}({{ DIQU.2 }})

根路由智能跳转,搭配了cloudflare返回的请求头

#智能首页跳转语言地区环境
def url_index_view(request):
    #先从cookie指定语言
    if 'lang' in request.COOKIES:
        lang = request.COOKIES['lang']
    #然后从浏览器指定语言
    elif request.LANGUAGE_CODE:
        lang = request.LANGUAGE_CODE
    else:
        lang = 'en'  #最后使用默认语言

    #优先从cookie指定地区
    if 'diqu' in request.COOKIES:
        diqu = request.COOKIES['diqu']
    else:    #然后从cf返回的用户IP指定地区
        ldiqu = request.headers["Cf-Ipcountry"]
        if ldiqu.lower() in ['world','cn','tw','sg','hk','jp','kr','us','ca','au','ru']:
            diqu = ldiqu.lower()  #大写转小写
        else:
            diqu = 'world'
    return redirect(f'/{lang}/{diqu}/')

#第一次访问包含语言地区的首页指定cookie
def index_view(request,diqu):
    response = HttpResponse()
    response.set_cookie('lang', request.LANGUAGE_CODE) #设置一个cookie
    response.set_cookie('diqu', diqu) #设置一个cookie
    # 渲染模板,并传递相应的内容
    context = {'jieguo': Ceshi.objects.all(), 'hello': _('你好呀!')}
    response.content = render(request, 'index.html', context).content
    return response

所有时区代码:

#查看所有时区
import pytz
for tz in pytz.all_timezones:
    print(tz)

主要国家时区:
Asia/Shanghai : 新加坡,台湾,香港,中国 #UTC+8
Asia/Tokyo: 日本,韩国 #UTC+9
Asia/Kolkata : 印度 #UTC+5:30
Asia/Ho_Chi_Minh :越南 #UTC+7
Europe/Moscow : 俄罗斯 #UTC+3
America/New_York: 美国,加拿大 #UTC-5
Australia/Sydney:澳大利亚 #UTC+10

Africa/Abidjan
Africa/Accra
Africa/Addis_Ababa
Africa/Algiers
Africa/Asmara
Africa/Asmera
Africa/Bamako
Africa/Bangui
Africa/Banjul
Africa/Bissau
Africa/Blantyre
Africa/Brazzaville
Africa/Bujumbura
Africa/Cairo
Africa/Casablanca
Africa/Ceuta
Africa/Conakry
Africa/Dakar
Africa/Dar_es_Salaam
Africa/Djibouti
Africa/Douala
Africa/El_Aaiun
Africa/Freetown
Africa/Gaborone
Africa/Harare
Africa/Johannesburg
Africa/Juba
Africa/Kampala
Africa/Khartoum
Africa/Kigali
Africa/Kinshasa
Africa/Lagos
Africa/Libreville
Africa/Lome
Africa/Luanda
Africa/Lubumbashi
Africa/Lusaka
Africa/Malabo
Africa/Maputo
Africa/Maseru
Africa/Mbabane
Africa/Mogadishu
Africa/Monrovia
Africa/Nairobi
Africa/Ndjamena
Africa/Niamey
Africa/Nouakchott
Africa/Ouagadougou
Africa/Porto-Novo
Africa/Sao_Tome
Africa/Timbuktu
Africa/Tripoli
Africa/Tunis
Africa/Windhoek
America/Adak
America/Anchorage
America/Anguilla
America/Antigua
America/Araguaina
America/Argentina/Buenos_Aires
America/Argentina/Catamarca
America/Argentina/ComodRivadavia
America/Argentina/Cordoba
America/Argentina/Jujuy
America/Argentina/La_Rioja
America/Argentina/Mendoza
America/Argentina/Rio_Gallegos
America/Argentina/Salta
America/Argentina/San_Juan
America/Argentina/San_Luis
America/Argentina/Tucuman
America/Argentina/Ushuaia
America/Aruba
America/Asuncion
America/Atikokan
America/Atka
America/Bahia
America/Bahia_Banderas
America/Barbados
America/Belem
America/Belize
America/Blanc-Sablon
America/Boa_Vista
America/Bogota
America/Boise
America/Buenos_Aires
America/Cambridge_Bay
America/Campo_Grande
America/Cancun
America/Caracas
America/Catamarca
America/Cayenne
America/Cayman
America/Chicago
America/Chihuahua
America/Ciudad_Juarez
America/Coral_Harbour
America/Cordoba
America/Costa_Rica
America/Creston
America/Cuiaba
America/Curacao
America/Danmarkshavn
America/Dawson
America/Dawson_Creek
America/Denver
America/Detroit
America/Dominica
America/Edmonton
America/Eirunepe
America/El_Salvador
America/Ensenada
America/Fort_Nelson
America/Fort_Wayne
America/Fortaleza
America/Glace_Bay
America/Godthab
America/Goose_Bay
America/Grand_Turk
America/Grenada
America/Guadeloupe
America/Guatemala
America/Guayaquil
America/Guyana
America/Halifax
America/Havana
America/Hermosillo
America/Indiana/Indianapolis
America/Indiana/Knox
America/Indiana/Marengo
America/Indiana/Petersburg
America/Indiana/Tell_City
America/Indiana/Vevay
America/Indiana/Vincennes
America/Indiana/Winamac
America/Indianapolis
America/Inuvik
America/Iqaluit
America/Jamaica
America/Jujuy
America/Juneau
America/Kentucky/Louisville
America/Kentucky/Monticello
America/Knox_IN
America/Kralendijk
America/La_Paz
America/Lima
America/Los_Angeles
America/Louisville
America/Lower_Princes
America/Maceio
America/Managua
America/Manaus
America/Marigot
America/Martinique
America/Matamoros
America/Mazatlan
America/Mendoza
America/Menominee
America/Merida
America/Metlakatla
America/Mexico_City
America/Miquelon
America/Moncton
America/Monterrey
America/Montevideo
America/Montreal
America/Montserrat
America/Nassau
America/New_York
America/Nipigon
America/Nome
America/Noronha
America/North_Dakota/Beulah
America/North_Dakota/Center
America/North_Dakota/New_Salem
America/Nuuk
America/Ojinaga
America/Panama
America/Pangnirtung
America/Paramaribo
America/Phoenix
America/Port-au-Prince
America/Port_of_Spain
America/Porto_Acre
America/Porto_Velho
America/Puerto_Rico
America/Punta_Arenas
America/Rainy_River
America/Rankin_Inlet
America/Recife
America/Regina
America/Resolute
America/Rio_Branco
America/Rosario
America/Santa_Isabel
America/Santarem
America/Santiago
America/Santo_Domingo
America/Sao_Paulo
America/Scoresbysund
America/Shiprock
America/Sitka
America/St_Barthelemy
America/St_Johns
America/St_Kitts
America/St_Lucia
America/St_Thomas
America/St_Vincent
America/Swift_Current
America/Tegucigalpa
America/Thule
America/Thunder_Bay
America/Tijuana
America/Toronto
America/Tortola
America/Vancouver
America/Virgin
America/Whitehorse
America/Winnipeg
America/Yakutat
America/Yellowknife
Antarctica/Casey
Antarctica/Davis
Antarctica/DumontDUrville
Antarctica/Macquarie
Antarctica/Mawson
Antarctica/McMurdo
Antarctica/Palmer
Antarctica/Rothera
Antarctica/South_Pole
Antarctica/Syowa
Antarctica/Troll
Antarctica/Vostok
Arctic/Longyearbyen
Asia/Aden
Asia/Almaty
Asia/Amman
Asia/Anadyr
Asia/Aqtau
Asia/Aqtobe
Asia/Ashgabat
Asia/Ashkhabad
Asia/Atyrau
Asia/Baghdad
Asia/Bahrain
Asia/Baku
Asia/Bangkok
Asia/Barnaul
Asia/Beirut
Asia/Bishkek
Asia/Brunei
Asia/Calcutta
Asia/Chita
Asia/Choibalsan
Asia/Chongqing
Asia/Chungking
Asia/Colombo
Asia/Dacca
Asia/Damascus
Asia/Dhaka
Asia/Dili
Asia/Dubai
Asia/Dushanbe
Asia/Famagusta
Asia/Gaza
Asia/Harbin
Asia/Hebron
Asia/Ho_Chi_Minh
Asia/Hong_Kong
Asia/Hovd
Asia/Irkutsk
Asia/Istanbul
Asia/Jakarta
Asia/Jayapura
Asia/Jerusalem
Asia/Kabul
Asia/Kamchatka
Asia/Karachi
Asia/Kashgar
Asia/Kathmandu
Asia/Katmandu
Asia/Khandyga
Asia/Kolkata
Asia/Krasnoyarsk
Asia/Kuala_Lumpur
Asia/Kuching
Asia/Kuwait
Asia/Macao
Asia/Macau
Asia/Magadan
Asia/Makassar
Asia/Manila
Asia/Muscat
Asia/Nicosia
Asia/Novokuznetsk
Asia/Novosibirsk
Asia/Omsk
Asia/Oral
Asia/Phnom_Penh
Asia/Pontianak
Asia/Pyongyang
Asia/Qatar
Asia/Qostanay
Asia/Qyzylorda
Asia/Rangoon
Asia/Riyadh
Asia/Saigon
Asia/Sakhalin
Asia/Samarkand
Asia/Seoul
Asia/Shanghai
Asia/Singapore
Asia/Srednekolymsk
Asia/Taipei
Asia/Tashkent
Asia/Tbilisi
Asia/Tehran
Asia/Tel_Aviv
Asia/Thimbu
Asia/Thimphu
Asia/Tokyo
Asia/Tomsk
Asia/Ujung_Pandang
Asia/Ulaanbaatar
Asia/Ulan_Bator
Asia/Urumqi
Asia/Ust-Nera
Asia/Vientiane
Asia/Vladivostok
Asia/Yakutsk
Asia/Yangon
Asia/Yekaterinburg
Asia/Yerevan
Atlantic/Azores
Atlantic/Bermuda
Atlantic/Canary
Atlantic/Cape_Verde
Atlantic/Faeroe
Atlantic/Faroe
Atlantic/Jan_Mayen
Atlantic/Madeira
Atlantic/Reykjavik
Atlantic/South_Georgia
Atlantic/St_Helena
Atlantic/Stanley
Australia/ACT
Australia/Adelaide
Australia/Brisbane
Australia/Broken_Hill
Australia/Canberra
Australia/Currie
Australia/Darwin
Australia/Eucla
Australia/Hobart
Australia/LHI
Australia/Lindeman
Australia/Lord_Howe
Australia/Melbourne
Australia/NSW
Australia/North
Australia/Perth
Australia/Queensland
Australia/South
Australia/Sydney
Australia/Tasmania
Australia/Victoria
Australia/West
Australia/Yancowinna
Brazil/Acre
Brazil/DeNoronha
Brazil/East
Brazil/West
CET
CST6CDT
Canada/Atlantic
Canada/Central
Canada/Eastern
Canada/Mountain
Canada/Newfoundland
Canada/Pacific
Canada/Saskatchewan
Canada/Yukon
Chile/Continental
Chile/EasterIsland
Cuba
EET
EST
EST5EDT
Egypt
Eire
Etc/GMT
Etc/GMT+0
Etc/GMT+1
Etc/GMT+10
Etc/GMT+11
Etc/GMT+12
Etc/GMT+2
Etc/GMT+3
Etc/GMT+4
Etc/GMT+5
Etc/GMT+6
Etc/GMT+7
Etc/GMT+8
Etc/GMT+9
Etc/GMT-0
Etc/GMT-1
Etc/GMT-10
Etc/GMT-11
Etc/GMT-12
Etc/GMT-13
Etc/GMT-14
Etc/GMT-2
Etc/GMT-3
Etc/GMT-4
Etc/GMT-5
Etc/GMT-6
Etc/GMT-7
Etc/GMT-8
Etc/GMT-9
Etc/GMT0
Etc/Greenwich
Etc/UCT
Etc/UTC
Etc/Universal
Etc/Zulu
Europe/Amsterdam
Europe/Andorra
Europe/Astrakhan
Europe/Athens
Europe/Belfast
Europe/Belgrade
Europe/Berlin
Europe/Bratislava
Europe/Brussels
Europe/Bucharest
Europe/Budapest
Europe/Busingen
Europe/Chisinau
Europe/Copenhagen
Europe/Dublin
Europe/Gibraltar
Europe/Guernsey
Europe/Helsinki
Europe/Isle_of_Man
Europe/Istanbul
Europe/Jersey
Europe/Kaliningrad
Europe/Kiev
Europe/Kirov
Europe/Kyiv
Europe/Lisbon
Europe/Ljubljana
Europe/London
Europe/Luxembourg
Europe/Madrid
Europe/Malta
Europe/Mariehamn
Europe/Minsk
Europe/Monaco
Europe/Moscow
Europe/Nicosia
Europe/Oslo
Europe/Paris
Europe/Podgorica
Europe/Prague
Europe/Riga
Europe/Rome
Europe/Samara
Europe/San_Marino
Europe/Sarajevo
Europe/Saratov
Europe/Simferopol
Europe/Skopje
Europe/Sofia
Europe/Stockholm
Europe/Tallinn
Europe/Tirane
Europe/Tiraspol
Europe/Ulyanovsk
Europe/Uzhgorod
Europe/Vaduz
Europe/Vatican
Europe/Vienna
Europe/Vilnius
Europe/Volgograd
Europe/Warsaw
Europe/Zagreb
Europe/Zaporozhye
Europe/Zurich
GB
GB-Eire
GMT
GMT+0
GMT-0
GMT0
Greenwich
HST
Hongkong
Iceland
Indian/Antananarivo
Indian/Chagos
Indian/Christmas
Indian/Cocos
Indian/Comoro
Indian/Kerguelen
Indian/Mahe
Indian/Maldives
Indian/Mauritius
Indian/Mayotte
Indian/Reunion
Iran
Israel
Jamaica
Japan
Kwajalein
Libya
MET
MST
MST7MDT
Mexico/BajaNorte
Mexico/BajaSur
Mexico/General
NZ
NZ-CHAT
Navajo
PRC
PST8PDT
Pacific/Apia
Pacific/Auckland
Pacific/Bougainville
Pacific/Chatham
Pacific/Chuuk
Pacific/Easter
Pacific/Efate
Pacific/Enderbury
Pacific/Fakaofo
Pacific/Fiji
Pacific/Funafuti
Pacific/Galapagos
Pacific/Gambier
Pacific/Guadalcanal
Pacific/Guam
Pacific/Honolulu
Pacific/Johnston
Pacific/Kanton
Pacific/Kiritimati
Pacific/Kosrae
Pacific/Kwajalein
Pacific/Majuro
Pacific/Marquesas
Pacific/Midway
Pacific/Nauru
Pacific/Niue
Pacific/Norfolk
Pacific/Noumea
Pacific/Pago_Pago
Pacific/Palau
Pacific/Pitcairn
Pacific/Pohnpei
Pacific/Ponape
Pacific/Port_Moresby
Pacific/Rarotonga
Pacific/Saipan
Pacific/Samoa
Pacific/Tahiti
Pacific/Tarawa
Pacific/Tongatapu
Pacific/Truk
Pacific/Wake
Pacific/Wallis
Pacific/Yap
Poland
Portugal
ROC
ROK
Singapore
Turkey
UCT
US/Alaska
US/Aleutian
US/Arizona
US/Central
US/East-Indiana
US/Eastern
US/Hawaii
US/Indiana-Starke
US/Michigan
US/Mountain
US/Pacific
US/Samoa
UTC
Universal
W-SU
WET
Zulu