Files
lunasea/lib/core/system/localization.dart
Jagandeep Brar f35c4bf571 [Release] v5.0.0 (50000011) (#343)
* [Radarr] Added very basic localization file for testing

* Added minimal LunaSea localization file

* Translations update from Weblate (#325)

* Added translation using Weblate (German)

* Translated using Weblate (German)

Currently translated at 25.0% (1 of 4 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/de/

* Added translation using Weblate (French)

* Translated using Weblate (French)

Currently translated at 25.0% (1 of 4 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (4 of 4 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* Deleted translation using Weblate (German)

Co-authored-by: Jagandeep Brar <me@jagandeepbrar.io>
Co-authored-by: Antoine C <contact+weblate@antoinecardon.fr>

* [Localization] Updated keys

* [Strings] Removed internal constant LunaSea to ease localization efforts

* Added translation using Weblate (French)

* Translated using Weblate (French)

Currently translated at 100.0% (1 of 1 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/fr/

* [Radarr] Added additional localization strings

* [Locale/Radarr] Additional strings

* Added translation using Weblate (Norwegian Bokmål)

* Added translation using Weblate (Norwegian Bokmål)

* Translated using Weblate (French)

Currently translated at 100.0% (11 of 11 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (1 of 1 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/nb_NO/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 90.9% (10 of 11 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/nb_NO/

* Translated using Weblate (French)

Currently translated at 100.0% (11 of 11 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* [localizations] sort keys

* [Packages] Migration to Fluttter v2 and NNBD Compatibility (#329)

* Updated packages
* Added system level Firebase Crashlytics to replace Sentry
* Started migration to crashlytics
* [Crashlytics] Adjusted dialog to reflect analytics, add crash button
* [Settings] Removed test crash tile
* [Changelog] Pull changelog version and build from application package
* Added easy_localization package
* Added stub localization handler

* [Localization] Added package and assembly script (#330)

* Updated packages
* Added system level Firebase Crashlytics to replace Sentry
* Started migration to crashlytics
* [Crashlytics] Adjusted dialog to reflect analytics, add crash button
* [Settings] Removed test crash tile
* [Changelog] Pull changelog version and build from application package
* Added easy_localization package
* Added stub localization handler
* [Localization] Added easy_localization package, added script to concat all localization files

* Removed license shield

* [Localization] Integrated system localization handling (#331)

* [Localization] use dash delimiter

* Translated using Weblate (English)

Currently translated at 100.0% (11 of 11 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/en/

* [Localization] Added ability to switch languages, updated Radarr localization (#333)

* [Scripts, Localization] Updated prepare script to print nicer JSON, add additional strings for Radarr
* Updated localizations, switch remaining Radarr strings that are available

* Translated using Weblate (French)

Currently translated at 100.0% (12 of 12 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (12 of 12 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/nb_NO/

* Generated new local assets

* [radarr/add_movie] Strings adapted for localizations and added to localization files

* Translated using Weblate (English)

Currently translated at 100.0% (2 of 2 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/en/

* [Localizations] Rebuild

* Translated using Weblate (French)

Currently translated at 100.0% (18 of 18 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (2 of 2 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/fr/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (2 of 2 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/nb_NO/

* [Radarr/Add Movie] Adapted for localized strings

* [Radarr/Add Details] Adapted for localized strings

* [Radarr/Edit Movie] Adapted for localized strings

* Translated using Weblate (French)

Currently translated at 100.0% (3 of 3 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (25 of 25 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* [Chore] Rebuilt localizations

* [Radarr/Dialogs] Updated a few dialogs to reflect localized titles

* [Localization] Ability to disable localization options internally

* [DateTime] Show "Just Now" when time difference is under 10 seconds

* [Search] Switch to new XML parsing package/engine

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 96.7% (30 of 31 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/nb_NO/

* Translated using Weblate (French)

Currently translated at 100.0% (31 of 31 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (4 of 4 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/fr/

* Translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (4 of 4 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/nb_NO/

* [Localization] (chore) Rebuild localization

* [Chore] Moved localization to system folder

* Added translation using Weblate (Swedish)

* Added translation using Weblate (Swedish)

* Translated using Weblate (Swedish)

Currently translated at 100.0% (4 of 4 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/sv/

* Translated using Weblate (Swedish)

Currently translated at 100.0% (31 of 31 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/sv/

* [Localization] Added support for Swedish (sv)

* [Radarr/Types] Adapted all type readable strings for localization

* [Radarr] Continued work on adapting for localization

* Translated using Weblate (French)

Currently translated at 100.0% (71 of 71 strings)

Translation: LunaSea/Radarr
Translate-URL: https://hosted.weblate.org/projects/lunasea/radarr/fr/

* Translated using Weblate (French)

Currently translated at 100.0% (9 of 9 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/fr/

* [Localization] (chore) Build localization

* [Chore] Cleanup, move and adapt drawer to LunaUI

* [Drawer] Cleanup drawer builder

* Translated using Weblate (English)

Currently translated at 100.0% (9 of 9 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/en/

* Translated using Weblate (English)

Currently translated at 100.0% (10 of 10 strings)

Translation: LunaSea/LunaSea
Translate-URL: https://hosted.weblate.org/projects/lunasea/lunasea/en/

* [UI] Move "luna_ui" to "ui", old "ui" to "deprecated_ui"

* [-arr/Add] Tags set when adding content are now stored in the database

* [-arr/Links] Added Trakt link, normalize sizes, update TMDB logo

* Add weblate link, disable additional languages on release mode, updated changelog

Co-authored-by: Weblate (bot) <hosted@weblate.org>
Co-authored-by: Antoine C <contact+weblate@antoinecardon.fr>
Co-authored-by: Allan Nordhøy <epost@anotheragency.no>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Patrik Hauguth <patrik.hauguth@gmail.com>
2021-03-07 20:30:58 -06:00

82 lines
3.0 KiB
Dart

import 'package:easy_localization/easy_localization.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:lunasea/core.dart';
class LunaLocalization {
/// List of [LunaLanguage] values with all currently supported languages
List<LunaLanguage> get supportedLanguages => LunaLanguage.values.where((lang) => lang.enabled).toList();
/// Returns an iterable list of [Locale] objects containing all supported & enabled locales.
Iterable<Locale> get supportedLocales => supportedLanguages.map<Locale>((lang) => lang.locale).toList();
Locale get fallbackLocale => LunaLanguage.ENGLISH.locale;
/// Directory containing all localization files
String get fileDirectory => 'assets/localization';
/// Initialize the localization system.
Future<void> initialize() async {
await EasyLocalization.ensureInitialized();
}
}
enum LunaLanguage {
ENGLISH,
FRENCH,
NORWEGIAN_BOKMAL,
SWEDISH,
}
extension LunaLanguageExtension on LunaLanguage {
LunaLanguage fromLocale(Locale locale) {
if(locale.toLanguageTag() == LunaLanguage.ENGLISH.languageTag) return LunaLanguage.ENGLISH;
if(locale.toLanguageTag() == LunaLanguage.FRENCH.languageTag) return LunaLanguage.FRENCH;
if(locale.toLanguageTag() == LunaLanguage.NORWEGIAN_BOKMAL.languageTag) return LunaLanguage.NORWEGIAN_BOKMAL;
if(locale.toLanguageTag() == LunaLanguage.SWEDISH.languageTag) return LunaLanguage.SWEDISH;
return null;
}
bool get enabled {
switch(this) {
case LunaLanguage.ENGLISH: return true;
case LunaLanguage.FRENCH: return kDebugMode;
case LunaLanguage.NORWEGIAN_BOKMAL: return kDebugMode;
case LunaLanguage.SWEDISH: return kDebugMode;
}
throw Exception('Invalid LunaLanguage');
}
String get name {
switch(this) {
case LunaLanguage.ENGLISH: return 'English';
case LunaLanguage.FRENCH: return 'French';
case LunaLanguage.NORWEGIAN_BOKMAL: return 'Norwegian (Bokmål)';
case LunaLanguage.SWEDISH: return 'Swedish';
}
throw Exception('Invalid LunaLanguage');
}
String get languageTag {
switch(this) {
case LunaLanguage.ENGLISH: return 'en';
case LunaLanguage.FRENCH: return 'fr';
case LunaLanguage.NORWEGIAN_BOKMAL: return 'nb-NO';
case LunaLanguage.SWEDISH: return 'sv';
}
throw Exception('Invalid LunaLanguage');
}
Locale get locale {
switch(this) {
case LunaLanguage.ENGLISH: return Locale('en');
case LunaLanguage.FRENCH: return Locale('fr');
case LunaLanguage.NORWEGIAN_BOKMAL: return Locale('nb', 'NO');
case LunaLanguage.SWEDISH: return Locale('sv');
}
throw Exception('Invalid LunaLanguage');
}
Future<void> use(BuildContext context) => context.setLocale(this.locale);
}