Packages

Translations as code - Gleam i18n inspired by Paraglide

Current section

Files

Jump to
dachshund README.md
Raw

README.md

![Dachshund Mascot](https://raw.githubusercontent.com/tantalumv/Dachshund/main/assets/mascot-sit.svg)
> [!NOTE]
> This repository is still Alpha, expect breaking changes and incomplete features.
# Dachshund
**A Gleam i18n library inspired by Paraglide β€” Translations as Code**
Dachshund is a type-safe internationalization (i18n) library for Gleam. It treats translations as first-class Gleam code, giving you compile-time safety, autocomplete, and refactoring support for your multilingual applications.
## Features
- πŸš€ **Zero Dependencies** β€” Nothing. Not even a leash. Pure Gleam all the way down.
- 🎯 **Strategy-Based Detection** β€” Cookie, localStorage, URL, browser language β€” all in Gleam.
- πŸ”’ **Type Safety** β€” The compiler catches bugs before your users do.
## Installation
```bash
gleam add dachshund
```
## Usage
### 1. Write Translations
Create translation modules for each locale:
```gleam
// translations/en.gleam
pub const welcome = "Welcome to Dachshund!"
pub const goodbye = "Goodbye"
// translations/de.gleam
pub const welcome = "Willkommen bei Dachshund!"
pub const goodbye = "Auf Wiedersehen"
// translations/zh_cn.gleam
pub const welcome = "ζ¬’θΏŽδ½Ώη”¨ Dachshund!"
pub const goodbye = "再见"
```
### 2. Detect Locale
Use strategies to detect the user's preferred language:
```gleam
import dachshund/strategy
const my_strategy = [
strategy.local_storage("locale"),
strategy.preferred_language(),
strategy.base_locale(translations.En),
]
```
### 3. Import & Use
Import the correct module based on locale and use like any value:
```gleam
import translations/en as t
pub fn render() -> String {
t.welcome // "Welcome to Dachshund!"
}
```
## Why Dachshund?
- **No runtime lookups** β€” Translations are compiled into your code
- **No missing keys** β€” The compiler ensures all translations exist
- **No typos** β€” Use Gleam's type system, not string keys
- **IDE support** β€” Get autocomplete and go-to-definition for free
## License
MIT