Translations
AliasVault supports multiple languages across all applications. Currently supported languages:
- English
- Dutch
Adding a New Language
To add a new language to AliasVault, follow these steps in order:
Step 1: Configure Crowdin Integration
- Update crowdin.yml: Add the new language identifier to the
crowdin.yml
file in the root of the repository - Crowdin will automatically:
- Fetch changes from the
main
branch - Offer new content for translation in the Crowdin web interface
- Create translation files for the new language
- Fetch changes from the
Step 2: Web App (Blazor WASM)
- Add language to LanguageService: Update
apps/server/AliasVault.Client/Services/LanguageService.cs
with the new language identifier - Translation files to create (optional, Crowdin should make a PR for this automatically):
apps/server/AliasVault.Client/wwwroot/locales/{language-code}.json
apps/server/AliasVault.Client/Resources/{language-code}.resx
files
Step 3: Browser Extension
- Add language identifier to config: Update
/apps/browser-extension/src/utils/i18n.ts
and insert new language based on existing structure - Create language directory:
apps/browser-extension/src/locales/{language-code}/
- Create translation files (optional, Crowdin should make a PR for this automatically):
{language-code}/auth.json
{language-code}/common.json
{language-code}/emails.json
{language-code}/settings.json
Step 4: Mobile App - React Native
- Add language identifier to config: Update
/apps/mobile-app/i18n/index.ts
and insert new language based on existing structure 2 Create translation file (optional, Crowdin should make a PR for this automatically):apps/mobile-app/i18n/locales/{language-code}.json
Step 5: Mobile App - iOS Native
Location: apps/mobile-app/ios/
- Add language in Xcode:
- Open workspace in Xcode
- Go to “AliasVault” > Project settings “Info” > Localizations
- Add the desired language
- Translation files to create (optional, Crowdin should make a PR for this automatically):
AliasVault/{language-code}.lproj/Localizable.strings
AliasVault/{language-code}.lproj/InfoPlist.strings
Autofill/{language-code}.lproj/Localizable.strings
VaultUI/{language-code}.lproj/Localizable.strings
Step 6: Mobile App - Android Native
Location: apps/mobile-app/android/app/src/main/res/
- Update locales config: Add the language to
xml/locales_config.xml
- Create translation file (optional, Crowdin should make a PR for this automatically):
values-{language-code}/strings.xml
Translation File Locations Summary
React Native mobile app:
apps/mobile-app/i18n/locales/en.json
apps/mobile-app/i18n/locales/nl.json
Browser Extension:
apps/browser-extension/src/locales/en/**/*.json
apps/browser-extension/src/locales/nl/**/*.json
Web App (Blazor WASM):
apps/server/AliasVault.Client/wwwroot/locales/en.json
apps/server/AliasVault.Client/wwwroot/locales/nl.json
apps/server/AliasVault.Client/Resources/**/*.en.resx
apps/server/AliasVault.Client/Resources/**/*.nl.resx
Android app native:
apps/mobile-app/android/app/src/main/res/values/strings.xml
(default, English)apps/mobile-app/android/app/src/main/res/values-nl/strings.xml
(Dutch)
iOS app native:
apps/mobile-app/ios/AliasVault/en.lproj/Localizable.strings
(default, English)apps/mobile-app/ios/AliasVault/nl.lproj/Localizable.strings
(Dutch)apps/mobile-app/ios/Autofill/en.lproj/Localizable.strings
(default, English)apps/mobile-app/ios/Autofill/nl.lproj/Localizable.strings
(Dutch)apps/mobile-app/ios/VaultUI/en.lproj/Localizable.strings
(default, English)apps/mobile-app/ios/VaultUI/nl.lproj/Localizable.strings
(Dutch)
Crowdin Integration
AliasVault uses Crowdin for translation management with GitHub App integration. The project is configured with a centralized crowdin.yml
file in the root of the repository that manages all translation files across the monorepo.
The Crowdin GitHub App automatically:
- Fetches changes from the
main
branch as soon as they become available - Offers new content for translation in the Crowdin web interface
- Manages translation file synchronization across all applications