indic_transliteration_dart
Version: 2.3.83
A Dart library for transliterating Indic scripts and romanizations. This is a Dart port of the indic_transliteration_py library.
License
This library is licensed under the GNU General Public License v3.0.
Supported Platforms
This package works on all Dart platforms:
- Dart VM (standalone Dart applications)
- Flutter (iOS, Android, Web, Desktop)
- Web (browser-based Dart applications)
Features
- Transliterate between various Indic scripts (Devanagari, Bengali, Gujarati, Gurmukhi, Kannada, Malayalam, Oriya, Tamil, Telugu, etc.)
- Convert between romanization schemes (IAST, Harvard-Kyoto, ITRANS, SLP1, Velthuis, WX, etc.)
- Automatic script detection
- Support for toggles and suspended sections in text
- Works on all Dart platforms (Web, Flutter, VM)
Installation
Add this package to your pubspec.yaml:
dependencies:
indic_transliteration_dart: ^2.3.79
Or reference it from git:
dependencies:
indic_transliteration_dart:
git:
url: https://github.com/indic-transliteration/indic_transliteration_dart.git
Quick Start
import 'package:indic_transliteration_dart/indic_transliteration_dart.dart';
void main() {
// Initialize the scheme data (required before first use)
initializeSchemes();
// Transliterate from IAST to Devanagari
final result = transliterate('rāma', fromScheme: iast, toScheme: devanagari);
print(result); // राम
}
API Documentation
Initialization
Before using any transliteration functions, you must initialize the scheme data:
initializeSchemes();
Main Functions
transliterate
The primary function for transliterating text between scripts.
String transliterate(
String data, {
String? fromScheme,
String? toScheme,
SchemeMap? schemeMap,
Map<String, String> togglers = const {},
Set<String> suspendOn = const {},
Set<String> suspendOff = const {},
String maybeUseDravidianVariant = 'no',
})
Parameters:
data(String): The text to transliteratefromScheme(String?, optional): Source scheme name. If not provided, auto-detectedtoScheme(String?, required if schemeMap not provided): Target scheme nameschemeMap(SchemeMap?, optional): Pre-computed SchemeMap for better performancetogglers(Map<String, String>, optional): Token pairs that toggle transliteration on/offsuspendOn(SetsuspendOff(SetmaybeUseDravidianVariant(String, optional): 'no', 'yes', or 'force' for Dravidian variants
Returns: The transliterated string
detect
Automatically detects the script or romanization scheme of a given text.
String detect(String text)
Parameters:
text(String): The text to analyze
Returns: The detected scheme name (e.g., 'devanagari', 'iast', 'hk')
getScheme
Gets a Scheme object by name.
Scheme getScheme(String name)
getSchemeMap
Creates a SchemeMap for transliteration between two schemes.
SchemeMap getSchemeMap(String fromName, String toName)
Scheme Constants
Brahmic Scripts
| Constant | Value |
|---|---|
devanagari |
'devanagari' |
bengali |
'bengali' |
gujarati |
'gujarati' |
gurmukhi |
'gurmukhi' |
kannada |
'kannada' |
malayalam |
'malayalam' |
oriya |
'oriya' |
tamil |
'tamil' |
tamilSup |
'tamil_superscripted' |
tamilSub |
'tamil_subscripted' |
grantha |
'grantha' |
telugu |
'telugu' |
Roman Schemes
| Constant | Value |
|---|---|
hk |
'hk' |
hkDravidian |
'hk_dravidian' |
iast |
'iast' |
iso |
'iso' |
isoVedic |
'iso_vedic' |
itrans |
'itrans' |
itransDravidian |
'itrans_dravidian' |
titus |
'titus' |
optitrans |
'optitrans' |
optitransDravidian |
'optitrans_dravidian' |
kolkata |
'kolkata_v2' |
slp1 |
'slp1' |
velthuis |
'velthuis' |
wx |
'wx' |
Usage Examples
Basic Transliteration
import 'package:indic_transliteration_dart/indic_transliteration_dart.dart';
void main() {
initializeSchemes();
// Roman to Devanagari
print(transliterate('rāma', fromScheme: iast, toScheme: devanagari)); // राम
print(transliterate('rAma', fromScheme: hk, toScheme: devanagari)); // राम
print(transliterate('raama', fromScheme: itrans, toScheme: devanagari)); // राम
print(transliterate('rAma', fromScheme: slp1, toScheme: devanagari)); // राम
// Devanagari to Roman
print(transliterate('राम', fromScheme: devanagari, toScheme: iast)); // rāma
print(transliterate('राम', fromScheme: devanagari, toScheme: hk)); // rAma
// Brahmic to Brahmic
print(transliterate('রাম', fromScheme: bengali, toScheme: devanagari)); // राम
}
Auto-Detection
import 'package:indic_transliteration_dart/indic_transliteration_dart.dart';
void main() {
initializeSchemes();
// Auto-detect the script
print(detect('राम')); // devanagari
print(detect('রাম')); // bengali
print(detect('rāma')); // iast
print(detect('rAma')); // hk
print(detect('raama')); // itrans
// Auto-detect source scheme
final result = transliterate('rAma', toScheme: devanagari);
print(result); // राम (auto-detected as HK)
}
Using Toggles
Toggles allow you to preserve text without transliteration.
import 'package:indic_transliteration_dart/indic_transliteration_dart.dart';
void main() {
initializeSchemes();
// Use ## as toggle marker
final result = transliterate(
'akSa##kSa##ra',
fromScheme: hk,
toScheme: devanagari,
togglers: {'##': '##'},
);
print(result); // अक्षkSaर
}
Using Suspend
Suspend allows you to mark sections that should not be transliterated.
import 'package:indic_transliteration_dart/indic_transliteration_dart.dart';
void main() {
initializeSchemes();
// Use < and > as suspend markers
final result = transliterate(
'<p>nara iti</p>',
fromScheme: hk,
toScheme: devanagari,
suspendOn: {'<'},
suspendOff: {'>'},
);
print(result); // <p>नर इसि</p>
}
Pre-computed SchemeMap
For better performance when transliterating multiple times:
import 'package:indic_transliteration_dart/indic_transliteration_dart.dart';
void main() {
initializeSchemes();
// Create scheme map once
final schemeMap = getSchemeMap(hk, devanagari);
// Reuse the scheme map
print(transliterate('rAma', schemeMap: schemeMap)); // राम
print(transliterate('kRShNa', schemeMap: schemeMap)); // कृष्ण
}
Dravidian Variants
Some schemes have Dravidian-specific variants:
import 'package:indic_transliteration_dart/indic_transliteration_dart.dart';
void main() {
initializeSchemes();
// Use Dravidian variant when detected or forced
final result = transliterate(
'nada',
fromScheme: itrans,
toScheme: kannada,
maybeUseDravidianVariant: 'yes',
);
}
Additional Information
- This package is a Dart port of indic_transliteration_py
- Scheme data is auto-generated from TOML files in the common_maps directory
- The package works on all Dart platforms: Web, Flutter, and VM
- No file I/O or asset bundles required - all data is generated at compile time