Internationalization (German) of the mobile app. (#246)

* Add i18n framework to mobile app and write simple translation generator

* Replace all texts in login_form with i18n keys

* Localization of sharing section

* Localization of asset viewer section

* Use JSON as base translation format

* Add check for missing/unused translation keys

* Add localizely

* Remove i18n directory in favour of localizely

* Backup Translation

* More translations

* Translate home page

* Translation of search page

* Translate new server version announcement

* Reformat code

* Fix typo in german translation

* Update englisch translations

* Change translation keys to match dart filenames

* Add /api to translated endpoint_urls

* Update localizely.yml

* Add languages to ios plist

* Remove unused keys

* Added script to check outdated key in other translations

* Add download key to localizely.yml

Co-authored-by: Alex <alex.tran1502@gmail.com>
This commit is contained in:
Matthias Rupp 2022-07-07 20:40:54 +02:00 committed by GitHub
parent f3032f74a4
commit 2b5cef156c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
36 changed files with 601 additions and 213 deletions

View file

@ -1,3 +1,4 @@
import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';
@ -40,14 +41,14 @@ class VersionAnnouncementOverlay extends HookConsumerWidget {
crossAxisAlignment: CrossAxisAlignment.start,
children: [
const Text(
"New Server Version Available 🎉",
"version_announcement_overlay_title",
style: TextStyle(
fontSize: 16,
fontFamily: 'WorkSans',
fontWeight: FontWeight.bold,
color: Colors.indigo,
),
),
).tr(),
Padding(
padding: const EdgeInsets.only(top: 16.0),
child: RichText(
@ -58,9 +59,8 @@ class VersionAnnouncementOverlay extends HookConsumerWidget {
color: Colors.black87,
height: 1.2),
children: <TextSpan>[
const TextSpan(
text:
'Hi friend, there is a new release of',
TextSpan(
text: 'version_announcement_overlay_text_1'.tr(),
),
const TextSpan(
text: ' Immich ',
@ -70,22 +70,21 @@ class VersionAnnouncementOverlay extends HookConsumerWidget {
fontWeight: FontWeight.bold,
),
),
const TextSpan(
text:
"please take your time to visit the ",
TextSpan(
text: "version_announcement_overlay_text_2".tr(),
),
TextSpan(
text: "release note",
text: "version_announcement_overlay_release_notes"
.tr(),
style: const TextStyle(
decoration: TextDecoration.underline,
),
recognizer: TapGestureRecognizer()
..onTap = goToReleaseNote,
),
const TextSpan(
text:
" and ensure your docker-compose and .env setup is up-to-date to prevent any misconfigurations, especially if you use WatchTower or any mechanism that handles updating your server application automatically.",
),
TextSpan(
text: "version_announcement_overlay_text_3".tr(),
)
],
),
),
@ -93,24 +92,23 @@ class VersionAnnouncementOverlay extends HookConsumerWidget {
Padding(
padding: const EdgeInsets.only(top: 16.0),
child: ElevatedButton(
style: ElevatedButton.styleFrom(
shape: const StadiumBorder(),
visualDensity: VisualDensity.standard,
primary: Colors.indigo,
onPrimary: Colors.grey[50],
elevation: 2,
padding: const EdgeInsets.symmetric(
vertical: 10, horizontal: 25),
),
onPressed: onAcknowledgeTapped,
child: const Text(
"Acknowledge",
style: TextStyle(
fontSize: 14,
style: ElevatedButton.styleFrom(
shape: const StadiumBorder(),
visualDensity: VisualDensity.standard,
primary: Colors.indigo,
onPrimary: Colors.grey[50],
elevation: 2,
padding: const EdgeInsets.symmetric(
vertical: 10, horizontal: 25),
),
),
),
),
onPressed: onAcknowledgeTapped,
child: const Text(
"version_announcement_overlay_ack",
style: TextStyle(
fontSize: 14,
),
).tr()),
)
],
),
),