Files
MemoryBear/web/src/utils/timezones.ts

190 lines
7.8 KiB
TypeScript

/*
* @Author: ZhaoYing
* @Date: 2026-02-02 16:37:10
* @Last Modified by: ZhaoYing
* @Last Modified time: 2026-02-02 16:37:10
*/
/**
* Timezone Configuration Module
*
* Provides:
* - Major world timezone list
* - Timezone to Ant Design locale mapping
* - Dayjs locale imports
*
* Note: Timezone display names are in i18n translation files (zh.ts and en.ts)
* Use i18n.t('timezones.timezone_name') to get localized timezone display names
*
* @module timezones
*/
import en_US from 'antd/locale/en_US';
import en_GB from 'antd/locale/en_GB';
import de_DE from 'antd/locale/de_DE';
import ru_RU from 'antd/locale/ru_RU';
import hi_IN from 'antd/locale/hi_IN';
import zh_CN from 'antd/locale/zh_CN';
import type { Locale } from 'antd/es/locale';
import 'dayjs/locale/zh'
import 'dayjs/locale/hi'
import 'dayjs/locale/ru'
import 'dayjs/locale/de'
import 'dayjs/locale/en-gb'
import 'dayjs/locale/en'
/**
* Major world timezones list
*/
export const timezones = [
'America/Los_Angeles', // Los Angeles, USA
'America/New_York', // New York, USA
'Europe/London', // London, UK
'Europe/Berlin', // Berlin, Germany
'Europe/Moscow', // Moscow, Russia
'Asia/Kolkata', // Kolkata, India
'Asia/Shanghai', // Shanghai, China
// Asia
// 'Asia/Tokyo', // Tokyo, Japan
// 'Asia/Singapore', // Singapore
// 'Asia/Hong_Kong', // Hong Kong, China
// 'Asia/Taipei', // Taipei, Taiwan
// 'Asia/Seoul', // Seoul, South Korea
// 'Asia/Bangkok', // Bangkok, Thailand
// 'Asia/Jakarta', // Jakarta, Indonesia
// 'Asia/Manila', // Manila, Philippines
// 'Asia/Dubai', // Dubai, UAE
// 'Asia/Tashkent', // Tashkent, Uzbekistan
// 'Asia/Riyadh', // Riyadh, Saudi Arabia
// 'Asia/Baku', // Baku, Azerbaijan
// 'Asia/Istanbul', // Istanbul, Turkey
// Europe
// 'Europe/Paris', // Paris, France
// 'Europe/Rome', // Rome, Italy
// 'Europe/Madrid', // Madrid, Spain
// 'Europe/Amsterdam', // Amsterdam, Netherlands
// 'Europe/Vienna', // Vienna, Austria
// 'Europe/Stockholm', // Stockholm, Sweden
// 'Europe/Oslo', // Oslo, Norway
// 'Europe/Copenhagen', // Copenhagen, Denmark
// 'Europe/Zurich', // Zurich, Switzerland
// 'Europe/Athens', // Athens, Greece
// 'Europe/Warsaw', // Warsaw, Poland
// 'Europe/Prague', // Prague, Czech Republic
// 'Europe/Budapest', // Budapest, Hungary
// 'Europe/Belgrade', // Belgrade, Serbia
// North America
// 'America/Chicago', // Chicago, USA
// 'America/Denver', // Denver, USA
// 'America/Toronto', // Toronto, Canada
// 'America/Vancouver', // Vancouver, Canada
// 'America/Mexico_City', // Mexico City, Mexico
// South America
// 'America/Sao_Paulo', // São Paulo, Brazil
// 'America/Buenos_Aires', // Buenos Aires, Argentina
// 'America/Santiago', // Santiago, Chile
// 'America/Lima', // Lima, Peru
// 'America/Bogota', // Bogotá, Colombia
// 'America/Caracas', // Caracas, Venezuela
// Oceania
// 'Australia/Sydney', // Sydney, Australia
// 'Australia/Melbourne', // Melbourne, Australia
// 'Australia/Brisbane', // Brisbane, Australia
// 'Australia/Perth', // Perth, Australia
// 'New_Zealand/Auckland', // Auckland, New Zealand
// Africa
// 'Africa/Cairo', // Cairo, Egypt
// 'Africa/Johannesburg', // Johannesburg, South Africa
// 'Africa/Lagos', // Lagos, Nigeria
// 'Africa/Casablanca', // Casablanca, Morocco
// 'Africa/Nairobi', // Nairobi, Kenya
// 'Africa/Addis_Ababa', // Addis Ababa, Ethiopia
// Other
// 'UTC', // Coordinated Universal Time
];
/**
* Timezone to Ant Design locale mapping
* Key: timezone identifier
* Value: Ant Design locale object
*/
export const timezoneToAntdLocaleMap: Record<string, Locale> = {
// Asia
'Asia/Shanghai': zh_CN, // Shanghai, China - Chinese (Mainland)
'Asia/Kolkata': hi_IN, // Kolkata, India - Hindi
'Europe/Moscow': ru_RU, // Moscow, Russia - Russian
'Europe/Berlin': de_DE, // Berlin, Germany - German
'Europe/London': en_GB, // London, UK - English (UK)
'America/New_York': en_US, // New York, USA - English (US)
'America/Los_Angeles': en_US, // Los Angeles, USA - English (US)
// 'Asia/Tokyo': 'ja_JP', // Tokyo, Japan - Japanese
// 'Asia/Singapore': 'en_SG', // Singapore - English (Singapore)
// 'Asia/Hong_Kong': 'zh_HK', // Hong Kong, China - Chinese (Hong Kong)
// 'Asia/Taipei': 'zh_TW', // Taipei, Taiwan - Chinese (Taiwan)
// 'Asia/Seoul': 'ko_KR', // Seoul, South Korea - Korean
// 'Asia/Bangkok': 'th_TH', // Bangkok, Thailand - Thai
// 'Asia/Jakarta': 'id_ID', // Jakarta, Indonesia - Indonesian
// 'Asia/Manila': 'en_PH', // Manila, Philippines - English (Philippines)
// 'Asia/Dubai': 'ar_AE', // Dubai, UAE - Arabic
// 'Asia/Tashkent': 'uz_UZ', // Tashkent, Uzbekistan - Uzbek
// 'Asia/Riyadh': 'ar_SA', // Riyadh, Saudi Arabia - Arabic
// 'Asia/Baku': 'az_AZ', // Baku, Azerbaijan - Azerbaijani
// 'Asia/Istanbul': 'tr_TR', // Istanbul, Turkey - Turkish
// Europe
// 'Europe/Paris': 'fr_FR', // Paris, France - French
// 'Europe/Rome': 'it_IT', // Rome, Italy - Italian
// 'Europe/Madrid': 'es_ES', // Madrid, Spain - Spanish
// 'Europe/Amsterdam': 'nl_NL', // Amsterdam, Netherlands - Dutch
// 'Europe/Vienna': 'de_AT', // Vienna, Austria - German (Austria)
// 'Europe/Stockholm': 'sv_SE', // Stockholm, Sweden - Swedish
// 'Europe/Oslo': 'nb_NO', // Oslo, Norway - Norwegian
// 'Europe/Copenhagen': 'da_DK', // Copenhagen, Denmark - Danish
// 'Europe/Zurich': 'de_CH', // Zurich, Switzerland - German (Switzerland)
// 'Europe/Athens': 'el_GR', // Athens, Greece - Greek
// 'Europe/Warsaw': 'pl_PL', // Warsaw, Poland - Polish
// 'Europe/Prague': 'cs_CZ', // Prague, Czech Republic - Czech
// 'Europe/Budapest': 'hu_HU', // Budapest, Hungary - Hungarian
// 'Europe/Belgrade': 'sr_RS', // Belgrade, Serbia - Serbian
// North America
// 'America/Chicago': 'en_US', // Chicago, USA - English (US)
// 'America/Denver': 'en_US', // Denver, USA - English (US)
// 'America/Toronto': 'en_CA', // Toronto, Canada - English (Canada)
// 'America/Vancouver': 'en_CA', // Vancouver, Canada - English (Canada)
// 'America/Mexico_City': 'es_MX', // Mexico City, Mexico - Spanish (Mexico)
// South America
// 'America/Sao_Paulo': 'pt_BR', // São Paulo, Brazil - Portuguese (Brazil)
// 'America/Buenos_Aires': 'es_AR', // Buenos Aires, Argentina - Spanish (Argentina)
// 'America/Santiago': 'es_CL', // Santiago, Chile - Spanish (Chile)
// 'America/Lima': 'es_PE', // Lima, Peru - Spanish (Peru)
// 'America/Bogota': 'es_CO', // Bogotá, Colombia - Spanish (Colombia)
// 'America/Caracas': 'es_VE', // Caracas, Venezuela - Spanish (Venezuela)
// Oceania
// 'Australia/Sydney': 'en_AU', // Sydney, Australia - English (Australia)
// 'Australia/Melbourne': 'en_AU', // Melbourne, Australia - English (Australia)
// 'Australia/Brisbane': 'en_AU', // Brisbane, Australia - English (Australia)
// 'Australia/Perth': 'en_AU', // Perth, Australia - English (Australia)
// 'New_Zealand/Auckland': 'en_NZ', // Auckland, New Zealand - English (New Zealand)
// Africa
// 'Africa/Cairo': 'ar_EG', // Cairo, Egypt - Arabic (Egypt)
// 'Africa/Johannesburg': 'en_ZA', // Johannesburg, South Africa - English (South Africa)
// 'Africa/Lagos': 'en_NG', // Lagos, Nigeria - English (Nigeria)
// 'Africa/Casablanca': 'fr_MA', // Casablanca, Morocco - French (Morocco)
// 'Africa/Nairobi': 'en_KE', // Nairobi, Kenya - English (Kenya)
// 'Africa/Addis_Ababa': 'am_ET', // Addis Ababa, Ethiopia - Amharic
// Other
// 'UTC': 'en_US', // Coordinated Universal Time - Default English (US)
};