दस्तावेज़ीकरण
LocaleDB के डेटा, पाइपलाइन और आर्किटेक्चर के बारे में आपको जो कुछ भी जानने की आवश्यकता है।
अवलोकन
LocaleDB अंतरराष्ट्रीय एप्लिकेशन बनाने वाले डेवलपर्स के लिए एक व्यापक, ओपन-सोर्स स्थानीयकरण विश्वकोश है।
250+ देश
114 भाषाएँ
161 मुद्राएँ
9,415 हवाई अड्डे
प्रमुख विशेषताएँ
- आधिकारिक स्रोतों से व्यापक डेटा (CLDR, विश्व बैंक, mledoze, libphonenumber)
- स्थिर पीढ़ी - रनटाइम डेटाबेस की आवश्यकता नहीं है
- 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, OpenFlights (MWGG)
कच्चा डेटा डाउनलोड करें
pnpm update:data फ़ाइलों को data/ सबडायरेक्टरी में डाउनलोड करता है
कच्ची डेटा फ़ाइलें
JSON, CSV, और XML फ़ाइलें data/ में संग्रहीत हैं
प्रक्रिया और मर्ज
pnpm build:data प्राथमिकता नियमों के साथ स्रोतों को मर्ज करता है
जेनरेट किया गया JSON
व्यक्तिगत देश, भाषा और मुद्रा फ़ाइलें
स्टेटिक साइट जनरेशन
Next.js 5,868+ स्टेटिक पेज बनाता है
डेटा स्रोत प्राथमिकता
जब कई स्रोत समान फ़ील्ड प्रदान करते हैं, तो हम एक सुसंगत प्राथमिकता प्रणाली का उपयोग करते हैं:
- •देश के नाम: CLDR > mledoze > SimpleLocalize
- •जनसंख्या: विश्व बैंक > mledoze > SimpleLocalize
- •फ़ोन डेटा: 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.
प्रोजेक्ट संरचना
प्रमुख निर्देशिकाएं और उनके उद्देश्य।
localedb/
├── data/ # जेनरेट की गई JSON फ़ाइलें और कच्चा स्रोत डेटा
│ ├── countries/ # 250 country JSON files
│ ├── languages/ # 114 language JSON files
│ ├── currencies/ # 161 currency JSON files
│ ├── _index_*.json # Lightweight indices
│ └── _meta.json # Build metadata
├── 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 चलाएँ