Update translation contributing docs (#1383)

This commit is contained in:
Leendert de Borst
2025-11-22 08:04:57 +01:00
committed by Leendert de Borst
parent 85e33a9fcd
commit f7b66ed307
13 changed files with 276 additions and 63 deletions

View File

@@ -28,11 +28,22 @@ Help grow the AliasVault community by:
Help make AliasVault accessible to users worldwide by contributing translations! AliasVault is currently available in English and Dutch, but we're looking for volunteers to help translate it into other languages such as German, French, Spanish, Ukrainian, Italian, and more.
AliasVault translations are managed through [Crowdin](https://crowdin.com/), an online translation platform. If youd like to help translate AliasVault into your native language, please [request access to the Crowdin project](https://crowdin.com/project/aliasvault).
### UI Translations
If you're willing to help, we also encourage you to get in contact via [Discord](https://discord.gg/DsaXMTEtpF) to chat (quickest), or contact us via email at [contact@support.aliasvault.net](mailto:contact@support.aliasvault.net) to discuss the language(s) you are willing to contribute to, and so we can answer any technical questions you might have.
AliasVault UI translations are managed through [Crowdin](https://crowdin.com/), an online translation platform. If you'd like to help translate AliasVault into your native language, please [request access to the Crowdin project](https://crowdin.com/project/aliasvault).
Your translation contributions will help make AliasVault more accessible to privacy-conscious users around the world!
You can also get in contact via [Discord](https://discord.gg/DsaXMTEtpF) to chat, or via email at [contact@support.aliasvault.net](mailto:contact@support.aliasvault.net) to discuss the language(s) you are willing to contribute to, and so we can answer any technical questions you might have.
### Identity Generator Translations
In AliasVault, when creating a new credential AliasVault automatically generates realistic alias identities including: first names, last names and birthdates. For this AliasVault uses dictionaries of possible names per language. You can help to enable AliasVault to generate proper identities in your language too.
**How to help:**
- Create lists of common first names (male and female)
- Create a list of common last names (surnames)
- Optionally: Decade-specific names for more authentic generations
Read the specific instructions on how to contribute here: [Identity Generator Translations](https://docs.aliasvault.net/contributing/identity-generator.html).
## 3. Contributing to the Documentation

View File

@@ -0,0 +1,85 @@
---
layout: default
title: Identity Generator
parent: Contributing
nav_order: 2
---
# Identity Generator Translations
In AliasVault, when creating a new credential, AliasVault automatically generates realistic alias identities including:
- First names (male and female)
- Last names (surnames)
- Email addresses
- Birthdate
The AliasVault identity generator uses lists (dictionaries) of possible names. Currently, AliasVault has name lists for the following languages:
- 🇬🇧 **English** (en)
- 🇳🇱 **Dutch** (nl)
- 🇩🇪 **German** (de)
**Your language not listed?** Help us add it!
---
## How to Contribute
We need **lists of common first and last names** used in your language/region. Technical skills are not required. For each language that AliasVault supports, we need a text file with one name per line:
### Basic name lists
1. **Male** first names (100+ names)
2. **Female** first names (100+ names)
2. Common last names/**surnames** (100+ names)
### History specific name lists
AliasVault also supports history specific first names (per decade). In many countries and regions, name popularity has changed throughout the years. Names that used to be popular for people born in the 1950's are barely given to people born in the 1990's and vice versa.
## How to Submit Your Names
1. **Create simple text files** with one name per line:
- `firstnames_male.txt`
- optionally: `firstnames_male_1950_1960.txt`, `firstnames_male_1960_1970.txt` etc.
- `firstnames_female.txt`
- optionally: `firstnames_female_1950_1960.txt`, `firstnames_female_1960_1970.txt` etc.
- `lastnames.txt`
2. **Send the files to us:**
- **Discord**: Join our [community server](https://discord.gg/DsaXMTEtpF) and share in #translations or via private message
- **Email**: [contact@support.aliasvault.net](mailto:contact@support.aliasvault.net)
- **Crowdin**: If you're already a member of the AliasVault Crowdin project, send a PM with an attachment
After we have received the files, we'll take care of the technical formatting and making it available in the AliasVault apps.
## Tips
### Name Selection
-**Use common, popular names** - Names you'd actually encounter in daily life
-**Modern and traditional** - Include a mix of classic and contemporary names
-**Diverse styles** - Represent different regional variations within your language
The more names = the more variety and more realistic identities!
---
## Examples from Existing Languages
Want to see what the actual dictionaries look like that AliasVault uses right now? Check out these examples. We also welcome any additions to existing languages, e.g. adding more names.
### English (Simple Implementation)
- [View female names](https://github.com/aliasvault/aliasvault/blob/main/shared/identity-generator/src/dictionaries/en/firstnames_female.ts)
- [View male names](https://github.com/aliasvault/aliasvault/blob/main/shared/identity-generator/src/dictionaries/en/firstnames_male.ts)
- [View last names](https://github.com/aliasvault/aliasvault/blob/main/shared/identity-generator/src/dictionaries/en/lastnames.ts)
### German (Decade-Based Implementation)
- [View 1950s female names](https://github.com/aliasvault/aliasvault/blob/main/shared/identity-generator/src/dictionaries/de/firstnames_female_1950_1959.ts)
- [View 2020s female names](https://github.com/aliasvault/aliasvault/blob/main/shared/identity-generator/src/dictionaries/de/firstnames_female_2020_2029.ts)
- [Browse all German files](https://github.com/aliasvault/aliasvault/tree/main/shared/identity-generator/src/dictionaries/de)
---
## Questions?
If you have any questions, feel free to contact us and get in touch:
- Join our [Discord](https://discord.gg/DsaXMTEtpF) - Ask questions in #translations
- Email us: [contact@support.aliasvault.net](mailto:contact@support.aliasvault.net)

View File

@@ -0,0 +1,63 @@
---
layout: default
title: Contributing
nav_order: 8
has_children: true
---
# Contributing to AliasVault
Thank you for your interest in contributing to AliasVault! There are many ways you can help to make AliasVault better for privacy-conscious users worldwide.
## Get Started
Here are some common ways you can help the AliasVault project:
<div style="display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 1rem; margin: 2rem 0;">
<div style="border: 2px solid #6366f1; border-radius: 8px; padding: 1.5rem; background: linear-gradient(135deg, #667eea22 0%, #764ba222 100%);">
<h3 style="margin-top: 0; color: #6366f1;">🌍 Translate UI</h3>
<p>Help translate AliasVault's interface into your language using Crowdin.</p>
<a href="ui-translations.html" style="font-weight: bold;">Get Started →</a>
</div>
<div style="border: 2px solid #10b981; border-radius: 8px; padding: 1.5rem; background: linear-gradient(135deg, #10b98122 0%, #059669222 100%);">
<h3 style="margin-top: 0; color: #10b981;">👤 Translate Identity Generator</h3>
<p>Provide name dictionaries to make the identity generator support your language.</p>
<a href="identity-generator.html" style="font-weight: bold;">Get Started →</a>
</div>
</div>
---
## Other ways to contribute
### 🐛 Bug Reports & Feature Requests
Help us improve AliasVault:
- [Report bugs](https://github.com/aliasvault/aliasvault/issues/new) with detailed information
- Suggest new features with use cases
- Vote on existing issues that matter to you
### 💬 Community Support
Join our community and help others:
- Answer questions on [Discord](https://discord.gg/DsaXMTEtpF)
- Help users troubleshoot issues
- Share tips and best practices
- Write blog posts or create videos
### 📖 Documentation
Help improve our documentation:
- Fix typos or unclear explanations
- Add missing information
- Create tutorials and guides
- Improve translations
### 💻 Code Contributions
Check the [CONTRIBUTING.md](https://github.com/aliasvault/aliasvault/blob/main/CONTRIBUTING.md) for guidelines.
**Thank you for making AliasVault better!** 🙏

View File

@@ -0,0 +1,85 @@
---
layout: default
title: UI Translations
parent: Contributing
nav_order: 1
---
# UI Translations
Help make AliasVault accessible to users worldwide by translating the user interface! 🌍
AliasVault is currently available in the following languages. See how complete each language is on the [Crowdin project page](https://crowdin.com/project/aliasvault). **Don't see your language?** Contact us and we'll add it so you can get started translating.
- 🇬🇧 English
- 🇨🇳 Chinese (Simplified)
- 🇳🇱 Dutch
- 🇫🇮 Finnish
- 🇩🇪 German
- 🇮🇱 Hebrew
- 🇮🇹 Italian
- 🇵🇱 Polish
- 🇧🇷 Portuguese (Brazilian)
- 🇷🇺 Russian
- 🇺🇦 Ukrainian
---
## How to Contribute
### Step 1: Join Crowdin
AliasVault uses [Crowdin](https://crowdin.com/) for translation management. It's a free, web-based platform that makes translating easy.
👉 **[Request access to the AliasVault Crowdin project](https://crowdin.com/project/aliasvault)**
### Step 2: Choose Your Language
Once you have access:
1. Select your language from the list
2. Browse through the different sections (Web App, Mobile App, Browser Extension)
3. Start translating!
### Step 3: Translate
Crowdin shows you:
- **Source text** (usually in English)
- **Translation field** where you enter your translation
- **Context** to help you understand where the text appears
- **Suggestions** from translation memory
### Step 4: Review
Other contributors may review and approve your translations. This helps ensure quality!
---
## What Gets Translated?
The Crowdin project covers translations for all client apps in one place:
- Web app (https://app.aliasvault.net)
- Browser extension
- Mobile App (iOS and Android)
---
## Adding a New Language
Want to add a completely new language to AliasVault?
1. **Contact us first** via [Discord](https://discord.gg/DsaXMTEtpF) or email at [contact@support.aliasvault.net](mailto:contact@support.aliasvault.net)
2. We'll add the language to Crowdin
3. We'll configure it in the codebase
4. You can start translating!
---
## Need Help?
### Questions About Translation?
- **Discord**: Join our [community server](https://discord.gg/DsaXMTEtpF) - Ask in #translations
- **Email**: [contact@support.aliasvault.net](mailto:contact@support.aliasvault.net)
- **Crowdin**: Use the discussion feature for specific strings
Thank you for helping make AliasVault accessible to more people!

View File

@@ -44,3 +44,14 @@ Create separate identities for different purposes, each with its own email alias
## Getting Started
Ready to get started with AliasVault? Check out the [server installation guide](./installation).
---
## Want to Contribute?
Help make AliasVault better for everyone:
- 🌍 **[Translate the UI](./contributing/ui-translations.md)** - Help translate AliasVault into your language
- 👤 **[Add Name Dictionaries](./contributing/identity-generator.md)** - Provide names for the identity generator
See all ways to contribute: [Contributing Guide](./contributing/)

View File

@@ -1,33 +1,15 @@
---
layout: default
title: Translations
title: Add new language
parent: Development
grand_parent: Miscellaneous
nav_order: 3
---
# Translations
AliasVault supports multiple languages across all applications. Currently supported languages:
- English
- Chinese (Simplified)
- Dutch
- Finnish
- German
- Hebrew
- Italian
- Polish
- Portugese (Brazilian)
- Russian
- Ukrainian
---
## Adding a New Language
# Add new language
To add a new language to AliasVault, follow these steps in order:
### Step 1: Configure Crowdin Integration
## Step 1: Configure Crowdin Integration
1. **Update crowdin.yml**: Add the new language identifier to the `crowdin.yml` file in the root of the repository
2. **Crowdin will automatically**:
@@ -35,25 +17,25 @@ To add a new language to AliasVault, follow these steps in order:
- Offer new content for translation in the Crowdin web interface
- Create translation files for the new language
### Step 2: Web App (Blazor WASM)
## Step 2: Web App (Blazor WASM)
1. **Add language to LanguageService**: Update `apps/server/AliasVault.Client/Services/LanguageService.cs` with the new language identifier
2. **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
## Step 3: Browser Extension
1. **Add language identifier to config**: Update `/apps/browser-extension/src/utils/i18n/config.ts` and insert new language based on existing structure
1. **Create language file (optional, Crowdin should make a PR for this automatically)**:
- `apps/browser-extension/src/locales/{language-code}.json`
### Step 4: Mobile App - React Native
## Step 4: Mobile App - React Native
1. **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
## Step 5: Mobile App - iOS Native
**Location**: `apps/mobile-app/ios/`
@@ -69,7 +51,7 @@ To add a new language to AliasVault, follow these steps in order:
- `Autofill/{language-code}.lproj/Localizable.strings`
- `VaultUI/{language-code}.lproj/Localizable.strings`
### Step 6: Mobile App - Android Native
## Step 6: Mobile App - Android Native
**Location**: `apps/mobile-app/android/app/src/main/res/`

View File

@@ -2,7 +2,7 @@
layout: default
title: Development
parent: Miscellaneous
nav_order: 1
nav_order: 99
---
# Development Guide

View File

@@ -1,11 +1,12 @@
---
layout: default
title: Publish new release
parent: Release
grand_parent: Miscellaneous
nav_order: 1
title: Release
parent: Development
nav_order: 99
---
# Publish new release
Follow the steps in the checklist below to prepare a new release.
{: .toc }

View File

@@ -1,8 +1,8 @@
---
layout: default
title: Manual versioning
parent: Publish new release
grand_parent: Release
parent: Release
grand_parent: Development
nav_order: 2
---

View File

@@ -1,19 +0,0 @@
---
layout: default
title: Enable WebAuthn
parent: Miscellaneous
nav_order: 10
---
# WebAuthn
Webauthn allows to quick unlock the vault in the AliasVault web app. This can be either the built-in browser authenticator or an external authenticator like a Yubikey.
At the time of writing (2024-10-04), only some browsers support the required PRF extension. In order to make it work in Chrome, you need to enable the PRF extension in the browser settings.
## Chrome
1. Open the Chrome browser and navigate to `chrome://flags/#enable-experimental-web-platform-features`.
2. Enable the `Experimental Web Platform features` flag.
3. Restart the browser.
4. Now it should be possible to use the built-in chrome password manager to unlock the vault.
5. Go to Menu -> Security Settings -> Quick Vault Unlock and enable it.

View File

@@ -2,7 +2,7 @@
layout: default
title: Miscellaneous
has_children: true
nav_order: 99
nav_order: 7
---
# Miscellaneous

View File

@@ -2,7 +2,7 @@
layout: default
title: Private vs Public Email Domains
parent: Miscellaneous
nav_order: 3
nav_order: 4
---
# Private vs Public Email Domains

View File

@@ -1,6 +0,0 @@
---
layout: default
title: Release
parent: Miscellaneous
nav_order: 1
---