From 94bf264b075b10bb79bff85c7a405fd15f9f82a8 Mon Sep 17 00:00:00 2001 From: edde746 <86283021+edde746@users.noreply.github.com> Date: Mon, 10 Nov 2025 10:20:20 +0100 Subject: [PATCH] docs: contributing --- CONTRIBUTING.md | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 00000000..1742ed9d --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,49 @@ +# Contributing + +## Getting Started + +1. Fork and clone the repository +2. Run `flutter pub get` to install dependencies +3. Run `dart run build_runner build` to generate code +4. Start developing! + +## Development + +- Follow Dart/Flutter conventions +- Run `flutter analyze` before submitting +- Test your changes thoroughly + +## Internationalization (i18n) + +This project uses `slang` for internationalization with JSON files. + +### Adding New Strings + +1. Add your string to `lib/i18n/strings.i18n.json`: + ```json + { + "section": { + "myNewString": "My new text" + } + } + ``` + +2. Run `dart run slang` to regenerate translation files + +3. Use in your code: + ```dart + Text(t.section.myNewString) + ``` + +### Adding New Languages + +1. Create new JSON file: `lib/i18n/strings_[locale].i18n.json` +2. Copy structure from `strings.i18n.json` and translate values +3. Run `dart run slang` to regenerate files + +### Guidelines + +- Organize strings logically in nested objects +- Use camelCase for keys +- Keep strings concise and clear +- Always run `dart run slang` after changes