From 5eca11937a17cdd5123bfff7a27f40f35d3c4af9 Mon Sep 17 00:00:00 2001 From: stonegate Date: Fri, 31 Jul 2020 01:16:14 +0800 Subject: [PATCH] Language update. --- README.md | 6 +- assets/mx.png | Bin 0 -> 8103 bytes lib/l10n/intl_en.arb | 12 ++- lib/l10n/intl_fr.arb | 10 ++ lib/l10n/intl_zh_Hans.arb | 10 ++ lib/settings/languages.dart | 197 ++++++++++++++++++++---------------- 6 files changed, 142 insertions(+), 93 deletions(-) create mode 100644 assets/mx.png diff --git a/README.md b/README.md index 3aa3b13..c7d9763 100644 --- a/README.md +++ b/README.md @@ -43,7 +43,9 @@ Support languages * ![English] * ![Chinese Simplified] -* ![Franch] +* ![Franch] + + Translator: ppp Please [Email](mailto:) me you'd like to contribute to support more languages! @@ -97,7 +99,7 @@ src ├──settings ├──setting.dart [Setting Page] -STATES +STATE src ├──state ├──audio_state.dart [Audio State] diff --git a/assets/mx.png b/assets/mx.png new file mode 100644 index 0000000000000000000000000000000000000000..fa12e373cfcd3ddf1ae0fa5f8999e51c606a2726 GIT binary patch literal 8103 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 literal 0 HcmV?d00001 diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb index fa1501b..845826e 100644 --- a/lib/l10n/intl_en.arb +++ b/lib/l10n/intl_en.arb @@ -278,6 +278,12 @@ "@play": {}, "playback": "Playback control", "@playback": {}, + "playerHeightMed": "Medium", + "@playerHeightMed": {}, + "playerHeightShort": "Short", + "@playerHeightShort": {}, + "playerHeightTall": "Tall", + "@playerHeightTall": {}, "playing": "Playing", "@playing": {}, "plugins": "Plugins", @@ -443,11 +449,15 @@ "@settingsNetworkCellularDes": {}, "settingsPlayDes": "Playlist and player", "@settingsPlayDes": {}, + "settingsPlayerHeight": "Player height", + "@settingsPlayerHeight": {}, + "settingsPlayerHeightDes": "Change player widget height as you like", + "@settingsPlayerHeightDes": {}, "settingsPopupMenu": "Episodes popup menu", "@settingsPopupMenu": {}, "settingsPopupMenuDes": "Change the popup menu of episode", "@settingsPopupMenuDes": {}, - "settingsPrefrence": "Prefrence", + "settingsPrefrence": "Preference", "@settingsPrefrence": {}, "settingsRealDark": "Real dark", "@settingsRealDark": {}, diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb index 539c2bc..f1f3b92 100644 --- a/lib/l10n/intl_fr.arb +++ b/lib/l10n/intl_fr.arb @@ -278,6 +278,12 @@ "@play": {}, "playback": "Commandes du lecteur", "@playback": {}, + "playerHeightMed": "Medium", + "@playerHeightMed": {}, + "playerHeightShort": "Short", + "@playerHeightShort": {}, + "playerHeightTall": "Tall", + "@playerHeightTall": {}, "playing": "En cours", "@playing": {}, "plugins": "Plugins", @@ -443,6 +449,10 @@ "@settingsNetworkCellularDes": {}, "settingsPlayDes": "Playlist et lecteur", "@settingsPlayDes": {}, + "settingsPlayerHeight": "Player height", + "@settingsPlayerHeight": {}, + "settingsPlayerHeightDes": "Change player widget height as you like", + "@settingsPlayerHeightDes": {}, "settingsPopupMenu": "Menu popup des épisodes", "@settingsPopupMenu": {}, "settingsPopupMenuDes": "Configuration du menu popup", diff --git a/lib/l10n/intl_zh_Hans.arb b/lib/l10n/intl_zh_Hans.arb index 7b362aa..0725b2b 100644 --- a/lib/l10n/intl_zh_Hans.arb +++ b/lib/l10n/intl_zh_Hans.arb @@ -278,6 +278,12 @@ "@play": {}, "playback": "播放控制", "@playback": {}, + "playerHeightMed": "中", + "@playerHeightMed": {}, + "playerHeightShort": "低", + "@playerHeightShort": {}, + "playerHeightTall": "高", + "@playerHeightTall": {}, "playing": "正在播放", "@playing": {}, "plugins": "插件", @@ -443,6 +449,10 @@ "@settingsNetworkCellularDes": {}, "settingsPlayDes": "播放列表和播放器", "@settingsPlayDes": {}, + "settingsPlayerHeight": "播放器高度", + "@settingsPlayerHeight": {}, + "settingsPlayerHeightDes": "您可以修改播放器高度", + "@settingsPlayerHeightDes": {}, "settingsPopupMenu": "节目弹出菜单", "@settingsPopupMenu": {}, "settingsPopupMenuDes": "修改节目弹出菜单", diff --git a/lib/settings/languages.dart b/lib/settings/languages.dart index f3caae7..cba1129 100644 --- a/lib/settings/languages.dart +++ b/lib/settings/languages.dart @@ -33,97 +33,114 @@ class _LanguagesSettingState extends State { Theme.of(context).accentColorBrightness, ), child: Scaffold( - appBar: AppBar( - title: Text(s.settingsLanguages), - elevation: 0, - backgroundColor: Theme.of(context).primaryColor, + appBar: AppBar( + title: Text(s.settingsLanguages), + elevation: 0, + backgroundColor: Theme.of(context).primaryColor, + ), + body: SingleChildScrollView( + scrollDirection: Axis.vertical, + child: Column( + children: [ + ListTile( + title: Text(s.systemDefault), + onTap: () async { + await S.load(Locale(Intl.systemLocale)); + setState(() {}); + }, + contentPadding: const EdgeInsets.only(left: 75, right: 20), + trailing: Radio( + value: Locale(Intl.systemLocale), + groupValue: Locale(Intl.getCurrentLocale()), + onChanged: (locale) async { + await S.load(locale); + setState(() {}); + }), + ), + Divider(height: 2), + ListTile( + title: Text('English'), + onTap: () async { + await S.load(Locale('en')); + setState(() {}); + }, + contentPadding: const EdgeInsets.only(left: 75, right: 20), + trailing: Radio( + value: Locale('en'), + groupValue: Locale(Intl.getCurrentLocale()), + onChanged: (locale) async { + await S.load(locale); + setState(() {}); + }), + ), + Divider(height: 2), + ListTile( + title: Text('简体中文'), + onTap: () async { + await S.load(Locale('zh_Hans')); + setState(() {}); + }, + contentPadding: const EdgeInsets.only(left: 75, right: 20), + trailing: Radio( + value: Locale('zh_Hans'), + groupValue: Locale(Intl.getCurrentLocale()), + onChanged: (locale) async { + await S.load(locale); + setState(() {}); + }), + ), + Divider(height: 2), + ListTile( + title: Text('LE françAIS'), + onTap: () async { + await S.load(Locale('fr')); + setState(() {}); + }, + contentPadding: const EdgeInsets.only(left: 75, right: 20), + trailing: Radio( + value: Locale('fr'), + groupValue: Locale(Intl.getCurrentLocale()), + onChanged: (locale) async { + await S.load(locale); + setState(() {}); + }), + ), + Divider(height: 2), + //ListTile( + // title: Text('Español'), + // onTap: () async { + // await S.load(Locale('es')); + // setState(() {}); + // }, + // contentPadding: const EdgeInsets.only(left: 75, right: 20), + // trailing: Radio( + // value: Locale('es'), + // groupValue: Locale(Intl.getCurrentLocale()), + // onChanged: (locale) async { + // await S.load(locale); + // setState(() {}); + // }), + //), + //Divider(height: 2), + ListTile( + onTap: () => _launchUrl( + 'mailto:?subject=Tsacdop localization project'), + contentPadding: const EdgeInsets.only(left: 75, right: 20), + title: Align( + alignment: Alignment.centerLeft, + child: Image( + image: Theme.of(context).brightness == Brightness.light + ? AssetImage('assets/localizely_logo.png') + : AssetImage('assets/localizely_logo_light.png'), + height: 20), + ), + subtitle: Text( + "If you'd like to contribute to localization project, please contact me."), + ), + ], ), - body: SingleChildScrollView( - scrollDirection: Axis.vertical, - child: Column( - children: [ - ListTile( - title: Text(s.systemDefault), - onTap: () async { - await S.load(Locale(Intl.systemLocale)); - setState(() {}); - }, - contentPadding: const EdgeInsets.only(left: 75, right: 20), - trailing: Radio( - value: Locale(Intl.systemLocale), - groupValue: Locale(Intl.getCurrentLocale()), - onChanged: (locale) async { - await S.load(locale); - setState(() {}); - }), - ), - Divider(height: 2), - ListTile( - title: Text('English'), - onTap: () async { - await S.load(Locale('en')); - setState(() {}); - }, - contentPadding: const EdgeInsets.only(left: 75, right: 20), - trailing: Radio( - value: Locale('en'), - groupValue: Locale(Intl.getCurrentLocale()), - onChanged: (locale) async { - await S.load(locale); - setState(() {}); - }), - ), - Divider(height: 2), - ListTile( - title: Text('简体中文'), - onTap: () async { - await S.load(Locale('zh_Hans')); - setState(() {}); - }, - contentPadding: const EdgeInsets.only(left: 75, right: 20), - trailing: Radio( - value: Locale('zh_Hans'), - groupValue: Locale(Intl.getCurrentLocale()), - onChanged: (locale) async { - await S.load(locale); - setState(() {}); - }), - ), - Divider(height: 2), - ListTile( - title: Text('LE françAIS'), - onTap: () async { - await S.load(Locale('fr')); - setState(() {}); - }, - contentPadding: const EdgeInsets.only(left: 75, right: 20), - trailing: Radio( - value: Locale('fr'), - groupValue: Locale(Intl.getCurrentLocale()), - onChanged: (locale) async { - await S.load(locale); - setState(() {}); - }), - ), - Divider(height: 2), - ListTile( - onTap: () => _launchUrl( - 'mailto:?subject=Tsacdop localization project'), - contentPadding: const EdgeInsets.only(left: 75, right: 20), - title: Align( - alignment: Alignment.centerLeft, - child: Image( - image: Theme.of(context).brightness == - Brightness.light - ? AssetImage('assets/localizely_logo.png') - : AssetImage('assets/localizely_logo_light.png'), - height: 20), - ), - subtitle: Text( - "If you'd like to contribute to localization project, please contact me."), - ), - ], - ))), + ), + ), ); } }