Skip to content

Commit 878e101

Browse files
ecogetawaySanjay Localization BotclaudeSanjay Charicursoragent
authored
feat: Add Hindi (hi) localization to status page (#2193)
* feat: Add Hindi (hi) localization to status page - Add complete Hindi translation (135 strings) for status page UI - Update locale registry to include Hindi language option - Integrate date-fns Hindi locale for date/time formatting - Add Hindi metadata: name='हिंदी', flag='🇮🇳' Locale addition follows the same pattern as existing locales (en, fr, de, tr). All string interpolation placeholders preserved for dynamic content. Type-safe locale system ensures compile-time validation. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(i18n): polish Hindi status page translations Address review feedback with clearer chart legend wording, shorter status badge labels, and consistent Hindi subscribe terminology. Co-authored-by: Cursor <cursoragent@cursor.com> --------- Co-authored-by: Sanjay Localization Bot <sanjay@localization-engine.local> Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Sanjay Chari <sanjayc@Sanjays-MacBook-Air.local> Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent 71f3476 commit 878e101

2 files changed

Lines changed: 141 additions & 2 deletions

File tree

apps/status-page/messages/hi.json

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
{
2+
"Y9HHck": "प्रमाणित करें",
3+
"1QcGkA": "स्थिति पृष्ठ तक पहुंचने के लिए जादू लिंक प्राप्त करने के लिए अपना ईमेल दर्ज करें। नोट: केवल अनुमोदित डोमेन से ईमेल स्वीकार किए जाते हैं।",
4+
"txkW56": "जमा किया जा रहा है...",
5+
"wSZR47": "जमा करें",
6+
"OrFVks": "अपने इनबॉक्स को जांचें!",
7+
"n36zhX": "ईमेल में लिंक पर क्लिक करके स्थिति पृष्ठ तक पहुंचें।",
8+
"qIAQSi": "संरक्षित पृष्ठ",
9+
"lbw10C": "स्थिति पृष्ठ तक पहुंचने के लिए पासवर्ड दर्ज करें।",
10+
"t262xH": "ईमेल और redirectTo आवश्यक हैं",
11+
"DwevKz": "साइन इन के दौरान अनपेक्षित त्रुटि हुई",
12+
"xOqgA3": "प्रवेश प्रतिबंधित",
13+
"U2RCyj": "यह स्थिति पृष्ठ केवल विशिष्ट IPv4 नेटवर्क से सुलभ है। प्रवेश प्राप्त करने के लिए अपने नेटवर्क प्रशासक से संपर्क करें।",
14+
"Ppx673": "रिपोर्ट",
15+
"JCMXwP": "रखरखाव",
16+
"I7B7SH": "कोई रखरखाव नहीं मिला",
17+
"OSI607": "इस स्थिति पृष्ठ के लिए कोई रखरखाव नहीं मिला।",
18+
"a9S/OH": "रखरखाव नहीं मिला",
19+
"HSv9BP": "आप जिस रखरखाव की तलाश कर रहे हैं वह मौजूद नहीं है।",
20+
"VL1Y/1": "रिपोर्ट नहीं मिली",
21+
"Ew1f8q": "आप जिस रिपोर्ट की तलाश कर रहे हैं वह मौजूद नहीं है।",
22+
"wkVkCX": "सफलतापूर्वक अनसब्सक्राइब किया गया",
23+
"9qFG9F": "अनसब्सक्राइब करने में विफल",
24+
"PV34S9": "अमान्य सदस्यता टोकन",
25+
"ar0fZ/": "यह सदस्यता टोकन अब वैध नहीं है। आप पहले से अनसब्सक्राइब हो सकते हैं या लिंक की समय सीमा समाप्त हो सकती है।",
26+
"orvpWh": "वापस जाएं",
27+
"K8kTfz": "स्थिति पृष्ठ पर अपडेट प्राप्त करने के लिए अपनी सदस्यता प्रबंधित करें।",
28+
"3JgeEq": "{date} को अनसब्सक्राइब किया गया",
29+
"RXTZq5": "अनसब्सक्राइब किया जा रहा है...",
30+
"cctOA4": "अनसब्सक्राइब करें",
31+
"jHSHdV": "क्या आप इस स्थिति पृष्ठ से अनसब्सक्राइब करना चाहते हैं? आप अब अपडेट नहीं प्राप्त करेंगे।",
32+
"47FYwb": "रद्द करें",
33+
"awr0AJ": "मॉनिटर नहीं मिला",
34+
"CVsoUM": "आप जिस मॉनिटर की तलाश कर रहे हैं वह मौजूद नहीं है।",
35+
"BRGcS0": "वैश्विक विलंबता",
36+
"9vqdq3": "क्षेत्र विलंबता",
37+
"fFOayY": "क्षेत्र",
38+
"u81G9+": "अपटाइम",
39+
"i2FBWn": "जांच",
40+
"G5Lt80": "विभिन्न क्वांटाइल के आधार पर सभी सक्रिय क्षेत्रों से एकत्रित विलंबता।",
41+
"YV7rXP": "क्षेत्र द्वारा विलंबता",
42+
"6zzIEm": "p75 क्वांटाइल के अनुसार क्षेत्र विलंबता, सबसे धीमे क्षेत्र द्वारा क्रमबद्ध। 6 क्षेत्रों तक की तुलना करें।",
43+
"6pCzRs": "कुल अपटाइम",
44+
"zL23+z": "अपटाइम और उपलब्धता के मुख्य मूल्य, पारदर्शी।",
45+
"gjBiyj": "लोड हो रहा है...",
46+
"/72cxa": "अमान्य या समाप्त लिंक",
47+
"R10mIw": "यह अनसब्सक्राइब लिंक अब वैध नहीं है। आप पहले से अनसब्सक्राइब हो सकते हैं।",
48+
"yFi/8F": "सफलतापूर्वक अनसब्सक्राइब किया गया",
49+
"CmelO7": "आप अब {pageName} से ईमेल सूचनाएं प्राप्त नहीं करेंगे।",
50+
"JqiqNj": "कुछ गलत हुआ",
51+
"TnvU0H": "कृपया पुनः प्रयास करें या यदि समस्या बनी रहे तो सहायता से संपर्क करें।",
52+
"uW0VWi": "सूचनाओं से अनसब्सक्राइब करें",
53+
"deCYKO": "आप {email} को {pageName} स्थिति अपडेट से अनसब्सक्राइब करने वाले हैं।",
54+
"5HvAzP": "{email} में अपडेट प्राप्त करने के लिए तैयार!",
55+
"ywcUO4": "बस एक पल - हम आपकी सदस्यता की पुष्टि कर रहे हैं",
56+
"0Azlrb": "प्रबंधित करें",
57+
"cyR7Kh": "वापस",
58+
"2yCGR2": "क्लिपबोर्ड में लिंक कॉपी किया गया",
59+
"u5aHb4": "लिंक कॉपी करें",
60+
"m5BctM": "चार्ट विवरण",
61+
"csFahs": "सापेक्ष",
62+
"oBoa2n": "प्रीसेट",
63+
"gdve5D": "कस्टम श्रेणी",
64+
"mOFG3K": "शुरुआत",
65+
"3JVa6k": "अंत",
66+
"79eRW1": "पुष्टि की जा रही है...",
67+
"dX7+Rv": "पुष्टि हुई",
68+
"m0fapd": "पुष्टि करने में विफल",
69+
"sy+pv5": "ईमेल",
70+
"9Utk00": "सदस्यता अपडेट की जा रही है...",
71+
"Eq5gCU": "सदस्यता अपडेट की गई",
72+
"qp+wDV": "सदस्यता अपडेट करने में विफल",
73+
"d/jCcy": "विशिष्ट घटकों की सदस्यता लें",
74+
"FlVuUh": "कोई घटक सदस्यता के लिए नहीं",
75+
"8aUjqQ": "इस स्थिति पृष्ठ में कोई घटक सदस्यता के लिए नहीं है।",
76+
"5sg7KC": "पासवर्ड",
77+
"IGY48m": "सदस्यता की जा रही है...",
78+
"Pgb3Xj": "सदस्यता ली गई",
79+
"WOH7Yj": "सदस्यता लेने में विफल",
80+
"L7z2/k": "इस पृष्ठ में कोई घटक सदस्यता के लिए नहीं है।",
81+
"BQBZU+": "सभी सिस्टम कार्यरत",
82+
"Dnob31": "कार्यरत",
83+
"b9fOA1": "खराब प्रदर्शन",
84+
"VQDmmK": "खराब",
85+
"80EXUh": "डाउनटाइम प्रदर्शन",
86+
"JOZGPR": "डाउनटाइम",
87+
"dudqv/": "अनुरक्षण",
88+
"D3rOMr": "डेटा नहीं",
89+
"W6nSYE": "हल किया",
90+
"1P6GMj": "निगरानी",
91+
"7cv4Uf": "पहचाना गया",
92+
"/GKH/w": "जांच",
93+
"myq2ZL": "सामान्य",
94+
"KN7zKn": "त्रुटि",
95+
"kkpP2k": "आज",
96+
"2wsjxR": "जारी",
97+
"2syGZB": "रिपोर्ट समाधान किया गया",
98+
"FDReLp": "कोई हाल की सूचनाएं नहीं",
99+
"qDj0JR": "पिछले 7 दिनों में कोई रिपोर्ट नहीं।",
100+
"u++vY3": "कोई रिपोर्ट नहीं मिली",
101+
"2HGztY": "इस स्थिति पृष्ठ के लिए कोई रिपोर्ट नहीं मिली।",
102+
"50SA6J": "कोई सार्वजनिक मॉनिटर नहीं",
103+
"FHrzf5": "इस पृष्ठ पर कोई सार्वजनिक मॉनिटर जोड़े गए नहीं हैं।",
104+
"3cc4Ct": "प्रकाश",
105+
"tOdNiY": "डार्क",
106+
"+CwN9C": "सिस्टम",
107+
"EQpyb8": "थीम टॉगल करें",
108+
"uPb/gh": "अपडेट प्राप्त करें",
109+
"8OoV56": "RSS फीड प्राप्त करें",
110+
"Auj/Ki": "Atom फीड प्राप्त करें",
111+
"SyYroX": "JSON अपडेट प्राप्त करें",
112+
"rptmhC": "Slack में स्थिति अपडेट के लिए, नीचे दिया गया पाठ किसी भी चैनल में पेस्ट करें।",
113+
"PSqtlY": "SSH के माध्यम से स्थिति प्राप्त करें",
114+
"NOyDVq": "द्वारा संचालित",
115+
"krEziQ": "संपर्क में रहें",
116+
"3Vaz8F": "स्थिति ट्रैकर",
117+
"apbxET": "दिन {n} की स्थिति",
118+
"GbVCQb": "अनपिन करने के लिए फिर से क्लिक करें",
119+
"heezSZ": "({duration} में)",
120+
"lKJjwW": "({timeFromLast} पहले)",
121+
"VaZnIX": "({duration} के लिए)",
122+
"jC7BY1": "{duration} भर में",
123+
"tzMNF3": "स्थिति",
124+
"ZvKSfJ": "घटनाएं",
125+
"xJrRMG": "मॉनिटर",
126+
"tKMlOc": "मेनू",
127+
"8kyEWd": "एक क्वांटाइल आपके डेटासेट में एक विशिष्ट प्रतिशतक का प्रतिनिधित्व करता है।",
128+
"kd0Igx": "उदाहरण के लिए, p50 50वां प्रतिशतक है - वह बिंदु जिसके नीचे 50% डेटा आता है। उच्च प्रतिशतक अधिक डेटा शामिल करते हैं और ऊपरी श्रेणी को उजागर करते हैं।",
129+
"CYs0LF": "घटनाओं का इतिहास देखें",
130+
"sjzDbu": "Slack",
131+
"q0qMyV": "RSS",
132+
"9y9QQh": "JSON",
133+
"waUHa4": "SSH",
134+
"cVqFq/": "जब भी कोई रिपोर्ट बनाई जाती है या समाधान की जाती है तो ईमेल सूचनाएं प्राप्त करें",
135+
"gczcC5": "सदस्यता लें",
136+
"45YlLU": "अपडेट प्राप्त करने के लिए अपने ईमेल की पुष्टि करें और आप तैयार हैं।"
137+
}

packages/locales/index.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { Locale as DateFnsLocale } from "date-fns/locale";
2-
import { de, enUS, fr, tr } from "date-fns/locale";
2+
import { de, enUS, fr, hi, tr } from "date-fns/locale";
33

4-
export const locales = ["en", "fr", "de", "tr"] as const;
4+
export const locales = ["en", "fr", "de", "tr", "hi"] as const;
55

66
export type Locale = (typeof locales)[number];
77

@@ -12,11 +12,13 @@ export const localeDetails: Record<Locale, { name: string; flag: string }> = {
1212
fr: { name: "Français", flag: "🇫🇷" },
1313
de: { name: "Deutsch", flag: "🇩🇪" },
1414
tr: { name: "Türkçe", flag: "🇹🇷" },
15+
hi: { name: "हिंदी", flag: "🇮🇳" },
1516
};
1617

1718
export const dateFnsLocales: Record<Locale, DateFnsLocale> = {
1819
en: enUS,
1920
fr,
2021
de,
2122
tr,
23+
hi,
2224
};

0 commit comments

Comments
 (0)