दस्तावेज़ीकरण
LocaleDB के डेटा, पाइपलाइन और आर्किटेक्चर के बारे में आपको जो कुछ भी जानने की आवश्यकता है।
अवलोकन
LocaleDB अंतरराष्ट्रीय एप्लिकेशन बनाने वाले डेवलपर्स के लिए एक व्यापक, ओपन-सोर्स स्थानीयकरण विश्वकोश है।
250+ देश
100+ भाषाएँ
150+ मुद्राएँ
9,415 हवाई अड्डे
प्रमुख विशेषताएँ
- आधिकारिक स्रोतों से व्यापक डेटा (CLDR, विश्व बैंक, mledoze, libphonenumber, IANA tz, libaddressinput, Wikidata)
- स्थिर पीढ़ी - रनटाइम डेटाबेस की आवश्यकता नहीं है
- MIT लाइसेंस प्राप्त और समुदाय द्वारा संचालित
- अरबी के लिए RTL समर्थन के साथ 11 भाषाएँ
शुरुआत करें
रिपॉजिटरी को क्लोन करें और मिनटों में लोकेल डेटा एक्सप्लोर करना शुरू करें।
# रिपॉजिटरी को क्लोन करें
git clone https://github.com/ozkurkculer/localedb.git
cd localedb
# डिपेंडेंसी इंस्टॉल करें
pnpm install
# स्रोतों से कच्चा डेटा डाउनलोड करें
pnpm update:data
# प्रक्रिया करें और JSON फ़ाइलें जेनरेट करें
pnpm build:data
# डेवलपमेंट सर्वर शुरू करें
pnpm devडेटा पाइपलाइन
LocaleDB कई आधिकारिक स्रोतों से डेटा को मल्टी-स्टेज पाइपलाइन के माध्यम से प्रोसेस करता है।
बाहरी स्रोत
CLDR, mledoze, विश्व बैंक, libphonenumber, IANA tz, libaddressinput, Wikidata, mwgg/Airports, IP2Location
कच्चा डेटा डाउनलोड करें
pnpm update:data फ़ाइलों को data/ सबडायरेक्टरी में डाउनलोड करता है
कच्ची डेटा फ़ाइलें
JSON, CSV, और XML फ़ाइलें data/ में संग्रहीत हैं
प्रक्रिया और मर्ज
pnpm build:data प्राथमिकता नियमों के साथ स्रोतों को मर्ज करता है
जेनरेट किया गया JSON
व्यक्तिगत देश, भाषा और मुद्रा फ़ाइलें
स्टेटिक साइट जनरेशन
Next.js 5,868+ स्टेटिक पेज बनाता है
डेटा स्रोत प्राथमिकता
जब कई स्रोत समान फ़ील्ड प्रदान करते हैं, तो हम एक सुसंगत प्राथमिकता प्रणाली का उपयोग करते हैं:
- •देश के नाम: CLDR > mledoze
- •जनसंख्या: विश्व बैंक > CLDR
- •फ़ोन डेटा: libphonenumber XML (आधिकारिक)
डेटा स्कीमा
देश, भाषा और मुद्रा JSON फ़ाइलों की विस्तृत संरचना।
देश स्कीमा
data/countries/{CODE}.jsonbasicsनाम, राजधानी, निर्देशांक, महाद्वीप, जनसंख्या, क्षेत्रफल, भाषाएँ, झंडा इमोजी
codesISO 3166, BCP-47, FIFA, IOC, FIPS, और अन्य अंतर्राष्ट्रीय कोड
currencyकोड, प्रतीक, स्थिति, विभाजक, दशमलव अंक, पैटर्न, उदाहरण
dateTimeतारीख/समय प्रारूप (पूर्ण, लंबा, मध्यम, छोटा), सप्ताह का पहला दिन, समय क्षेत्र
numberFormatदशमलव/हजार विभाजक, अंक समूहन, संख्या प्रणाली
phoneकॉलिंग कोड, पैटर्न, प्रारूप नियम, सब्सक्राइबर नंबर की लंबाई
addressFormatप्रारूप टेम्पलेट, डाक कोड रेगेक्स और उदाहरण
localeलेखन दिशा, माप प्रणाली, तापमान पैमाना, कागज का आकार, ड्राइविंग साइड
airportsIATA, ICAO, निर्देशांक, समय क्षेत्र के साथ हवाई अड्डों की सूची
भाषा स्कीमा
data/languages/{code}.jsoncodeISO 639-1 कोड
nameअंग्रेजी नाम
nativeNameमूल नाम
directionपाठ दिशा (ltr या rtl)
countriesदेश कोड की सूची जहां बोली जाती है
मुद्रा स्कीमा
data/currencies/{CODE}.jsoncodeISO 4217 कोड
nameमुद्रा का नाम
symbolमुद्रा प्रतीक
symbolPositionपहले या बाद में
separatorsदशमलव और हजार विभाजक
decimalDigitsमानक दशमलव स्थान
patternफॉर्मेटिंग पैटर्न
exampleफॉर्मेट किया गया उदाहरण
countriesइस मुद्रा का उपयोग करने वाले देश कोड की सूची
Data Export
Build custom locale-data exports with the /export wizard. No scrapers, no scripts, no signups.
4-Step Wizard
1. Pick a dataset
Choose Countries, Currencies, Languages, or Airports.
2. Select entities
Searchable, paginated checkbox grid (60 per page) with select-all-filtered helpers. Up to 500 entities per request.
3. Choose fields
Collapsible field tree generated from the dataset schema. Per-group indeterminate state, sensible defaults.
4. Format & download
Pick JSON (pretty), JSON (minified), CSV (RFC 4180, flattened), or ZIP (one JSON file per entity).
Supported Formats
- JSON (pretty) — indented, human-readable
- JSON (minified) — compact, single-line
- CSV — RFC 4180, dot-notation keys for nested fields
- ZIP — one JSON file per entity, ideal for batch processing
API Endpoint
Server-side serialization happens at POST /api/export (Node runtime, maxDuration: 30). Pass dataset, entities, fields, and format in the JSON body. Set preview: true for an inline first-record JSON response without Content-Disposition.
POST /api/export
Content-Type: application/json
{
"dataset": "countries",
"entities": ["TR", "US", "DE"],
"fields": ["basics.name", "currency.code", "phone.callingCode"],
"format": "json",
"preview": false
}Limits: max 500 entities per request, dataset must be one of countries / currencies / languages / airports.
npm पैकेज और CLI
LocaleDB को अपने कोड में इस्तेमाल करें: एक टाइप की गई लाइब्रेरी जो ऑफ़लाइन काम करती है, और एक कमांड लाइन टूल जो आपका चुना हुआ डेटा आपके प्रोजेक्ट में लिखता है।
बीटा: 1.0 से पहले API बदल सकते हैं।
@localedb/core
हर डेटासेट Node.js के लिए टाइप किए गए, सिंक्रोनस फ़ंक्शन के रूप में। ब्राउज़र में, @localedb/core/data/* से अलग-अलग रिकॉर्ड JSON के रूप में इम्पोर्ट करें।
npm install @localedb/core
import { getCountry, getCurrency } from "@localedb/core";
getCountry("TR")?.currency.symbol; // "₺"
getCountry("DEU")?.dateTime.datePatterns; // alpha-2 or alpha-3
getCurrency("EUR")?.countries; // ["AT", "BE", "DE", ...]@localedb/cli
localedb कमांड। init पूछता है कि आपको क्या चाहिए और JSON, CSV या टाइप की गई TypeScript फ़ाइलें बनाता है; sync उन्हें अप-टू-डेट रखता है।
npx @localedb/cli init
localedb get country TR --fields currency,dateTime.datePatterns
localedb export countries TR DE FR --format ts --out src/locales/countries.ts
localedb sync --checkgetएक रिकॉर्ड को JSON के रूप में दिखाता हैexportरिकॉर्ड को JSON, CSV या TypeScript के रूप में stdout, एक फ़ाइल या हर रिकॉर्ड के लिए अलग फ़ाइल में एक्सपोर्ट करता हैlistकिसी डेटासेट को टेबल या JSON के रूप में दिखाता हैsearchदेशों को कोड या नाम से खोजता हैinitlocaledb.config.json को चरण-दर-चरण बनाता है और फ़ाइलें तैयार करता हैsyncकॉन्फ़िगर की गई फ़ाइलें फिर से बनाता है; पुरानी होने पर --check CI को फ़ेल कर देता है
कोड MIT लाइसेंस के तहत है। पैकेज में शामिल डेटा अपने स्रोतों के लाइसेंस बनाए रखता है, जिनमें से कुछ share-alike हैं; पैकेज में NOTICE देखें।
प्रोजेक्ट संरचना
प्रमुख निर्देशिकाएं और उनके उद्देश्य।
localedb/
├── data/ # जेनरेट की गई JSON फ़ाइलें और कच्चा स्रोत डेटा
│ ├── countries/ # 250 country JSON files
│ ├── languages/ # 100+ language JSON files
│ ├── currencies/ # 150+ currency JSON files
│ ├── _index_*.json # Lightweight indices
│ └── _meta.json # Build metadata
├── packages/
│ ├── core/ # @localedb/core: types + data API
│ └── cli/ # @localedb/cli: the localedb command
├── scripts/ # डेटा पाइपलाइन स्क्रिप्ट (update-data.ts, build-data.ts)
│ ├── update-data.ts # Download raw data
│ ├── build-data.ts # Process & generate JSON
│ └── generate-changelog.ts
├── src/
│ ├── app/[locale]/ # Next.js pages (i18n)
│ ├── components/ # React components
│ ├── lib/ # Data access functions
│ ├── config/ # Site & nav config
│ └── i18n/ # Internationalization setup
└── messages/ # 11 भाषाओं के लिए अनुवाद फ़ाइलेंस्क्रिप्ट संदर्भ
डेटा प्रबंधन और विकास के लिए उपलब्ध कमांड।
| Command | Description |
|---|---|
pnpm update:data | सभी बाहरी स्रोतों से कच्चा डेटा डाउनलोड करें |
pnpm update:data cldr worldbank | केवल विशिष्ट स्रोत डाउनलोड करें |
pnpm build:data | कच्चे डेटा को प्रोसेस करें और JSON फ़ाइलें जेनरेट करें |
pnpm dev | डेवलपमेंट सर्वर शुरू करें |
pnpm build | प्रोडक्शन बिल्ड (स्टेटिक साइट जनरेशन) |
npx tsx scripts/check-i18n.ts | गायब अनुवाद कुंजियों की जाँच करें और ऑटो-फिल करें |
pnpm version patch | संस्करण बढ़ाएं और स्वचालित रूप से चेंजलॉग जेनरेट करें |
डेटा योगदान
LocaleDB में सुधार और सुधारों में योगदान कैसे करें।
योगदान कार्यप्रवाह
- 1GitHub रिपॉजिटरी को Fork करें और अपनी स्थानीय मशीन पर क्लोन करें
- 2build-data.ts में स्रोत प्राथमिकता संपादित करें या अपस्ट्रीम स्रोतों को सुधार सबमिट करें
- 3messages/{lang}.json को संपादित करके और check-i18n चलाकर अनुवाद जोड़ें
- 4प्रति PR एक परिवर्तन और आधिकारिक स्रोतों के लिंक के साथ एक Pull Request सबमिट करें
दिशानिर्देश
- प्रति Pull Request एक परिवर्तन
- हमेशा आधिकारिक स्रोतों (CLDR, सरकारी साइटें, ISO मानक) से लिंक करें
- यह सत्यापित करने के लिए pnpm build:data चलाएँ कि आपके परिवर्तन सही ढंग से मर्ज हुए हैं
- स्पष्ट, वर्णनात्मक कमिट संदेश
अंतर्राष्ट्रीयकरण
LocaleDB 11 भाषाओं का समर्थन करता है और अधिक की योजना है।
समर्थित भाषाएँ
अंग्रेजी, तुर्की, चीनी, हिंदी, स्पेनिश, फ्रेंच, अरबी, बंगाली, पुर्तगाली, रूसी, जापानी
अनुवाद फ़ाइलें
सभी अनुवाद messages/{lang}.json फ़ाइलों में संग्रहीत हैं
RTL समर्थन
अरबी (ar) और अन्य RTL भाषाओं के लिए पूर्ण दाएं-से-बाएं समर्थन
नई भाषा जोड़ना
- 1एक नई messages/{lang}.json फ़ाइल बनाएँ
- 2messages/en.json से सभी कुंजियों का अनुवाद करें
- 3src/i18n/routing.ts में लोकेल कोड जोड़ें
- 4पूर्णता सत्यापित करने के लिए npx tsx scripts/check-i18n.ts चलाएँ