language-scripts-map
Version:
[DEPRECATED] A reliable mapping of language codes to their default writing scripts (Latin, Cyrillic, Arabic, Devanagari, etc.).
148 lines (97 loc) โข 4.51 kB
Markdown
**This package is no longer maintained.**
Please use iso-639-1 instead.
See: https://www.npmjs.com/package/iso-639-1
---
Original README below:
---
[](https://www.npmjs.com/package/language-scripts-map)
[](https://opensource.org/licenses/MIT)
[](https://www.typescriptlang.org/)
A reliable mapping of ISO 639-1 language codes to their default writing scripts (using ISO 15924 codes like "Latn", "Cyrl", "Arab", "Deva"). This library is useful for localization engines, font selection tools, language-aware rendering, and multi-language form logic.
## Features
- ๐ฏ Accurate mapping of ISO 639-1 language codes to ISO 15924 script codes
- ๐ฆ Zero runtime dependencies
- ๐ TypeScript-first with strict type checking
- ๐งช Comprehensive test coverage
- ๐ Well-documented API
- ๐ Support for both ESM and CommonJS
- ๐จ Includes script grouping (RTL/LTR)
## Installation
```bash
npm install language-scripts-map
```
## Usage
```typescript
import {
getScriptByLanguageCode,
getLanguagesByScript,
isValidScript,
isScriptMatch,
languageScriptsMap,
SCRIPT_GROUPS,
} from 'language-scripts-map';
// Get script for a language
getScriptByLanguageCode('en'); // returns 'Latn'
getScriptByLanguageCode('ar'); // returns 'Arab'
getScriptByLanguageCode('ru'); // returns 'Cyrl'
// Get languages using a script
getLanguagesByScript('Latn'); // returns ['en', 'fr', 'de', ...]
getLanguagesByScript('Arab'); // returns ['ar', 'fa', 'ur', ...]
// Check if a script is valid
isValidScript('Latn'); // returns true
isValidScript('invalid'); // returns false
// Check if a script matches a language
isScriptMatch('en', 'Latn'); // returns true
isScriptMatch('ar', 'Arab'); // returns true
isScriptMatch('en', 'Arab'); // returns false
// Access the raw mapping data
console.log(languageScriptsMap.en); // 'Latn'
console.log(languageScriptsMap.ar); // 'Arab'
// Access script groups
console.log(SCRIPT_GROUPS.RTL); // ['Arab', 'Hebr', ...]
console.log(SCRIPT_GROUPS.LTR); // ['Latn', 'Cyrl', ...]
```
```typescript
type ISO6391Code = string; // e.g., 'en', 'fr', 'de'
type ISO15924ScriptCode = string; // e.g., 'Latn', 'Cyrl', 'Arab', 'Deva'
interface LanguageScriptMapData {
[]: ISO15924ScriptCode;
}
interface ScriptGroups {
RTL: ISO15924ScriptCode[];
LTR: ISO15924ScriptCode[];
}
```
Gets the default script code for a given language code.
- `languageCode`: ISO 639-1 language code (case-insensitive)
- Returns: The ISO 15924 script code for the language, or undefined if not found
#### `getLanguagesByScript(scriptCode: ISO15924ScriptCode | string): ISO6391Code[]`
Gets all language codes that use a given script.
- `scriptCode`: ISO 15924 script code (case-insensitive)
- Returns: Array of ISO 639-1 language codes that use the script
#### `isValidScript(scriptInput: string): boolean`
Checks if a given script code is valid (exists in the dataset).
- `scriptInput`: ISO 15924 script code to check (case-insensitive)
- Returns: true if the script code exists in the dataset
#### `isScriptMatch(languageCode: ISO6391Code | string, scriptInput: ISO15924ScriptCode | string): boolean`
Checks if a given script is the default script for a language.
- `languageCode`: ISO 639-1 language code (case-insensitive)
- `scriptInput`: ISO 15924 script code to check (case-insensitive)
- Returns: true if the script is the default for the language
### Constants
#### `languageScriptsMap: Readonly<LanguageScriptMapData>`
The primary immutable object/map where keys are ISO 639-1 language codes and values are their default ISO 15924 script codes.
#### `SCRIPT_GROUPS: Readonly<ScriptGroups>`
Groups of scripts by writing direction (RTL/LTR).
## Data Source
The language-to-script mapping data is sourced from the Common Locale Data Repository (CLDR) and official ISO standards. The data represents the default or most common script for each language.
## Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.