FEATURES
========
Batch Delete Toast Aggregation:
- New deleteMultipleNotesFromServer() method
- Shows single aggregated toast instead of multiple ("3 notes deleted from server")
- Partial success handling ("3 of 5 notes deleted from server")
- Added string resources: snackbar_notes_deleted_from_server, snackbar_notes_deleted_from_server_partial
Text Editor Cursor Fix:
- Fixed cursor jumping to end after every keystroke when editing notes
- Added initialCursorSet flag to only set cursor position on first load
- Cursor now stays at user's position while editing
- Changed LaunchedEffect(content) to LaunchedEffect(Unit) to prevent repeated resets
DOCUMENTATION REFACTOR
======================
Breaking Change: English is now the default language
- README.md: Now English (was German)
- QUICKSTART.md: Now English (was German)
- CHANGELOG.md: Now English (was mixed EN/DE)
- docs/*.md: All English (was German)
- German versions: Use .de.md suffix (README.de.md, QUICKSTART.de.md, etc.)
Updated for v1.5.0:
- CHANGELOG.md: Fully translated to English with v1.5.0 release notes
- CHANGELOG.de.md: Created German version
- FEATURES.md: Added i18n section, Selection Mode, Jetpack Compose updates
- FEATURES.de.md: Updated with v1.5.0 features
- UPCOMING.md: v1.5.0 marked as released, v1.6.0/v1.7.0 roadmap
- UPCOMING.de.md: Updated German version
All language headers updated:
- English: [Deutsch](*.de.md) · **English**
- German: **Deutsch** · [English](*.md)
F-DROID METADATA
================
Changelogs (F-Droid):
- fastlane/metadata/android/en-US/changelogs/13.txt: Created
- fastlane/metadata/android/de-DE/changelogs/13.txt: Created
Descriptions:
- full_description.txt (EN/DE): Updated with v1.5.0 changes
- Selection Mode instead of Swipe-to-Delete
- i18n support highlighted
- Jetpack Compose UI mentioned
- Silent-Sync Mode added
OTHER FIXES
===========
Code Quality:
- Unused imports removed from multiple files
- maxLineLength fixes
- Detekt config optimized (increased thresholds for v1.5.0)
- AboutScreen: Uses app foreground icon directly
- EmptyState: Shows app icon instead of emoji
- themes.xml: Splash screen uses app foreground icon
152 lines
3.4 KiB
Markdown
152 lines
3.4 KiB
Markdown
# Contributing Translations 🌍
|
|
|
|
**🌍 Languages:** [Deutsch](TRANSLATING.de.md) · **English**
|
|
|
|
> How to translate Simple Notes Sync into your language!
|
|
|
|
---
|
|
|
|
## 📋 Overview
|
|
|
|
Simple Notes Sync currently supports:
|
|
- 🇺🇸 **English** (en) - Primary language
|
|
- 🇩🇪 **German** (de) - Fully translated
|
|
|
|
We welcome new translations!
|
|
|
|
---
|
|
|
|
## 🚀 Quick Start
|
|
|
|
### 1. Fork the Repository
|
|
|
|
1. Go to [github.com/inventory69/simple-notes-sync](https://github.com/inventory69/simple-notes-sync)
|
|
2. Click **Fork** (top right)
|
|
3. Clone your fork: `git clone https://github.com/YOUR-USERNAME/simple-notes-sync.git`
|
|
|
|
### 2. Create Language Files
|
|
|
|
```bash
|
|
cd simple-notes-sync/android/app/src/main/res
|
|
|
|
# Create folder for your language (e.g., French)
|
|
mkdir values-fr
|
|
|
|
# Copy strings
|
|
cp values/strings.xml values-fr/strings.xml
|
|
```
|
|
|
|
### 3. Translate Strings
|
|
|
|
Open `values-fr/strings.xml` and translate all `<string>` entries:
|
|
|
|
```xml
|
|
<!-- Original (English) -->
|
|
<string name="app_name">Simple Notes</string>
|
|
<string name="notes_title">Notes</string>
|
|
|
|
<!-- Translated (French) -->
|
|
<string name="app_name">Notes Simples</string>
|
|
<string name="notes_title">Notes</string>
|
|
```
|
|
|
|
**Important:**
|
|
- Only translate text between `>` and `</string>`
|
|
- Do NOT change `name="..."` attributes
|
|
- Keep `%s`, `%d`, `%1$s` etc. as placeholders
|
|
|
|
### 4. Update locales_config.xml
|
|
|
|
Add your language to `android/app/src/main/res/xml/locales_config.xml`:
|
|
|
|
```xml
|
|
<locale-config xmlns:android="http://schemas.android.com/apk/res/android">
|
|
<locale android:name="en" />
|
|
<locale android:name="de" />
|
|
<locale android:name="fr" /> <!-- NEW -->
|
|
</locale-config>
|
|
```
|
|
|
|
### 5. Create Pull Request
|
|
|
|
1. Commit your changes
|
|
2. Push to your fork
|
|
3. Create a Pull Request with title: `Add [Language] translation`
|
|
|
|
---
|
|
|
|
## 📁 File Structure
|
|
|
|
```
|
|
android/app/src/main/res/
|
|
├── values/ # English (Fallback)
|
|
│ └── strings.xml
|
|
├── values-de/ # German
|
|
│ └── strings.xml
|
|
├── values-fr/ # French (new)
|
|
│ └── strings.xml
|
|
└── xml/
|
|
└── locales_config.xml # Language registration
|
|
```
|
|
|
|
---
|
|
|
|
## 📝 String Categories
|
|
|
|
The `strings.xml` contains about 400+ strings, divided into:
|
|
|
|
| Category | Description | Count |
|
|
|----------|-------------|-------|
|
|
| UI Texts | Buttons, labels, titles | ~100 |
|
|
| Settings | All 7 settings screens | ~150 |
|
|
| Dialogs | Confirmations, errors | ~80 |
|
|
| Sync | Synchronization messages | ~50 |
|
|
| Other | Tooltips, accessibility | ~30 |
|
|
|
|
---
|
|
|
|
## ✅ Quality Checklist
|
|
|
|
Before creating your Pull Request:
|
|
|
|
- [ ] All strings translated (no English leftovers)
|
|
- [ ] Placeholders (`%s`, `%d`) preserved
|
|
- [ ] No XML syntax errors
|
|
- [ ] App launches without crashes
|
|
- [ ] Text fits in UI elements (not too long)
|
|
- [ ] `locales_config.xml` updated
|
|
|
|
---
|
|
|
|
## 🔧 Testing
|
|
|
|
```bash
|
|
cd android
|
|
./gradlew app:assembleDebug
|
|
|
|
# Install APK and switch language in Android settings
|
|
```
|
|
|
|
---
|
|
|
|
## ❓ FAQ
|
|
|
|
**Do I need to translate all strings?**
|
|
> Ideally yes. Missing strings fall back to English.
|
|
|
|
**What about placeholders?**
|
|
> `%s` = text, `%d` = number. Keep position or use `%1$s` for numbering.
|
|
|
|
**How do I test my translation?**
|
|
> Build app, install, go to Android Settings → Apps → Simple Notes → Language.
|
|
|
|
---
|
|
|
|
## 🙏 Thank You!
|
|
|
|
Every translation helps Simple Notes Sync reach more people.
|
|
|
|
Questions? [Create a GitHub Issue](https://github.com/inventory69/simple-notes-sync/issues)
|
|
|
|
[← Back to Documentation](DOCS.md)
|