Convert numbers, dates, and times into words — in 7+ languages, with style.
Harfizer is a powerful and extensible package for converting numbers, dates, and times into human-readable words — now supporting 7+ languages including 🇮🇷 Persian, 🇫🇷 French, 🇯🇵 Japanese, 🇨🇳 Chinese, 🇷🇺 Russian, 🇩🇪 German, and 🇪🇸 Spanish.
Built with a plugin-based architecture, Harfizer allows seamless internationalization and high configurability.
If you prefer a language other than English, see the respective documentation above or at the end of this document.
- ✅ Convert numbers (integers, decimals, negatives)
- ✅ Convert Gregorian or Jalali dates
- ✅ Convert time (HH:mm) to natural text
- ✅ Supports 66-digit numbers
- ✅ 7+ language plugins — easily extendable
- ✅ Customizable output with options
- 🌍 Multilingual support (7+ languages and growing)
- 🔢 Handles large numbers (up to 66 digits, decimals, negatives)
- 📅 Date and time conversion with natural phrasing
- 🔌 Plugin-based and highly extensible
- ⚙️ Customizable with
ConversionOptions
- ✅ Built with TypeScript — fully typed, safe, and modern
Flag | Language | Plugin |
---|---|---|
🇬🇧 | English | ✅ EnglishLanguagePlugin |
🇮🇷 | Persian | ✅ PersianLanguagePlugin |
🇫🇷 | French | ✅ FrenchLanguagePlugin |
🇯🇵 | Japanese | ✅ JapaneseLanguagePlugin |
🇨🇳 | Chinese | ✅ ChineseLanguagePlugin |
🇷🇺 | Russian | ✅ RussianLanguagePlugin |
🇩🇪 | German | ✅ GermanLanguagePlugin |
🇪🇸 | Spanish | ✅ SpanishLanguagePlugin |
More languages coming soon...
Install Harfizer via npm:
npm install harfizer
Import the plugin and the CoreConverter
from the package:
import { CoreConverter, EnglishLanguagePlugin } from 'harfizer';
const englishPlugin = new EnglishLanguagePlugin();
const converter = new CoreConverter(englishPlugin);
Converts an integer, decimal, or negative number to words (digit-by-digit for decimals).
converter.convertNumber("123");
// Output: "one hundred twenty-three"
converter.convertNumber("-456.78");
// Output: "minus four hundred fifty-six point seven eight"
Converts a number with up to 3 digits.
converter.convertTripleToWords(789);
// Output: "seven hundred eighty-nine"
Converts a date string to spoken form.
converter.convertDateToWords("2023/04/05");
// Output: "April 5, two thousand twenty-three"
Converts a time string in "HH:mm" format to spoken form.
converter.convertTimeToWords("09:00");
// Output: "It is nine o'clock"
converter.convertTimeToWords("09:05");
// Output: "It is nine o'clock and five minutes"
import { CoreConverter, EnglishLanguagePlugin } from 'harfizer';
const plugin = new EnglishLanguagePlugin();
const converter = new CoreConverter(plugin);
console.log(converter.convertNumber("123"));
console.log(converter.convertDateToWords("2023/04/05"));
console.log(converter.convertTimeToWords("09:05"));
Customize your number output:
const options = {
customZeroWord: "nil",
customNegativeWord: "negative",
customSeparator: " "
};
converter.convertNumber("-123", options);
// Output: "negative one hundred twenty-three"
MIT
Open an issue or PR on GitHub! Contributions welcome 🌟