This commit is contained in:
Yoshi 2025-03-15 23:40:48 +03:00
parent d169f6237f
commit fb150421a6
62 changed files with 5006 additions and 4901 deletions

View file

@ -62,5 +62,5 @@ This project is licensed under the [MIT License](./LICENSE).
### 👨‍💻 Our Contributors ### 👨‍💻 Our Contributors
<a href='https://github.com/darkmoonight/Rain/graphs/contributors'> <a href='https://github.com/darkmoonight/Rain/graphs/contributors'>
<img src='https://contrib.rocks/image?repo=darkmoonight/Rain' /> <img src='https://contrib.rocks/image?repo=darkmoonight/Rain'/>
</a> </a>

View file

@ -7,8 +7,8 @@ import 'package:rain/app/data/db.dart';
import 'package:rain/main.dart'; import 'package:rain/main.dart';
class WeatherAPI { class WeatherAPI {
final Dio dio = Dio() final Dio dio =
..options.baseUrl = 'https://api.open-meteo.com/v1/forecast?'; Dio()..options.baseUrl = 'https://api.open-meteo.com/v1/forecast?';
final Dio dioLocation = Dio(); final Dio dioLocation = Dio();
static const String _weatherParams = static const String _weatherParams =
@ -41,14 +41,25 @@ class WeatherAPI {
} }
} }
Future<WeatherCard> getWeatherCard(double lat, double lon, String city, Future<WeatherCard> getWeatherCard(
String district, String timezone) async { double lat,
double lon,
String city,
String district,
String timezone,
) async {
final String urlWeather = _buildWeatherUrl(lat, lon); final String urlWeather = _buildWeatherUrl(lat, lon);
try { try {
Response response = await dio.get(urlWeather); Response response = await dio.get(urlWeather);
WeatherDataApi weatherData = WeatherDataApi.fromJson(response.data); WeatherDataApi weatherData = WeatherDataApi.fromJson(response.data);
return _mapWeatherDataToCard( return _mapWeatherDataToCard(
weatherData, lat, lon, city, district, timezone); weatherData,
lat,
lon,
city,
district,
timezone,
);
} on DioException catch (e) { } on DioException catch (e) {
if (kDebugMode) { if (kDebugMode) {
print(e); print(e);
@ -124,8 +135,14 @@ class WeatherAPI {
); );
} }
WeatherCard _mapWeatherDataToCard(WeatherDataApi weatherData, double lat, WeatherCard _mapWeatherDataToCard(
double lon, String city, String district, String timezone) { WeatherDataApi weatherData,
double lat,
double lon,
String city,
String district,
String timezone,
) {
return WeatherCard( return WeatherCard(
time: weatherData.hourly.time, time: weatherData.hourly.time,
temperature2M: weatherData.hourly.temperature2M, temperature2M: weatherData.hourly.temperature2M,

View file

@ -1,15 +1,14 @@
class CityApi { class CityApi {
CityApi({ CityApi({required this.results});
required this.results,
});
List<Result> results; List<Result> results;
factory CityApi.fromJson(Map<String, dynamic> json) => CityApi( factory CityApi.fromJson(Map<String, dynamic> json) => CityApi(
results: json['results'] == null results:
json['results'] == null
? List<Result>.empty() ? List<Result>.empty()
: List<Result>.from(json['results'].map((x) => Result.fromJson(x))), : List<Result>.from(json['results'].map((x) => Result.fromJson(x))),
); );
} }
class Result { class Result {
@ -26,9 +25,9 @@ class Result {
double longitude; double longitude;
factory Result.fromJson(Map<String, dynamic> json) => Result( factory Result.fromJson(Map<String, dynamic> json) => Result(
admin1: json['admin1'] ?? '', admin1: json['admin1'] ?? '',
name: json['name'], name: json['name'],
latitude: json['latitude'], latitude: json['latitude'],
longitude: json['longitude'], longitude: json['longitude'],
); );
} }

View file

@ -1,7 +1,6 @@
import 'dart:io'; import 'dart:io';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter/services.dart'; import 'package:flutter/services.dart';
import 'package:flutter_local_notifications/flutter_local_notifications.dart';
import 'package:flutter_timezone/flutter_timezone.dart'; import 'package:flutter_timezone/flutter_timezone.dart';
import 'package:geocoding/geocoding.dart'; import 'package:geocoding/geocoding.dart';
import 'package:geolocator/geolocator.dart'; import 'package:geolocator/geolocator.dart';
@ -53,15 +52,14 @@ class WeatherController extends GetxController {
@override @override
void onInit() { void onInit() {
weatherCards weatherCards.assignAll(
.assignAll(isar.weatherCards.where().sortByIndex().findAllSync()); isar.weatherCards.where().sortByIndex().findAllSync(),
);
super.onInit(); super.onInit();
} }
Future<Position> determinePosition() async { Future<Position> _determinePosition() async {
LocationPermission permission; LocationPermission permission = await Geolocator.checkPermission();
permission = await Geolocator.checkPermission();
if (permission == LocationPermission.denied) { if (permission == LocationPermission.denied) {
permission = await Geolocator.requestPermission(); permission = await Geolocator.requestPermission();
if (permission == LocationPermission.denied) { if (permission == LocationPermission.denied) {
@ -71,7 +69,8 @@ class WeatherController extends GetxController {
if (permission == LocationPermission.deniedForever) { if (permission == LocationPermission.deniedForever) {
return Future.error( return Future.error(
'Location permissions are permanently denied, we cannot request permissions.'); 'Location permissions are permanently denied, we cannot request permissions.',
);
} }
return await Geolocator.getCurrentPosition(); return await Geolocator.getCurrentPosition();
} }
@ -80,25 +79,26 @@ class WeatherController extends GetxController {
if (settings.location) { if (settings.location) {
await getCurrentLocation(); await getCurrentLocation();
} else { } else {
if ((isar.locationCaches.where().findAllSync()).isNotEmpty) { final locationCity = isar.locationCaches.where().findFirstSync();
LocationCache locationCity = if (locationCity != null) {
(isar.locationCaches.where().findFirstSync())!; await getLocation(
await getLocation(locationCity.lat!, locationCity.lon!, locationCity.lat!,
locationCity.district!, locationCity.city!); locationCity.lon!,
locationCity.district!,
locationCity.city!,
);
} }
} }
} }
Future<void> getCurrentLocation() async { Future<void> getCurrentLocation() async {
bool serviceEnabled = await Geolocator.isLocationServiceEnabled();
if (!(await isOnline.value)) { if (!(await isOnline.value)) {
showSnackBar(content: 'no_inter'.tr); showSnackBar(content: 'no_inter'.tr);
await readCache(); await readCache();
return; return;
} }
if (!serviceEnabled) { if (!await Geolocator.isLocationServiceEnabled()) {
showSnackBar( showSnackBar(
content: 'no_location'.tr, content: 'no_location'.tr,
onPressed: () => Geolocator.openLocationSettings(), onPressed: () => Geolocator.openLocationSettings(),
@ -107,70 +107,73 @@ class WeatherController extends GetxController {
return; return;
} }
if ((isar.mainWeatherCaches.where().findAllSync()).isNotEmpty) { if (isar.mainWeatherCaches.where().findAllSync().isNotEmpty) {
await readCache(); await readCache();
return; return;
} }
Position position = await determinePosition(); final position = await _determinePosition();
List<Placemark> placemarks = final placemarks = await placemarkFromCoordinates(
await placemarkFromCoordinates(position.latitude, position.longitude); position.latitude,
Placemark place = placemarks[0]; position.longitude,
);
final place = placemarks[0];
_latitude.value = position.latitude; _latitude.value = position.latitude;
_longitude.value = position.longitude; _longitude.value = position.longitude;
_district.value = '${place.administrativeArea}'; _district.value = place.administrativeArea ?? '';
_city.value = '${place.locality}'; _city.value = place.locality ?? '';
_mainWeather.value = _mainWeather.value = await WeatherAPI().getWeatherData(
await WeatherAPI().getWeatherData(_latitude.value, _longitude.value); _latitude.value,
_longitude.value,
);
notificationCheck(); notificationCheck();
await writeCache(); await writeCache();
await readCache(); await readCache();
} }
Future<Map> getCurrentLocationSearch() async { Future<Map> getCurrentLocationSearch() async {
bool serviceEnabled = await Geolocator.isLocationServiceEnabled();
double lat, lon;
String city, district;
if (!(await isOnline.value)) { if (!(await isOnline.value)) {
showSnackBar(content: 'no_inter'.tr); showSnackBar(content: 'no_inter'.tr);
} }
if (!serviceEnabled) { if (!await Geolocator.isLocationServiceEnabled()) {
showSnackBar( showSnackBar(
content: 'no_location'.tr, content: 'no_location'.tr,
onPressed: () => Geolocator.openLocationSettings(), onPressed: () => Geolocator.openLocationSettings(),
); );
} }
Position position = await determinePosition(); final position = await _determinePosition();
List<Placemark> placemarks = final placemarks = await placemarkFromCoordinates(
await placemarkFromCoordinates(position.latitude, position.longitude); position.latitude,
Placemark place = placemarks[0]; position.longitude,
);
final place = placemarks[0];
lat = position.latitude; return {
lon = position.longitude; 'lat': position.latitude,
city = '${place.administrativeArea}'; 'lon': position.longitude,
district = '${place.locality}'; 'city': place.administrativeArea ?? '',
'district': place.locality ?? '',
Map location = {'lat': lat, 'lon': lon, 'city': city, 'district': district}; };
return location;
} }
Future<void> getLocation(double latitude, double longitude, String district, Future<void> getLocation(
String locality) async { double latitude,
double longitude,
String district,
String locality,
) async {
if (!(await isOnline.value)) { if (!(await isOnline.value)) {
showSnackBar(content: 'no_inter'.tr); showSnackBar(content: 'no_inter'.tr);
await readCache(); await readCache();
return; return;
} }
if ((isar.mainWeatherCaches.where().findAllSync()).isNotEmpty) { if (isar.mainWeatherCaches.where().findAllSync().isNotEmpty) {
await readCache(); await readCache();
return; return;
} }
@ -180,11 +183,12 @@ class WeatherController extends GetxController {
_district.value = district; _district.value = district;
_city.value = locality; _city.value = locality;
_mainWeather.value = _mainWeather.value = await WeatherAPI().getWeatherData(
await WeatherAPI().getWeatherData(_latitude.value, _longitude.value); _latitude.value,
_longitude.value,
);
notificationCheck(); notificationCheck();
await writeCache(); await writeCache();
await readCache(); await readCache();
} }
@ -201,10 +205,14 @@ class WeatherController extends GetxController {
_mainWeather.value = mainWeatherCache; _mainWeather.value = mainWeatherCache;
_location.value = locationCache; _location.value = locationCache;
hourOfDay.value = hourOfDay.value = getTime(
getTime(_mainWeather.value.time!, _mainWeather.value.timezone!); _mainWeather.value.time!,
dayOfNow.value = _mainWeather.value.timezone!,
getDay(_mainWeather.value.timeDaily!, _mainWeather.value.timezone!); );
dayOfNow.value = getDay(
_mainWeather.value.timeDaily!,
_mainWeather.value.timezone!,
);
if (Platform.isAndroid) { if (Platform.isAndroid) {
Workmanager().registerPeriodicTask( Workmanager().registerPeriodicTask(
@ -235,16 +243,10 @@ class WeatherController extends GetxController {
); );
isar.writeTxnSync(() { isar.writeTxnSync(() {
final mainWeatherCachesIsEmpty = if (isar.mainWeatherCaches.where().findAllSync().isEmpty) {
(isar.mainWeatherCaches.where().findAllSync()).isEmpty;
final locationCachesIsEmpty =
(isar.locationCaches.where().findAllSync()).isEmpty;
if (mainWeatherCachesIsEmpty) {
isar.mainWeatherCaches.putSync(_mainWeather.value); isar.mainWeatherCaches.putSync(_mainWeather.value);
} }
if (isar.locationCaches.where().findAllSync().isEmpty) {
if (locationCachesIsEmpty) {
isar.locationCaches.putSync(locationCaches); isar.locationCaches.putSync(locationCaches);
} }
}); });
@ -261,7 +263,7 @@ class WeatherController extends GetxController {
.timestampLessThan(cacheExpiry) .timestampLessThan(cacheExpiry)
.deleteAllSync(); .deleteAllSync();
}); });
if ((isar.mainWeatherCaches.where().findAllSync()).isEmpty) { if (isar.mainWeatherCaches.where().findAllSync().isEmpty) {
await flutterLocalNotificationsPlugin.cancelAll(); await flutterLocalNotificationsPlugin.cancelAll();
} }
} }
@ -271,31 +273,39 @@ class WeatherController extends GetxController {
return; return;
} }
bool serviceEnabled = await Geolocator.isLocationServiceEnabled(); final serviceEnabled = await Geolocator.isLocationServiceEnabled();
await flutterLocalNotificationsPlugin.cancelAll(); await flutterLocalNotificationsPlugin.cancelAll();
isar.writeTxnSync(() { isar.writeTxnSync(() {
if (!settings.location) { if (!settings.location) {
isar.mainWeatherCaches.where().deleteAllSync(); isar.mainWeatherCaches.where().deleteAllSync();
} }
if ((settings.location && serviceEnabled) || changeCity) { if (settings.location && serviceEnabled || changeCity) {
isar.mainWeatherCaches.where().deleteAllSync(); isar.mainWeatherCaches.where().deleteAllSync();
isar.locationCaches.where().deleteAllSync(); isar.locationCaches.where().deleteAllSync();
} }
}); });
} }
// Card Weather
Future<void> addCardWeather( Future<void> addCardWeather(
double latitude, double longitude, String city, String district) async { double latitude,
double longitude,
String city,
String district,
) async {
if (!(await isOnline.value)) { if (!(await isOnline.value)) {
showSnackBar(content: 'no_inter'.tr); showSnackBar(content: 'no_inter'.tr);
return; return;
} }
String tz = tzmap.latLngToTimezoneString(latitude, longitude); final tz = tzmap.latLngToTimezoneString(latitude, longitude);
_weatherCard.value = await WeatherAPI() _weatherCard.value = await WeatherAPI().getWeatherCard(
.getWeatherCard(latitude, longitude, city, district, tz); latitude,
longitude,
city,
district,
tz,
);
isar.writeTxnSync(() { isar.writeTxnSync(() {
weatherCards.add(_weatherCard.value); weatherCards.add(_weatherCard.value);
isar.weatherCards.putSync(_weatherCard.value); isar.weatherCards.putSync(_weatherCard.value);
@ -303,21 +313,27 @@ class WeatherController extends GetxController {
} }
Future<void> updateCacheCard(bool refresh) async { Future<void> updateCacheCard(bool refresh) async {
List<WeatherCard> weatherCard = refresh final weatherCard =
? isar.weatherCards.where().sortByIndex().findAllSync() refresh
: isar.weatherCards ? isar.weatherCards.where().sortByIndex().findAllSync()
.filter() : isar.weatherCards
.timestampLessThan(cacheExpiry) .filter()
.sortByIndex() .timestampLessThan(cacheExpiry)
.findAllSync(); .sortByIndex()
.findAllSync();
if ((!(await isOnline.value)) || weatherCard.isEmpty) { if (!(await isOnline.value) || weatherCard.isEmpty) {
return; return;
} }
for (var oldCard in weatherCard) { for (var oldCard in weatherCard) {
var updatedCard = await WeatherAPI().getWeatherCard(oldCard.lat!, final updatedCard = await WeatherAPI().getWeatherCard(
oldCard.lon!, oldCard.city!, oldCard.district!, oldCard.timezone!); oldCard.lat!,
oldCard.lon!,
oldCard.city!,
oldCard.district!,
oldCard.timezone!,
);
isar.writeTxnSync(() { isar.writeTxnSync(() {
oldCard oldCard
..time = updatedCard.time ..time = updatedCard.time
@ -358,8 +374,8 @@ class WeatherController extends GetxController {
isar.weatherCards.putSync(oldCard); isar.weatherCards.putSync(oldCard);
var newCard = oldCard; final newCard = oldCard;
int oldIdx = weatherCard.indexOf(oldCard); final oldIdx = weatherCard.indexOf(oldCard);
weatherCards[oldIdx] = newCard; weatherCards[oldIdx] = newCard;
weatherCards.refresh(); weatherCards.refresh();
}); });
@ -428,35 +444,26 @@ class WeatherController extends GetxController {
} }
int getTime(List<String> time, String timezone) { int getTime(List<String> time, String timezone) {
int getTime = 0; return time.indexWhere((t) {
for (var i = 0; i < time.length; i++) { final dateTime = DateTime.parse(t);
if (tz.TZDateTime.now(tz.getLocation(timezone)).hour == return tz.TZDateTime.now(tz.getLocation(timezone)).hour ==
DateTime.parse(time[i]).hour && dateTime.hour &&
tz.TZDateTime.now(tz.getLocation(timezone)).day == tz.TZDateTime.now(tz.getLocation(timezone)).day == dateTime.day;
DateTime.parse(time[i]).day) { });
getTime = i;
}
}
return getTime;
} }
int getDay(List<DateTime> time, String timezone) { int getDay(List<DateTime> time, String timezone) {
int getDay = 0; return time.indexWhere(
for (var i = 0; i < time.length; i++) { (t) => tz.TZDateTime.now(tz.getLocation(timezone)).day == t.day,
if (tz.TZDateTime.now(tz.getLocation(timezone)).day == time[i].day) { );
getDay = i;
}
}
return getDay;
} }
TimeOfDay timeConvert(String normTime) { TimeOfDay timeConvert(String normTime) {
int hh = 0; final hh = normTime.endsWith('PM') ? 12 : 0;
if (normTime.endsWith('PM')) hh = 12; final timeParts = normTime.split(' ')[0].split(':');
normTime = normTime.split(' ')[0];
return TimeOfDay( return TimeOfDay(
hour: hh + int.parse(normTime.split(':')[0]) % 24, hour: hh + int.parse(timeParts[0]) % 24,
minute: int.parse(normTime.split(':')[1]) % 60, minute: int.parse(timeParts[1]) % 60,
); );
} }
@ -464,8 +471,8 @@ class WeatherController extends GetxController {
final directory = await getTemporaryDirectory(); final directory = await getTemporaryDirectory();
final imagePath = '${directory.path}/$icon'; final imagePath = '${directory.path}/$icon';
final ByteData data = await rootBundle.load('assets/images/$icon'); final data = await rootBundle.load('assets/images/$icon');
final List<int> bytes = data.buffer.asUint8List(); final bytes = data.buffer.asUint8List();
await File(imagePath).writeAsBytes(bytes); await File(imagePath).writeAsBytes(bytes);
@ -473,12 +480,12 @@ class WeatherController extends GetxController {
} }
void notification(MainWeatherCache mainWeatherCache) async { void notification(MainWeatherCache mainWeatherCache) async {
DateTime now = DateTime.now(); final now = DateTime.now();
int startHour = timeConvert(timeStart).hour; final startHour = timeConvert(timeStart).hour;
int endHour = timeConvert(timeEnd).hour; final endHour = timeConvert(timeEnd).hour;
for (var i = 0; i < mainWeatherCache.time!.length; i += timeRange) { for (var i = 0; i < mainWeatherCache.time!.length; i += timeRange) {
DateTime notificationTime = DateTime.parse(mainWeatherCache.time![i]); final notificationTime = DateTime.parse(mainWeatherCache.time![i]);
if (notificationTime.isAfter(now) && if (notificationTime.isAfter(now) &&
notificationTime.hour >= startHour && notificationTime.hour >= startHour &&
@ -505,7 +512,7 @@ class WeatherController extends GetxController {
void notificationCheck() async { void notificationCheck() async {
if (settings.notifications) { if (settings.notifications) {
final List<PendingNotificationRequest> pendingNotificationRequests = final pendingNotificationRequests =
await flutterLocalNotificationsPlugin.pendingNotificationRequests(); await flutterLocalNotificationsPlugin.pendingNotificationRequests();
if (pendingNotificationRequests.isEmpty) { if (pendingNotificationRequests.isEmpty) {
notification(_mainWeather.value); notification(_mainWeather.value);
@ -513,7 +520,7 @@ class WeatherController extends GetxController {
} }
} }
void reorder(oldIndex, newIndex) { void reorder(int oldIndex, int newIndex) {
if (newIndex > oldIndex) { if (newIndex > oldIndex) {
newIndex -= 1; newIndex -= 1;
} }
@ -533,15 +540,11 @@ class WeatherController extends GetxController {
isar.settings.putSync(settings); isar.settings.putSync(settings);
}); });
return Future.wait<bool?>([ final results = await Future.wait<bool?>([
HomeWidget.saveWidgetData( HomeWidget.saveWidgetData('background_color', color),
'background_color',
color,
),
HomeWidget.updateWidget(androidName: androidWidgetName), HomeWidget.updateWidget(androidName: androidWidgetName),
]).then((value) { ]);
return !value.contains(false); return !results.contains(false);
});
} }
Future<bool> updateWidgetTextColor(String color) async { Future<bool> updateWidgetTextColor(String color) async {
@ -550,15 +553,11 @@ class WeatherController extends GetxController {
isar.settings.putSync(settings); isar.settings.putSync(settings);
}); });
return Future.wait<bool?>([ final results = await Future.wait<bool?>([
HomeWidget.saveWidgetData( HomeWidget.saveWidgetData('text_color', color),
'text_color',
color,
),
HomeWidget.updateWidget(androidName: androidWidgetName), HomeWidget.updateWidget(androidName: androidWidgetName),
]).then((value) { ]);
return !value.contains(false); return !results.contains(false);
});
} }
Future<bool> updateWidget() async { Future<bool> updateWidget() async {
@ -573,34 +572,36 @@ class WeatherController extends GetxController {
WeatherCardSchema, WeatherCardSchema,
], directory: (await getApplicationSupportDirectory()).path); ], directory: (await getApplicationSupportDirectory()).path);
MainWeatherCache? mainWeatherCache; final mainWeatherCache =
mainWeatherCache = isarWidget.mainWeatherCaches.where().findFirstSync(); isarWidget.mainWeatherCaches.where().findFirstSync();
if (mainWeatherCache == null) return false; if (mainWeatherCache == null) return false;
int hour = getTime(mainWeatherCache.time!, mainWeatherCache.timezone!); final hour = getTime(mainWeatherCache.time!, mainWeatherCache.timezone!);
int day = getDay(mainWeatherCache.timeDaily!, mainWeatherCache.timezone!); final day = getDay(mainWeatherCache.timeDaily!, mainWeatherCache.timezone!);
return Future.wait<bool?>([ final results = await Future.wait<bool?>([
HomeWidget.saveWidgetData( HomeWidget.saveWidgetData(
'weather_icon', 'weather_icon',
await getLocalImagePath(StatusWeather().getImageNotification( await getLocalImagePath(
StatusWeather().getImageNotification(
mainWeatherCache.weathercode![hour], mainWeatherCache.weathercode![hour],
mainWeatherCache.time![hour], mainWeatherCache.time![hour],
mainWeatherCache.sunrise![day], mainWeatherCache.sunrise![day],
mainWeatherCache.sunset![day], mainWeatherCache.sunset![day],
))), ),
),
),
HomeWidget.saveWidgetData( HomeWidget.saveWidgetData(
'weather_degree', 'weather_degree',
'${mainWeatherCache.temperature2M?[hour].round()}°', '${mainWeatherCache.temperature2M?[hour].round()}°',
), ),
HomeWidget.updateWidget(androidName: androidWidgetName), HomeWidget.updateWidget(androidName: androidWidgetName),
]).then((value) { ]);
return !value.contains(false); return !results.contains(false);
});
} }
void urlLauncher(String uri) async { void urlLauncher(String uri) async {
final Uri url = Uri.parse(uri); final url = Uri.parse(uri);
if (!await launchUrl(url, mode: LaunchMode.externalApplication)) { if (!await launchUrl(url, mode: LaunchMode.externalApplication)) {
throw Exception('Could not launch $url'); throw Exception('Could not launch $url');
} }

View file

@ -105,43 +105,43 @@ class MainWeatherCache {
}); });
Map<String, dynamic> toJson() => { Map<String, dynamic> toJson() => {
'id': id, 'id': id,
'time': time, 'time': time,
'weathercode': weathercode, 'weathercode': weathercode,
'temperature2M': temperature2M, 'temperature2M': temperature2M,
'apparentTemperature': apparentTemperature, 'apparentTemperature': apparentTemperature,
'relativehumidity2M': relativehumidity2M, 'relativehumidity2M': relativehumidity2M,
'precipitation': precipitation, 'precipitation': precipitation,
'rain': rain, 'rain': rain,
'surfacePressure': surfacePressure, 'surfacePressure': surfacePressure,
'visibility': visibility, 'visibility': visibility,
'evapotranspiration': evapotranspiration, 'evapotranspiration': evapotranspiration,
'windspeed10M': windspeed10M, 'windspeed10M': windspeed10M,
'winddirection10M': winddirection10M, 'winddirection10M': winddirection10M,
'windgusts10M': windgusts10M, 'windgusts10M': windgusts10M,
'cloudcover': cloudcover, 'cloudcover': cloudcover,
'uvIndex': uvIndex, 'uvIndex': uvIndex,
'dewpoint2M': dewpoint2M, 'dewpoint2M': dewpoint2M,
'precipitationProbability': precipitationProbability, 'precipitationProbability': precipitationProbability,
'shortwaveRadiation': shortwaveRadiation, 'shortwaveRadiation': shortwaveRadiation,
'timeDaily': timeDaily, 'timeDaily': timeDaily,
'weathercodeDaily': weathercodeDaily, 'weathercodeDaily': weathercodeDaily,
'temperature2MMax': temperature2MMax, 'temperature2MMax': temperature2MMax,
'temperature2MMin': temperature2MMin, 'temperature2MMin': temperature2MMin,
'apparentTemperatureMax': apparentTemperatureMax, 'apparentTemperatureMax': apparentTemperatureMax,
'apparentTemperatureMin': apparentTemperatureMin, 'apparentTemperatureMin': apparentTemperatureMin,
'sunrise': sunrise, 'sunrise': sunrise,
'sunset': sunset, 'sunset': sunset,
'precipitationSum': precipitationSum, 'precipitationSum': precipitationSum,
'precipitationProbabilityMax': precipitationProbabilityMax, 'precipitationProbabilityMax': precipitationProbabilityMax,
'windspeed10MMax': windspeed10MMax, 'windspeed10MMax': windspeed10MMax,
'windgusts10MMax': windgusts10MMax, 'windgusts10MMax': windgusts10MMax,
'uvIndexMax': uvIndexMax, 'uvIndexMax': uvIndexMax,
'rainSum': rainSum, 'rainSum': rainSum,
'winddirection10MDominant': winddirection10MDominant, 'winddirection10MDominant': winddirection10MDominant,
'timezone': timezone, 'timezone': timezone,
'timestamp': timestamp, 'timestamp': timestamp,
}; };
} }
@collection @collection
@ -152,20 +152,15 @@ class LocationCache {
String? city; String? city;
String? district; String? district;
LocationCache({ LocationCache({this.lat, this.lon, this.city, this.district});
this.lat,
this.lon,
this.city,
this.district,
});
Map<String, dynamic> toJson() => { Map<String, dynamic> toJson() => {
'id': id, 'id': id,
'lat': lat, 'lat': lat,
'lon': lon, 'lon': lon,
'city': city, 'city': city,
'district': district, 'district': district,
}; };
} }
@collection @collection
@ -256,56 +251,57 @@ class WeatherCard {
}); });
Map<String, dynamic> toJson() => { Map<String, dynamic> toJson() => {
'id': id, 'id': id,
'time': time, 'time': time,
'weathercode': weathercode, 'weathercode': weathercode,
'temperature2M': temperature2M, 'temperature2M': temperature2M,
'apparentTemperature': apparentTemperature, 'apparentTemperature': apparentTemperature,
'relativehumidity2M': relativehumidity2M, 'relativehumidity2M': relativehumidity2M,
'precipitation': precipitation, 'precipitation': precipitation,
'rain': rain, 'rain': rain,
'surfacePressure': surfacePressure, 'surfacePressure': surfacePressure,
'visibility': visibility, 'visibility': visibility,
'evapotranspiration': evapotranspiration, 'evapotranspiration': evapotranspiration,
'windspeed10M': windspeed10M, 'windspeed10M': windspeed10M,
'winddirection10M': winddirection10M, 'winddirection10M': winddirection10M,
'windgusts10M': windgusts10M, 'windgusts10M': windgusts10M,
'cloudcover': cloudcover, 'cloudcover': cloudcover,
'uvIndex': uvIndex, 'uvIndex': uvIndex,
'dewpoint2M': dewpoint2M, 'dewpoint2M': dewpoint2M,
'precipitationProbability': precipitationProbability, 'precipitationProbability': precipitationProbability,
'shortwaveRadiation': shortwaveRadiation, 'shortwaveRadiation': shortwaveRadiation,
'timeDaily': timeDaily, 'timeDaily': timeDaily,
'weathercodeDaily': weathercodeDaily, 'weathercodeDaily': weathercodeDaily,
'temperature2MMax': temperature2MMax, 'temperature2MMax': temperature2MMax,
'temperature2MMin': temperature2MMin, 'temperature2MMin': temperature2MMin,
'apparentTemperatureMax': apparentTemperatureMax, 'apparentTemperatureMax': apparentTemperatureMax,
'apparentTemperatureMin': apparentTemperatureMin, 'apparentTemperatureMin': apparentTemperatureMin,
'sunrise': sunrise, 'sunrise': sunrise,
'sunset': sunset, 'sunset': sunset,
'precipitationSum': precipitationSum, 'precipitationSum': precipitationSum,
'precipitationProbabilityMax': precipitationProbabilityMax, 'precipitationProbabilityMax': precipitationProbabilityMax,
'windspeed10MMax': windspeed10MMax, 'windspeed10MMax': windspeed10MMax,
'windgusts10MMax': windgusts10MMax, 'windgusts10MMax': windgusts10MMax,
'uvIndexMax': uvIndexMax, 'uvIndexMax': uvIndexMax,
'rainSum': rainSum, 'rainSum': rainSum,
'winddirection10MDominant': winddirection10MDominant, 'winddirection10MDominant': winddirection10MDominant,
'timezone': timezone, 'timezone': timezone,
'timestamp': timestamp, 'timestamp': timestamp,
'lat': lat, 'lat': lat,
'lon': lon, 'lon': lon,
'city': city, 'city': city,
'district': district, 'district': district,
'index': index, 'index': index,
}; };
factory WeatherCard.fromJson(Map<String, dynamic> json) { factory WeatherCard.fromJson(Map<String, dynamic> json) {
return WeatherCard( return WeatherCard(
time: List<String>.from(json['time'] ?? []), time: List<String>.from(json['time'] ?? []),
weathercode: List<int>.from(json['weathercode'] ?? []), weathercode: List<int>.from(json['weathercode'] ?? []),
temperature2M: List<double>.from(json['temperature2M'] ?? []), temperature2M: List<double>.from(json['temperature2M'] ?? []),
apparentTemperature: apparentTemperature: List<double?>.from(
List<double?>.from(json['apparentTemperature'] ?? []), json['apparentTemperature'] ?? [],
),
relativehumidity2M: List<int?>.from(json['relativehumidity2M'] ?? []), relativehumidity2M: List<int?>.from(json['relativehumidity2M'] ?? []),
precipitation: List<double>.from(json['precipitation'] ?? []), precipitation: List<double>.from(json['precipitation'] ?? []),
rain: List<double?>.from(json['rain'] ?? []), rain: List<double?>.from(json['rain'] ?? []),
@ -318,26 +314,31 @@ class WeatherCard {
cloudcover: List<int?>.from(json['cloudcover'] ?? []), cloudcover: List<int?>.from(json['cloudcover'] ?? []),
uvIndex: List<double?>.from(json['uvIndex'] ?? []), uvIndex: List<double?>.from(json['uvIndex'] ?? []),
dewpoint2M: List<double?>.from(json['dewpoint2M'] ?? []), dewpoint2M: List<double?>.from(json['dewpoint2M'] ?? []),
precipitationProbability: precipitationProbability: List<int?>.from(
List<int?>.from(json['precipitationProbability'] ?? []), json['precipitationProbability'] ?? [],
),
shortwaveRadiation: List<double?>.from(json['shortwaveRadiation'] ?? []), shortwaveRadiation: List<double?>.from(json['shortwaveRadiation'] ?? []),
timeDaily: List<DateTime>.from(json['timeDaily'] ?? []), timeDaily: List<DateTime>.from(json['timeDaily'] ?? []),
weathercodeDaily: List<int?>.from(json['weathercodeDaily'] ?? []), weathercodeDaily: List<int?>.from(json['weathercodeDaily'] ?? []),
temperature2MMax: List<double?>.from(json['temperature2MMax'] ?? []), temperature2MMax: List<double?>.from(json['temperature2MMax'] ?? []),
temperature2MMin: List<double?>.from(json['temperature2MMin'] ?? []), temperature2MMin: List<double?>.from(json['temperature2MMin'] ?? []),
apparentTemperatureMax: apparentTemperatureMax: List<double?>.from(
List<double?>.from(json['apparentTemperatureMax'] ?? []), json['apparentTemperatureMax'] ?? [],
apparentTemperatureMin: ),
List<double?>.from(json['apparentTemperatureMin'] ?? []), apparentTemperatureMin: List<double?>.from(
json['apparentTemperatureMin'] ?? [],
),
windspeed10MMax: List<double?>.from(json['windspeed10MMax'] ?? []), windspeed10MMax: List<double?>.from(json['windspeed10MMax'] ?? []),
windgusts10MMax: List<double?>.from(json['windgusts10MMax'] ?? []), windgusts10MMax: List<double?>.from(json['windgusts10MMax'] ?? []),
uvIndexMax: List<double?>.from(json['uvIndexMax'] ?? []), uvIndexMax: List<double?>.from(json['uvIndexMax'] ?? []),
rainSum: List<double?>.from(json['rainSum'] ?? []), rainSum: List<double?>.from(json['rainSum'] ?? []),
winddirection10MDominant: winddirection10MDominant: List<int?>.from(
List<int?>.from(json['winddirection10MDominant'] ?? []), json['winddirection10MDominant'] ?? [],
),
precipitationSum: List<double?>.from(json['precipitationSum'] ?? []), precipitationSum: List<double?>.from(json['precipitationSum'] ?? []),
precipitationProbabilityMax: precipitationProbabilityMax: List<int?>.from(
List<int?>.from(json['precipitationProbabilityMax'] ?? []), json['precipitationProbabilityMax'] ?? [],
),
sunrise: List<String>.from(json['sunrise'] ?? []), sunrise: List<String>.from(json['sunrise'] ?? []),
sunset: List<String>.from(json['sunset'] ?? []), sunset: List<String>.from(json['sunset'] ?? []),
lat: json['lat'], lat: json['lat'],

View file

@ -15,10 +15,7 @@ import 'package:rain/app/ui/widgets/text_form.dart';
import 'package:rain/main.dart'; import 'package:rain/main.dart';
class SelectGeolocation extends StatefulWidget { class SelectGeolocation extends StatefulWidget {
const SelectGeolocation({ const SelectGeolocation({super.key, required this.isStart});
super.key,
required this.isStart,
});
final bool isStart; final bool isStart;
@override @override
@ -94,19 +91,17 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
resizeToAvoidBottomInset: true, resizeToAvoidBottomInset: true,
appBar: AppBar( appBar: AppBar(
centerTitle: true, centerTitle: true,
leading: widget.isStart leading:
? null widget.isStart
: IconButton( ? null
onPressed: () { : IconButton(
Get.back(); onPressed: () {
}, Get.back();
icon: const Icon( },
IconsaxPlusLinear.arrow_left_3, icon: const Icon(IconsaxPlusLinear.arrow_left_3, size: 20),
size: 20, splashColor: Colors.transparent,
highlightColor: Colors.transparent,
), ),
splashColor: Colors.transparent,
highlightColor: Colors.transparent,
),
automaticallyImplyLeading: false, automaticallyImplyLeading: false,
title: Text( title: Text(
'searchCity'.tr, 'searchCity'.tr,
@ -131,7 +126,8 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
children: [ children: [
Padding( Padding(
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.symmetric(
horizontal: 10), horizontal: 10,
),
child: ClipRRect( child: ClipRRect(
borderRadius: const BorderRadius.all( borderRadius: const BorderRadius.all(
Radius.circular(20), Radius.circular(20),
@ -150,19 +146,22 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
initialZoom: 3, initialZoom: 3,
interactionOptions: interactionOptions:
const InteractionOptions( const InteractionOptions(
flags: InteractiveFlag.all & flags:
~InteractiveFlag.rotate, InteractiveFlag.all &
), ~InteractiveFlag.rotate,
),
cameraConstraint: cameraConstraint:
CameraConstraint.contain( CameraConstraint.contain(
bounds: LatLngBounds( bounds: LatLngBounds(
const LatLng(-90, -180), const LatLng(-90, -180),
const LatLng(90, 180), const LatLng(90, 180),
), ),
), ),
onLongPress: (tapPosition, point) => onLongPress:
fillMap(point.latitude, (tapPosition, point) => fillMap(
point.longitude), point.latitude,
point.longitude,
),
), ),
children: [ children: [
if (_isDarkMode) if (_isDarkMode)
@ -177,9 +176,11 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
attributions: [ attributions: [
TextSourceAttribution( TextSourceAttribution(
'OpenStreetMap contributors', 'OpenStreetMap contributors',
onTap: () => weatherController onTap:
.urlLauncher( () => weatherController
'https://openstreetmap.org/copyright'), .urlLauncher(
'https://openstreetmap.org/copyright',
),
), ),
], ],
), ),
@ -189,8 +190,12 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
), ),
), ),
Padding( Padding(
padding: padding: const EdgeInsets.fromLTRB(
const EdgeInsets.fromLTRB(10, 15, 10, 5), 10,
15,
10,
5,
),
child: Text( child: Text(
'searchMethod'.tr, 'searchMethod'.tr,
style: context.theme.textTheme.bodyLarge style: context.theme.textTheme.bodyLarge
@ -204,42 +209,54 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
child: RawAutocomplete<Result>( child: RawAutocomplete<Result>(
focusNode: _focusNode, focusNode: _focusNode,
textEditingController: _controller, textEditingController: _controller,
fieldViewBuilder: (BuildContext context, fieldViewBuilder: (
TextEditingController BuildContext context,
fieldTextEditingController, TextEditingController
FocusNode fieldFocusNode, fieldTextEditingController,
VoidCallback onFieldSubmitted) { FocusNode fieldFocusNode,
VoidCallback onFieldSubmitted,
) {
return MyTextForm( return MyTextForm(
elevation: kTextFieldElevation, elevation: kTextFieldElevation,
labelText: 'search'.tr, labelText: 'search'.tr,
type: TextInputType.text, type: TextInputType.text,
icon: const Icon(IconsaxPlusLinear icon: const Icon(
.global_search), IconsaxPlusLinear.global_search,
),
controller: _controller, controller: _controller,
margin: const EdgeInsets.only( margin: const EdgeInsets.only(
left: 10, right: 10, top: 10), left: 10,
right: 10,
top: 10,
),
focusNode: _focusNode, focusNode: _focusNode,
); );
}, },
optionsBuilder: (TextEditingValue optionsBuilder: (
textEditingValue) { TextEditingValue textEditingValue,
) {
if (textEditingValue.text.isEmpty) { if (textEditingValue.text.isEmpty) {
return const Iterable< return const Iterable<
Result>.empty(); Result
>.empty();
} }
return WeatherAPI().getCity( return WeatherAPI().getCity(
textEditingValue.text, locale); textEditingValue.text,
locale,
);
}, },
onSelected: (Result selection) => onSelected:
fillController(selection), (Result selection) =>
displayStringForOption: (Result fillController(selection),
option) => displayStringForOption:
'${option.name}, ${option.admin1}', (Result option) =>
optionsViewBuilder: '${option.name}, ${option.admin1}',
(BuildContext context, optionsViewBuilder: (
AutocompleteOnSelected<Result> BuildContext context,
onSelected, AutocompleteOnSelected<Result>
Iterable<Result> options) { onSelected,
Iterable<Result> options,
) {
return Padding( return Padding(
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.symmetric(
horizontal: 10, horizontal: 10,
@ -255,21 +272,26 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
padding: EdgeInsets.zero, padding: EdgeInsets.zero,
shrinkWrap: true, shrinkWrap: true,
itemCount: options.length, itemCount: options.length,
itemBuilder: itemBuilder: (
(BuildContext context, BuildContext context,
int index) { int index,
) {
final Result option = final Result option =
options options.elementAt(
.elementAt(index); index,
);
return InkWell( return InkWell(
onTap: () => onTap:
onSelected(option), () => onSelected(
option,
),
child: ListTile( child: ListTile(
title: Text( title: Text(
'${option.name}, ${option.admin1}', '${option.name}, ${option.admin1}',
style: context style:
.textTheme context
.labelLarge, .textTheme
.labelLarge,
), ),
), ),
); );
@ -292,47 +314,53 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
child: IconButton( child: IconButton(
onPressed: () async { onPressed: () async {
bool serviceEnabled = bool serviceEnabled =
await Geolocator await Geolocator.isLocationServiceEnabled();
.isLocationServiceEnabled();
if (!serviceEnabled) { if (!serviceEnabled) {
if (!context.mounted) return; if (!context.mounted) return;
await showAdaptiveDialog( await showAdaptiveDialog(
context: context, context: context,
builder: builder: (
(BuildContext context) { BuildContext context,
) {
return AlertDialog.adaptive( return AlertDialog.adaptive(
title: Text( title: Text(
'location'.tr, 'location'.tr,
style: context style:
.textTheme.titleLarge, context
.textTheme
.titleLarge,
), ),
content: Text( content: Text(
'no_location'.tr, 'no_location'.tr,
style: context.textTheme style:
.titleMedium, context
.textTheme
.titleMedium,
), ),
actions: [ actions: [
TextButton( TextButton(
onPressed: () => onPressed:
Get.back( () => Get.back(
result: false), result: false,
),
child: Text( child: Text(
'cancel'.tr, 'cancel'.tr,
style: context style: context
.textTheme .textTheme
.titleMedium .titleMedium
?.copyWith( ?.copyWith(
color: Colors color:
.blueAccent, Colors
), .blueAccent,
),
), ),
), ),
TextButton( TextButton(
onPressed: () { onPressed: () {
Geolocator Geolocator.openLocationSettings();
.openLocationSettings();
Get.back( Get.back(
result: true); result: true,
);
}, },
child: Text( child: Text(
'settings'.tr, 'settings'.tr,
@ -340,8 +368,10 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
.textTheme .textTheme
.titleMedium .titleMedium
?.copyWith( ?.copyWith(
color: Colors color:
.green), Colors
.green,
),
), ),
), ),
], ],
@ -380,8 +410,9 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
if (value == null || value.isEmpty) { if (value == null || value.isEmpty) {
return 'validateValue'.tr; return 'validateValue'.tr;
} }
double? numericValue = double? numericValue = double.tryParse(
double.tryParse(value); value,
);
if (numericValue == null) { if (numericValue == null) {
return 'validateNumber'.tr; return 'validateNumber'.tr;
} }
@ -407,8 +438,9 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
if (value == null || value.isEmpty) { if (value == null || value.isEmpty) {
return 'validateValue'.tr; return 'validateValue'.tr;
} }
double? numericValue = double? numericValue = double.tryParse(
double.tryParse(value); value,
);
if (numericValue == null) { if (numericValue == null) {
return 'validateNumber'.tr; return 'validateNumber'.tr;
} }
@ -424,10 +456,14 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
controller: _controllerCity, controller: _controllerCity,
labelText: 'city'.tr, labelText: 'city'.tr,
type: TextInputType.name, type: TextInputType.name,
icon: icon: const Icon(
const Icon(IconsaxPlusLinear.building_3), IconsaxPlusLinear.building_3,
),
margin: const EdgeInsets.only( margin: const EdgeInsets.only(
left: 10, right: 10, top: 10), left: 10,
right: 10,
top: 10,
),
validator: (value) { validator: (value) {
if (value == null || value.isEmpty) { if (value == null || value.isEmpty) {
return 'validateName'.tr; return 'validateName'.tr;
@ -442,7 +478,10 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
type: TextInputType.streetAddress, type: TextInputType.streetAddress,
icon: const Icon(IconsaxPlusLinear.global), icon: const Icon(IconsaxPlusLinear.global),
margin: const EdgeInsets.only( margin: const EdgeInsets.only(
left: 10, right: 10, top: 10), left: 10,
right: 10,
top: 10,
),
), ),
const Gap(20), const Gap(20),
], ],
@ -453,8 +492,10 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
), ),
), ),
Padding( Padding(
padding: padding: const EdgeInsets.symmetric(
const EdgeInsets.symmetric(horizontal: 10, vertical: 8), horizontal: 10,
vertical: 8,
),
child: MyTextButton( child: MyTextButton(
buttonName: 'done'.tr, buttonName: 'done'.tr,
onPressed: () async { onPressed: () async {
@ -472,8 +513,10 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
_controllerCity.text, _controllerCity.text,
); );
widget.isStart widget.isStart
? Get.off(() => const HomePage(), ? Get.off(
transition: Transition.downToUp) () => const HomePage(),
transition: Transition.downToUp,
)
: Get.back(); : Get.back();
} catch (error) { } catch (error) {
Future.error(error); Future.error(error);
@ -487,9 +530,7 @@ class _SelectGeolocationState extends State<SelectGeolocation> {
if (isLoading) if (isLoading)
BackdropFilter( BackdropFilter(
filter: ImageFilter.blur(sigmaY: 3, sigmaX: 3), filter: ImageFilter.blur(sigmaY: 3, sigmaX: 3),
child: const Center( child: const Center(child: CircularProgressIndicator()),
child: CircularProgressIndicator(),
),
), ),
], ],
), ),

View file

@ -102,20 +102,20 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
automaticallyImplyLeading: false, automaticallyImplyLeading: false,
leading: switch (tabIndex) { leading: switch (tabIndex) {
0 => IconButton( 0 => IconButton(
onPressed: () { onPressed: () {
Get.to(() => const SelectGeolocation(isStart: false), Get.to(
transition: Transition.downToUp); () => const SelectGeolocation(isStart: false),
}, transition: Transition.downToUp,
icon: const Icon( );
IconsaxPlusLinear.global_search, },
size: 18, icon: const Icon(IconsaxPlusLinear.global_search, size: 18),
), ),
),
int() => null, int() => null,
}, },
title: switch (tabIndex) { title: switch (tabIndex) {
0 => visible 0 =>
? RawAutocomplete<Result>( visible
? RawAutocomplete<Result>(
focusNode: _focusNode, focusNode: _focusNode,
textEditingController: _controller, textEditingController: _controller,
fieldViewBuilder: (_, __, ___, ____) { fieldViewBuilder: (_, __, ___, ____) {
@ -123,17 +123,17 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
controller: _controller, controller: _controller,
focusNode: _focusNode, focusNode: _focusNode,
style: labelLarge?.copyWith(fontSize: 16), style: labelLarge?.copyWith(fontSize: 16),
decoration: InputDecoration( decoration: InputDecoration(hintText: 'search'.tr),
hintText: 'search'.tr,
),
); );
}, },
optionsBuilder: (TextEditingValue textEditingValue) { optionsBuilder: (TextEditingValue textEditingValue) {
if (textEditingValue.text.isEmpty) { if (textEditingValue.text.isEmpty) {
return const Iterable<Result>.empty(); return const Iterable<Result>.empty();
} }
return WeatherAPI() return WeatherAPI().getCity(
.getCity(textEditingValue.text, locale); textEditingValue.text,
locale,
);
}, },
onSelected: (Result selection) async { onSelected: (Result selection) async {
await weatherController.deleteAll(true); await weatherController.deleteAll(true);
@ -148,11 +148,13 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
_focusNode.unfocus(); _focusNode.unfocus();
setState(() {}); setState(() {});
}, },
displayStringForOption: (Result option) => displayStringForOption:
'${option.name}, ${option.admin1}', (Result option) => '${option.name}, ${option.admin1}',
optionsViewBuilder: (BuildContext context, optionsViewBuilder: (
AutocompleteOnSelected<Result> onSelected, BuildContext context,
Iterable<Result> options) { AutocompleteOnSelected<Result> onSelected,
Iterable<Result> options,
) {
return Align( return Align(
alignment: Alignment.topLeft, alignment: Alignment.topLeft,
child: Material( child: Material(
@ -165,8 +167,9 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
shrinkWrap: true, shrinkWrap: true,
itemCount: options.length, itemCount: options.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
final Result option = final Result option = options.elementAt(
options.elementAt(index); index,
);
return InkWell( return InkWell(
onTap: () => onSelected(option), onTap: () => onSelected(option),
child: ListTile( child: ListTile(
@ -183,78 +186,63 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
); );
}, },
) )
: Obx( : Obx(() {
() { final location = weatherController.location;
final location = weatherController.location; final city = location.city;
final city = location.city; final district = location.district;
final district = location.district; return Text(
return Text( weatherController.isLoading.isFalse
weatherController.isLoading.isFalse ? district!.isEmpty
? district!.isEmpty ? '$city'
? '$city' : city!.isEmpty
: city!.isEmpty ? district
? district : city == district
: city == district ? city
? city : '$city'
: '$city' ', $district' ', $district'
: settings.location : settings.location
? 'search'.tr ? 'search'.tr
: (isar.locationCaches.where().findAllSync()) : (isar.locationCaches.where().findAllSync())
.isNotEmpty .isNotEmpty
? 'loading'.tr ? 'loading'.tr
: 'searchCity'.tr, : 'searchCity'.tr,
style: textStyle, style: textStyle,
); );
}, }),
), 1 => Text('cities'.tr, style: textStyle),
1 => Text( 2 =>
'cities'.tr, settings.hideMap
style: textStyle, ? Text('settings_full'.tr, style: textStyle)
), : Text('map'.tr, style: textStyle),
2 => settings.hideMap 3 => Text('settings_full'.tr, style: textStyle),
? Text(
'settings_full'.tr,
style: textStyle,
)
: Text(
'map'.tr,
style: textStyle,
),
3 => Text(
'settings_full'.tr,
style: textStyle,
),
int() => null, int() => null,
}, },
actions: switch (tabIndex) { actions: switch (tabIndex) {
0 => [ 0 => [
IconButton( IconButton(
onPressed: () { onPressed: () {
if (visible) { if (visible) {
_controller.clear(); _controller.clear();
_focusNode.unfocus(); _focusNode.unfocus();
visible = false; visible = false;
} else { } else {
visible = true; visible = true;
} }
setState(() {}); setState(() {});
}, },
icon: Icon( icon: Icon(
visible visible
? IconsaxPlusLinear.close_circle ? IconsaxPlusLinear.close_circle
: IconsaxPlusLinear.search_normal_1, : IconsaxPlusLinear.search_normal_1,
size: 18, size: 18,
), ),
) ),
], ],
int() => null, int() => null,
}, },
), ),
body: SafeArea( body: SafeArea(
child: TabBarView( child: TabBarView(controller: tabController, children: pages),
controller: tabController,
children: pages,
),
), ),
bottomNavigationBar: NavigationBar( bottomNavigationBar: NavigationBar(
onDestinationSelected: (int index) => changeTabIndex(index), onDestinationSelected: (int index) => changeTabIndex(index),
@ -283,19 +271,20 @@ class _HomePageState extends State<HomePage> with TickerProviderStateMixin {
), ),
], ],
), ),
floatingActionButton: tabIndex == 1 floatingActionButton:
? FloatingActionButton( tabIndex == 1
onPressed: () => showModalBottomSheet( ? FloatingActionButton(
context: context, onPressed:
isScrollControlled: true, () => showModalBottomSheet(
enableDrag: false, context: context,
builder: (BuildContext context) => const CreatePlace(), isScrollControlled: true,
), enableDrag: false,
child: const Icon( builder:
IconsaxPlusLinear.add, (BuildContext context) => const CreatePlace(),
), ),
) child: const Icon(IconsaxPlusLinear.add),
: null, )
: null,
), ),
), ),
); );

View file

@ -35,9 +35,7 @@ class _MainPageState extends State<MainPage> {
if (weatherController.isLoading.isTrue) { if (weatherController.isLoading.isTrue) {
return ListView( return ListView(
children: const [ children: const [
MyShimmer( MyShimmer(hight: 200),
hight: 200,
),
MyShimmer( MyShimmer(
hight: 130, hight: 130,
edgeInsetsMargin: EdgeInsets.symmetric(vertical: 15), edgeInsetsMargin: EdgeInsets.symmetric(vertical: 15),
@ -53,7 +51,7 @@ class _MainPageState extends State<MainPage> {
MyShimmer( MyShimmer(
hight: 450, hight: 450,
edgeInsetsMargin: EdgeInsets.only(bottom: 15), edgeInsetsMargin: EdgeInsets.only(bottom: 15),
) ),
], ],
); );
} }
@ -82,8 +80,10 @@ class _MainPageState extends State<MainPage> {
Card( Card(
margin: const EdgeInsets.only(bottom: 15), margin: const EdgeInsets.only(bottom: 15),
child: Padding( child: Padding(
padding: padding: const EdgeInsets.symmetric(
const EdgeInsets.symmetric(horizontal: 10, vertical: 5), horizontal: 10,
vertical: 5,
),
child: SizedBox( child: SizedBox(
height: 135, height: 135,
child: ScrollablePositionedList.separated( child: ScrollablePositionedList.separated(
@ -115,9 +115,13 @@ class _MainPageState extends State<MainPage> {
vertical: 5, vertical: 5,
), ),
decoration: BoxDecoration( decoration: BoxDecoration(
color: i == hourOfDay color:
? context.theme.colorScheme.secondaryContainer i == hourOfDay
: Colors.transparent, ? context
.theme
.colorScheme
.secondaryContainer
: Colors.transparent,
borderRadius: const BorderRadius.all( borderRadius: const BorderRadius.all(
Radius.circular(20), Radius.circular(20),
), ),
@ -136,10 +140,7 @@ class _MainPageState extends State<MainPage> {
), ),
), ),
), ),
SunsetSunrise( SunsetSunrise(timeSunrise: sunrise, timeSunset: sunset),
timeSunrise: sunrise,
timeSunset: sunset,
),
DescContainer( DescContainer(
humidity: mainWeather.relativehumidity2M?[hourOfDay], humidity: mainWeather.relativehumidity2M?[hourOfDay],
wind: mainWeather.windspeed10M?[hourOfDay], wind: mainWeather.windspeed10M?[hourOfDay],
@ -162,13 +163,12 @@ class _MainPageState extends State<MainPage> {
), ),
DailyContainer( DailyContainer(
weatherData: weatherCard, weatherData: weatherCard,
onTap: () => Get.to( onTap:
() => DailyCardList( () => Get.to(
weatherData: weatherCard, () => DailyCardList(weatherData: weatherCard),
), transition: Transition.downToUp,
transition: Transition.downToUp, ),
), ),
)
], ],
); );
}), }),

View file

@ -66,10 +66,9 @@ class _MapPageState extends State<MapPage> with TickerProviderStateMixin {
_offsetAnimation = Tween<Offset>( _offsetAnimation = Tween<Offset>(
begin: const Offset(0.0, 1.0), begin: const Offset(0.0, 1.0),
end: Offset.zero, end: Offset.zero,
).animate(CurvedAnimation( ).animate(
parent: _animationController, CurvedAnimation(parent: _animationController, curve: Curves.easeInOut),
curve: Curves.easeInOut, );
));
super.initState(); super.initState();
} }
@ -114,25 +113,26 @@ class _MapPageState extends State<MapPage> with TickerProviderStateMixin {
_focusNode.unfocus(); _focusNode.unfocus();
} }
Widget _buidStyleMarkers(int weathercode, String time, String sunrise, Widget _buidStyleMarkers(
String sunset, double temperature2M) { int weathercode,
String time,
String sunrise,
String sunset,
double temperature2M,
) {
return Card( return Card(
child: Row( child: Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Image.asset( Image.asset(
statusWeather.getImageNow( statusWeather.getImageNow(weathercode, time, sunrise, sunset),
weathercode,
time,
sunrise,
sunset,
),
scale: 18, scale: 18,
), ),
const MaxGap(5), const MaxGap(5),
Text( Text(
statusData statusData.getDegree(
.getDegree(roundDegree ? temperature2M.round() : temperature2M), roundDegree ? temperature2M.round() : temperature2M,
),
style: context.textTheme.labelLarge?.copyWith( style: context.textTheme.labelLarge?.copyWith(
fontWeight: FontWeight.bold, fontWeight: FontWeight.bold,
fontSize: 16, fontSize: 16,
@ -144,7 +144,10 @@ class _MapPageState extends State<MapPage> with TickerProviderStateMixin {
} }
Marker _buildMainLocationMarker( Marker _buildMainLocationMarker(
WeatherCard weatherCard, int hourOfDay, int dayOfNow) { WeatherCard weatherCard,
int hourOfDay,
int dayOfNow,
) {
return Marker( return Marker(
height: 50, height: 50,
width: 100, width: 100,
@ -171,15 +174,25 @@ class _MapPageState extends State<MapPage> with TickerProviderStateMixin {
onTap: () => _onMarkerTap(weatherCardList), onTap: () => _onMarkerTap(weatherCardList),
child: _buidStyleMarkers( child: _buidStyleMarkers(
weatherCardList.weathercode![weatherController.getTime( weatherCardList.weathercode![weatherController.getTime(
weatherCardList.time!, weatherCardList.timezone!)], weatherCardList.time!,
weatherCardList.timezone!,
)],
weatherCardList.time![weatherController.getTime( weatherCardList.time![weatherController.getTime(
weatherCardList.time!, weatherCardList.timezone!)], weatherCardList.time!,
weatherCardList.timezone!,
)],
weatherCardList.sunrise![weatherController.getDay( weatherCardList.sunrise![weatherController.getDay(
weatherCardList.timeDaily!, weatherCardList.timezone!)], weatherCardList.timeDaily!,
weatherCardList.timezone!,
)],
weatherCardList.sunset![weatherController.getDay( weatherCardList.sunset![weatherController.getDay(
weatherCardList.timeDaily!, weatherCardList.timezone!)], weatherCardList.timeDaily!,
weatherCardList.timezone!,
)],
weatherCardList.temperature2M![weatherController.getTime( weatherCardList.temperature2M![weatherController.getTime(
weatherCardList.time!, weatherCardList.timezone!)], weatherCardList.time!,
weatherCardList.timezone!,
)],
), ),
), ),
); );
@ -199,25 +212,26 @@ class _MapPageState extends State<MapPage> with TickerProviderStateMixin {
Widget _buildWeatherCard() { Widget _buildWeatherCard() {
return _isCardVisible && _selectedWeatherCard != null return _isCardVisible && _selectedWeatherCard != null
? SlideTransition( ? SlideTransition(
position: _offsetAnimation, position: _offsetAnimation,
child: GestureDetector( child: GestureDetector(
onTap: () => Get.to( onTap:
() => PlaceInfo(weatherCard: _selectedWeatherCard!), () => Get.to(
transition: Transition.downToUp, () => PlaceInfo(weatherCard: _selectedWeatherCard!),
), transition: Transition.downToUp,
child: PlaceCard( ),
time: _selectedWeatherCard!.time!, child: PlaceCard(
timeDaily: _selectedWeatherCard!.timeDaily!, time: _selectedWeatherCard!.time!,
timeDay: _selectedWeatherCard!.sunrise!, timeDaily: _selectedWeatherCard!.timeDaily!,
timeNight: _selectedWeatherCard!.sunset!, timeDay: _selectedWeatherCard!.sunrise!,
weather: _selectedWeatherCard!.weathercode!, timeNight: _selectedWeatherCard!.sunset!,
degree: _selectedWeatherCard!.temperature2M!, weather: _selectedWeatherCard!.weathercode!,
district: _selectedWeatherCard!.district!, degree: _selectedWeatherCard!.temperature2M!,
city: _selectedWeatherCard!.city!, district: _selectedWeatherCard!.district!,
timezone: _selectedWeatherCard!.timezone!, city: _selectedWeatherCard!.city!,
), timezone: _selectedWeatherCard!.timezone!,
), ),
) ),
)
: const SizedBox.shrink(); : const SizedBox.shrink();
} }
@ -261,15 +275,17 @@ class _MapPageState extends State<MapPage> with TickerProviderStateMixin {
), ),
), ),
onTap: (_, __) => _hideCard(), onTap: (_, __) => _hideCard(),
onLongPress: (tapPosition, point) => showModalBottomSheet( onLongPress:
context: context, (tapPosition, point) => showModalBottomSheet(
isScrollControlled: true, context: context,
enableDrag: false, isScrollControlled: true,
builder: (BuildContext context) => CreatePlace( enableDrag: false,
latitude: '${point.latitude}', builder:
longitude: '${point.longitude}', (BuildContext context) => CreatePlace(
), latitude: '${point.latitude}',
), longitude: '${point.longitude}',
),
),
), ),
children: [ children: [
if (_isDarkMode) if (_isDarkMode)
@ -290,8 +306,10 @@ class _MapPageState extends State<MapPage> with TickerProviderStateMixin {
attributions: [ attributions: [
TextSourceAttribution( TextSourceAttribution(
'OpenStreetMap contributors', 'OpenStreetMap contributors',
onTap: () => weatherController onTap:
.urlLauncher('https://openstreetmap.org/copyright'), () => weatherController.urlLauncher(
'https://openstreetmap.org/copyright',
),
), ),
], ],
), ),
@ -305,14 +323,15 @@ class _MapPageState extends State<MapPage> with TickerProviderStateMixin {
dayOfNow, dayOfNow,
); );
final cardMarkers = weatherController.weatherCards final cardMarkers =
.map((weatherCardList) => weatherController.weatherCards
_buildCardMarker(weatherCardList)) .map(
.toList(); (weatherCardList) =>
_buildCardMarker(weatherCardList),
)
.toList();
return MarkerLayer( return MarkerLayer(markers: [mainMarker, ...cardMarkers]);
markers: [mainMarker, ...cardMarkers],
);
}), }),
ExpandableFab( ExpandableFab(
key: _fabKey, key: _fabKey,
@ -331,24 +350,32 @@ class _MapPageState extends State<MapPage> with TickerProviderStateMixin {
FloatingActionButton( FloatingActionButton(
heroTag: null, heroTag: null,
child: const Icon(IconsaxPlusLinear.home_2), child: const Icon(IconsaxPlusLinear.home_2),
onPressed: () => _resetMapOrientation( onPressed:
center: () => _resetMapOrientation(
LatLng(mainLocation.lat!, mainLocation.lon!), center: LatLng(
zoom: 8), mainLocation.lat!,
mainLocation.lon!,
),
zoom: 8,
),
), ),
FloatingActionButton( FloatingActionButton(
heroTag: null, heroTag: null,
child: const Icon(IconsaxPlusLinear.search_zoom_out_1), child: const Icon(IconsaxPlusLinear.search_zoom_out_1),
onPressed: () => _animatedMapController.animatedZoomOut( onPressed:
customId: _useTransformer ? _useTransformerId : null, () => _animatedMapController.animatedZoomOut(
), customId:
_useTransformer ? _useTransformerId : null,
),
), ),
FloatingActionButton( FloatingActionButton(
heroTag: null, heroTag: null,
child: const Icon(IconsaxPlusLinear.search_zoom_in), child: const Icon(IconsaxPlusLinear.search_zoom_in),
onPressed: () => _animatedMapController.animatedZoomIn( onPressed:
customId: _useTransformer ? _useTransformerId : null, () => _animatedMapController.animatedZoomIn(
), customId:
_useTransformer ? _useTransformerId : null,
),
), ),
], ],
), ),
@ -363,10 +390,12 @@ class _MapPageState extends State<MapPage> with TickerProviderStateMixin {
RawAutocomplete<Result>( RawAutocomplete<Result>(
focusNode: _focusNode, focusNode: _focusNode,
textEditingController: _controllerSearch, textEditingController: _controllerSearch,
fieldViewBuilder: (BuildContext context, fieldViewBuilder: (
TextEditingController fieldTextEditingController, BuildContext context,
FocusNode fieldFocusNode, TextEditingController fieldTextEditingController,
VoidCallback onFieldSubmitted) { FocusNode fieldFocusNode,
VoidCallback onFieldSubmitted,
) {
return MyTextForm( return MyTextForm(
labelText: 'search'.tr, labelText: 'search'.tr,
type: TextInputType.text, type: TextInputType.text,
@ -375,18 +404,19 @@ class _MapPageState extends State<MapPage> with TickerProviderStateMixin {
margin: const EdgeInsets.only(left: 10, right: 10, top: 10), margin: const EdgeInsets.only(left: 10, right: 10, top: 10),
focusNode: _focusNode, focusNode: _focusNode,
onChanged: (value) => setState(() {}), onChanged: (value) => setState(() {}),
iconButton: _controllerSearch.text.isNotEmpty iconButton:
? IconButton( _controllerSearch.text.isNotEmpty
onPressed: () { ? IconButton(
_controllerSearch.clear(); onPressed: () {
}, _controllerSearch.clear();
icon: const Icon( },
IconsaxPlusLinear.close_circle, icon: const Icon(
color: Colors.grey, IconsaxPlusLinear.close_circle,
size: 20, color: Colors.grey,
), size: 20,
) ),
: null, )
: null,
); );
}, },
optionsBuilder: (TextEditingValue textEditingValue) { optionsBuilder: (TextEditingValue textEditingValue) {
@ -397,18 +427,24 @@ class _MapPageState extends State<MapPage> with TickerProviderStateMixin {
}, },
onSelected: (Result selection) { onSelected: (Result selection) {
_animatedMapController.mapController.move( _animatedMapController.mapController.move(
LatLng(selection.latitude, selection.longitude), 14); LatLng(selection.latitude, selection.longitude),
14,
);
_controllerSearch.clear(); _controllerSearch.clear();
_focusNode.unfocus(); _focusNode.unfocus();
}, },
displayStringForOption: (Result option) => displayStringForOption:
'${option.name}, ${option.admin1}', (Result option) => '${option.name}, ${option.admin1}',
optionsViewBuilder: (BuildContext context, optionsViewBuilder: (
AutocompleteOnSelected<Result> onSelected, BuildContext context,
Iterable<Result> options) { AutocompleteOnSelected<Result> onSelected,
Iterable<Result> options,
) {
return Padding( return Padding(
padding: padding: const EdgeInsets.symmetric(
const EdgeInsets.symmetric(horizontal: 10, vertical: 5), horizontal: 10,
vertical: 5,
),
child: Align( child: Align(
alignment: Alignment.topCenter, alignment: Alignment.topCenter,
child: Material( child: Material(

View file

@ -32,8 +32,10 @@ class _OnBordingState extends State<OnBording> {
void onBoardHome() { void onBoardHome() {
settings.onboard = true; settings.onboard = true;
isar.writeTxnSync(() => isar.settings.putSync(settings)); isar.writeTxnSync(() => isar.settings.putSync(settings));
Get.off(() => const SelectGeolocation(isStart: true), Get.off(
transition: Transition.downToUp); () => const SelectGeolocation(isStart: true),
transition: Transition.downToUp,
);
} }
@override @override
@ -52,22 +54,24 @@ class _OnBordingState extends State<OnBording> {
pageIndex = index; pageIndex = index;
}); });
}, },
itemBuilder: (context, index) => OnboardContent( itemBuilder:
image: data[index].image, (context, index) => OnboardContent(
title: data[index].title, image: data[index].image,
description: data[index].description, title: data[index].title,
), description: data[index].description,
),
), ),
), ),
Row( Row(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
...List.generate( ...List.generate(
data.length, data.length,
(index) => Padding( (index) => Padding(
padding: const EdgeInsets.symmetric(horizontal: 5), padding: const EdgeInsets.symmetric(horizontal: 5),
child: DotIndicator(isActive: index == pageIndex), child: DotIndicator(isActive: index == pageIndex),
)), ),
),
], ],
), ),
Padding( Padding(
@ -79,12 +83,12 @@ class _OnBordingState extends State<OnBording> {
pageIndex == data.length - 1 pageIndex == data.length - 1
? onBoardHome() ? onBoardHome()
: pageController.nextPage( : pageController.nextPage(
duration: const Duration(milliseconds: 300), duration: const Duration(milliseconds: 300),
curve: Curves.ease, curve: Curves.ease,
); );
}, },
), ),
) ),
], ],
), ),
), ),
@ -93,10 +97,7 @@ class _OnBordingState extends State<OnBording> {
} }
class DotIndicator extends StatelessWidget { class DotIndicator extends StatelessWidget {
const DotIndicator({ const DotIndicator({super.key, this.isActive = false});
super.key,
this.isActive = false,
});
final bool isActive; final bool isActive;
@ -107,9 +108,10 @@ class DotIndicator extends StatelessWidget {
height: 8, height: 8,
width: 8, width: 8,
decoration: BoxDecoration( decoration: BoxDecoration(
color: isActive color:
? context.theme.colorScheme.secondary isActive
: context.theme.colorScheme.secondaryContainer, ? context.theme.colorScheme.secondary
: context.theme.colorScheme.secondaryContainer,
shape: BoxShape.circle, shape: BoxShape.circle,
), ),
); );
@ -128,17 +130,20 @@ class Onboard {
final List<Onboard> data = [ final List<Onboard> data = [
Onboard( Onboard(
image: 'assets/icons/Rain.png', image: 'assets/icons/Rain.png',
title: 'name'.tr, title: 'name'.tr,
description: 'description'.tr), description: 'description'.tr,
),
Onboard( Onboard(
image: 'assets/icons/Design.png', image: 'assets/icons/Design.png',
title: 'name2'.tr, title: 'name2'.tr,
description: 'description2'.tr), description: 'description2'.tr,
),
Onboard( Onboard(
image: 'assets/icons/Team.png', image: 'assets/icons/Team.png',
title: 'name3'.tr, title: 'name3'.tr,
description: 'description3'.tr), description: 'description3'.tr,
),
]; ];
class OnboardContent extends StatelessWidget { class OnboardContent extends StatelessWidget {
@ -158,14 +163,12 @@ class OnboardContent extends StatelessWidget {
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Image.asset( Image.asset(image, scale: 5),
image,
scale: 5,
),
Text( Text(
title, title,
style: context.textTheme.titleLarge style: context.textTheme.titleLarge?.copyWith(
?.copyWith(fontWeight: FontWeight.w600), fontWeight: FontWeight.w600,
),
), ),
const Gap(10), const Gap(10),
SizedBox( SizedBox(

View file

@ -12,10 +12,7 @@ import 'package:rain/app/ui/widgets/weather/sunset_sunrise.dart';
import 'package:scrollable_positioned_list/scrollable_positioned_list.dart'; import 'package:scrollable_positioned_list/scrollable_positioned_list.dart';
class PlaceInfo extends StatefulWidget { class PlaceInfo extends StatefulWidget {
const PlaceInfo({ const PlaceInfo({super.key, required this.weatherCard});
super.key,
required this.weatherCard,
});
final WeatherCard weatherCard; final WeatherCard weatherCard;
@override @override
@ -37,10 +34,14 @@ class _PlaceInfoState extends State<PlaceInfo> {
void getTime() { void getTime() {
final weatherCard = widget.weatherCard; final weatherCard = widget.weatherCard;
timeNow = timeNow = weatherController.getTime(
weatherController.getTime(weatherCard.time!, weatherCard.timezone!); weatherCard.time!,
dayNow = weatherCard.timezone!,
weatherController.getDay(weatherCard.timeDaily!, weatherCard.timezone!); );
dayNow = weatherController.getDay(
weatherCard.timeDaily!,
weatherCard.timezone!,
);
Future.delayed(const Duration(milliseconds: 30), () { Future.delayed(const Duration(milliseconds: 30), () {
itemScrollController.scrollTo( itemScrollController.scrollTo(
index: timeNow, index: timeNow,
@ -66,10 +67,7 @@ class _PlaceInfoState extends State<PlaceInfo> {
automaticallyImplyLeading: false, automaticallyImplyLeading: false,
leading: IconButton( leading: IconButton(
onPressed: () => Get.back(), onPressed: () => Get.back(),
icon: const Icon( icon: const Icon(IconsaxPlusLinear.arrow_left_3, size: 20),
IconsaxPlusLinear.arrow_left_3,
size: 20,
),
), ),
title: Text( title: Text(
weatherCard.district!.isNotEmpty weatherCard.district!.isNotEmpty
@ -100,8 +98,10 @@ class _PlaceInfoState extends State<PlaceInfo> {
Card( Card(
margin: const EdgeInsets.only(bottom: 15), margin: const EdgeInsets.only(bottom: 15),
child: Padding( child: Padding(
padding: padding: const EdgeInsets.symmetric(
const EdgeInsets.symmetric(horizontal: 10, vertical: 5), horizontal: 10,
vertical: 5,
),
child: SizedBox( child: SizedBox(
height: 135, height: 135,
child: ScrollablePositionedList.separated( child: ScrollablePositionedList.separated(
@ -116,35 +116,42 @@ class _PlaceInfoState extends State<PlaceInfo> {
scrollDirection: Axis.horizontal, scrollDirection: Axis.horizontal,
itemScrollController: itemScrollController, itemScrollController: itemScrollController,
itemCount: weatherCard.time!.length, itemCount: weatherCard.time!.length,
itemBuilder: (ctx, i) => GestureDetector( itemBuilder:
onTap: () { (ctx, i) => GestureDetector(
timeNow = i; onTap: () {
dayNow = (i / 24).floor(); timeNow = i;
setState(() {}); dayNow = (i / 24).floor();
}, setState(() {});
child: Container( },
margin: const EdgeInsets.symmetric(vertical: 5), child: Container(
padding: const EdgeInsets.symmetric( margin: const EdgeInsets.symmetric(vertical: 5),
horizontal: 20, padding: const EdgeInsets.symmetric(
vertical: 5, horizontal: 20,
), vertical: 5,
decoration: BoxDecoration( ),
color: i == timeNow decoration: BoxDecoration(
? context.theme.colorScheme.secondaryContainer color:
: Colors.transparent, i == timeNow
borderRadius: const BorderRadius.all( ? context
Radius.circular(20), .theme
.colorScheme
.secondaryContainer
: Colors.transparent,
borderRadius: const BorderRadius.all(
Radius.circular(20),
),
),
child: Hourly(
time: weatherCard.time![i],
weather: weatherCard.weathercode![i],
degree: weatherCard.temperature2M![i],
timeDay:
weatherCard.sunrise![(i / 24).floor()],
timeNight:
weatherCard.sunset![(i / 24).floor()],
),
), ),
), ),
child: Hourly(
time: weatherCard.time![i],
weather: weatherCard.weathercode![i],
degree: weatherCard.temperature2M![i],
timeDay: weatherCard.sunrise![(i / 24).floor()],
timeNight: weatherCard.sunset![(i / 24).floor()],
),
),
),
), ),
), ),
), ),
@ -175,12 +182,11 @@ class _PlaceInfoState extends State<PlaceInfo> {
), ),
DailyContainer( DailyContainer(
weatherData: weatherCard, weatherData: weatherCard,
onTap: () => Get.to( onTap:
() => DailyCardList( () => Get.to(
weatherData: weatherCard, () => DailyCardList(weatherData: weatherCard),
), transition: Transition.downToUp,
transition: Transition.downToUp, ),
),
), ),
], ],
), ),

View file

@ -33,71 +33,72 @@ class _PlaceListState extends State<PlaceList> {
final textTheme = context.textTheme; final textTheme = context.textTheme;
final titleMedium = textTheme.titleMedium; final titleMedium = textTheme.titleMedium;
return Obx( return Obx(
() => weatherController.weatherCards.isEmpty () =>
? Center( weatherController.weatherCards.isEmpty
child: SingleChildScrollView( ? Center(
child: Column( child: SingleChildScrollView(
children: [ child: Column(
Image.asset( children: [
'assets/icons/City.png', Image.asset('assets/icons/City.png', scale: 6),
scale: 6, SizedBox(
), width: Get.size.width * 0.8,
SizedBox( child: Text(
width: Get.size.width * 0.8, 'noWeatherCard'.tr,
child: Text( textAlign: TextAlign.center,
'noWeatherCard'.tr, style: titleMedium?.copyWith(
textAlign: TextAlign.center, fontWeight: FontWeight.w600,
style: titleMedium?.copyWith( fontSize: 18,
fontWeight: FontWeight.w600, ),
fontSize: 18,
), ),
), ),
],
),
),
)
: NestedScrollView(
physics: const NeverScrollableScrollPhysics(),
headerSliverBuilder: (context, innerBoxIsScrolled) {
return [
SliverToBoxAdapter(
child: MyTextForm(
labelText: 'search'.tr,
type: TextInputType.text,
icon: const Icon(
IconsaxPlusLinear.search_normal_1,
size: 20,
),
controller: searchTasks,
margin: const EdgeInsets.symmetric(
horizontal: 10,
vertical: 5,
),
onChanged: applyFilter,
iconButton:
searchTasks.text.isNotEmpty
? IconButton(
onPressed: () {
searchTasks.clear();
applyFilter('');
},
icon: const Icon(
IconsaxPlusLinear.close_circle,
color: Colors.grey,
size: 20,
),
)
: null,
),
), ),
], ];
},
body: RefreshIndicator(
onRefresh: () async {
await weatherController.updateCacheCard(true);
setState(() {});
},
child: PlaceCardList(searchCity: filter),
), ),
), ),
)
: NestedScrollView(
physics: const NeverScrollableScrollPhysics(),
headerSliverBuilder: (context, innerBoxIsScrolled) {
return [
SliverToBoxAdapter(
child: MyTextForm(
labelText: 'search'.tr,
type: TextInputType.text,
icon: const Icon(
IconsaxPlusLinear.search_normal_1,
size: 20,
),
controller: searchTasks,
margin: const EdgeInsets.symmetric(
horizontal: 10, vertical: 5),
onChanged: applyFilter,
iconButton: searchTasks.text.isNotEmpty
? IconButton(
onPressed: () {
searchTasks.clear();
applyFilter('');
},
icon: const Icon(
IconsaxPlusLinear.close_circle,
color: Colors.grey,
size: 20,
),
)
: null,
),
),
];
},
body: RefreshIndicator(
onRefresh: () async {
await weatherController.updateCacheCard(true);
setState(() {});
},
child: PlaceCardList(searchCity: filter),
),
),
); );
} }
} }

View file

@ -9,11 +9,7 @@ import 'package:rain/app/ui/widgets/text_form.dart';
import 'package:rain/main.dart'; import 'package:rain/main.dart';
class CreatePlace extends StatefulWidget { class CreatePlace extends StatefulWidget {
const CreatePlace({ const CreatePlace({super.key, this.latitude, this.longitude});
super.key,
this.latitude,
this.longitude,
});
final String? latitude; final String? latitude;
final String? longitude; final String? longitude;
@ -85,7 +81,8 @@ class _CreatePlaceState extends State<CreatePlace>
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
const kTextFieldElevation = 4.0; const kTextFieldElevation = 4.0;
bool showButton = _controllerLon.text.isNotEmpty && bool showButton =
_controllerLon.text.isNotEmpty &&
_controllerLat.text.isNotEmpty && _controllerLat.text.isNotEmpty &&
_controllerCity.text.isNotEmpty && _controllerCity.text.isNotEmpty &&
_controllerDistrict.text.isNotEmpty; _controllerDistrict.text.isNotEmpty;
@ -115,18 +112,21 @@ class _CreatePlaceState extends State<CreatePlace>
padding: const EdgeInsets.only(top: 14, bottom: 7), padding: const EdgeInsets.only(top: 14, bottom: 7),
child: Text( child: Text(
'create'.tr, 'create'.tr,
style: context.textTheme.titleLarge style: context.textTheme.titleLarge?.copyWith(
?.copyWith(fontWeight: FontWeight.bold), fontWeight: FontWeight.bold,
),
textAlign: TextAlign.center, textAlign: TextAlign.center,
), ),
), ),
RawAutocomplete<Result>( RawAutocomplete<Result>(
focusNode: _focusNode, focusNode: _focusNode,
textEditingController: _controller, textEditingController: _controller,
fieldViewBuilder: (BuildContext context, fieldViewBuilder: (
TextEditingController fieldTextEditingController, BuildContext context,
FocusNode fieldFocusNode, TextEditingController fieldTextEditingController,
VoidCallback onFieldSubmitted) { FocusNode fieldFocusNode,
VoidCallback onFieldSubmitted,
) {
return MyTextForm( return MyTextForm(
elevation: kTextFieldElevation, elevation: kTextFieldElevation,
labelText: 'search'.tr, labelText: 'search'.tr,
@ -134,7 +134,10 @@ class _CreatePlaceState extends State<CreatePlace>
icon: const Icon(IconsaxPlusLinear.global_search), icon: const Icon(IconsaxPlusLinear.global_search),
controller: _controller, controller: _controller,
margin: const EdgeInsets.only( margin: const EdgeInsets.only(
left: 10, right: 10, top: 10), left: 10,
right: 10,
top: 10,
),
focusNode: _focusNode, focusNode: _focusNode,
); );
}, },
@ -142,16 +145,20 @@ class _CreatePlaceState extends State<CreatePlace>
if (textEditingValue.text.isEmpty) { if (textEditingValue.text.isEmpty) {
return const Iterable<Result>.empty(); return const Iterable<Result>.empty();
} }
return WeatherAPI() return WeatherAPI().getCity(
.getCity(textEditingValue.text, locale); textEditingValue.text,
locale,
);
}, },
onSelected: (Result selection) => onSelected:
fillController(selection), (Result selection) => fillController(selection),
displayStringForOption: (Result option) => displayStringForOption:
'${option.name}, ${option.admin1}', (Result option) => '${option.name}, ${option.admin1}',
optionsViewBuilder: (BuildContext context, optionsViewBuilder: (
AutocompleteOnSelected<Result> onSelected, BuildContext context,
Iterable<Result> options) { AutocompleteOnSelected<Result> onSelected,
Iterable<Result> options,
) {
return Padding( return Padding(
padding: const EdgeInsets.symmetric(horizontal: 10), padding: const EdgeInsets.symmetric(horizontal: 10),
child: Align( child: Align(
@ -164,8 +171,9 @@ class _CreatePlaceState extends State<CreatePlace>
shrinkWrap: true, shrinkWrap: true,
itemCount: options.length, itemCount: options.length,
itemBuilder: (BuildContext context, int index) { itemBuilder: (BuildContext context, int index) {
final Result option = final Result option = options.elementAt(
options.elementAt(index); index,
);
return InkWell( return InkWell(
onTap: () => onSelected(option), onTap: () => onSelected(option),
child: ListTile( child: ListTile(
@ -189,8 +197,11 @@ class _CreatePlaceState extends State<CreatePlace>
type: TextInputType.number, type: TextInputType.number,
icon: const Icon(IconsaxPlusLinear.location), icon: const Icon(IconsaxPlusLinear.location),
onChanged: (value) => setState(() {}), onChanged: (value) => setState(() {}),
margin: margin: const EdgeInsets.only(
const EdgeInsets.only(left: 10, right: 10, top: 10), left: 10,
right: 10,
top: 10,
),
validator: (value) { validator: (value) {
if (value == null || value.isEmpty) { if (value == null || value.isEmpty) {
return 'validateValue'.tr; return 'validateValue'.tr;
@ -212,8 +223,11 @@ class _CreatePlaceState extends State<CreatePlace>
type: TextInputType.number, type: TextInputType.number,
icon: const Icon(IconsaxPlusLinear.location), icon: const Icon(IconsaxPlusLinear.location),
onChanged: (value) => setState(() {}), onChanged: (value) => setState(() {}),
margin: margin: const EdgeInsets.only(
const EdgeInsets.only(left: 10, right: 10, top: 10), left: 10,
right: 10,
top: 10,
),
validator: (value) { validator: (value) {
if (value == null || value.isEmpty) { if (value == null || value.isEmpty) {
return 'validateValue'.tr; return 'validateValue'.tr;
@ -235,8 +249,11 @@ class _CreatePlaceState extends State<CreatePlace>
type: TextInputType.name, type: TextInputType.name,
icon: const Icon(IconsaxPlusLinear.building_3), icon: const Icon(IconsaxPlusLinear.building_3),
onChanged: (value) => setState(() {}), onChanged: (value) => setState(() {}),
margin: margin: const EdgeInsets.only(
const EdgeInsets.only(left: 10, right: 10, top: 10), left: 10,
right: 10,
top: 10,
),
validator: (value) { validator: (value) {
if (value == null || value.isEmpty) { if (value == null || value.isEmpty) {
return 'validateName'.tr; return 'validateName'.tr;
@ -251,8 +268,11 @@ class _CreatePlaceState extends State<CreatePlace>
type: TextInputType.streetAddress, type: TextInputType.streetAddress,
icon: const Icon(IconsaxPlusLinear.global), icon: const Icon(IconsaxPlusLinear.global),
onChanged: (value) => setState(() {}), onChanged: (value) => setState(() {}),
margin: margin: const EdgeInsets.only(
const EdgeInsets.only(left: 10, right: 10, top: 10), left: 10,
right: 10,
top: 10,
),
validator: (value) { validator: (value) {
if (value == null || value.isEmpty) { if (value == null || value.isEmpty) {
return 'validateName'.tr; return 'validateName'.tr;
@ -262,7 +282,9 @@ class _CreatePlaceState extends State<CreatePlace>
), ),
Padding( Padding(
padding: const EdgeInsets.symmetric( padding: const EdgeInsets.symmetric(
horizontal: 10, vertical: 10), horizontal: 10,
vertical: 10,
),
child: SizeTransition( child: SizeTransition(
sizeFactor: _animation, sizeFactor: _animation,
axisAlignment: -1.0, axisAlignment: -1.0,
@ -291,10 +313,7 @@ class _CreatePlaceState extends State<CreatePlace>
], ],
), ),
), ),
if (isLoading) if (isLoading) const Center(child: CircularProgressIndicator()),
const Center(
child: CircularProgressIndicator(),
),
], ],
), ),
), ),

View file

@ -54,10 +54,15 @@ class _PlaceCardState extends State<PlaceCard> {
crossAxisAlignment: CrossAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
Text( Text(
statusData.getDegree(widget.degree[weatherController statusData.getDegree(
.getTime(widget.time, widget.timezone)] widget
.round() .degree[weatherController.getTime(
.toInt()), widget.time,
widget.timezone,
)]
.round()
.toInt(),
),
style: context.textTheme.titleLarge?.copyWith( style: context.textTheme.titleLarge?.copyWith(
fontSize: 22, fontSize: 22,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
@ -65,8 +70,12 @@ class _PlaceCardState extends State<PlaceCard> {
), ),
const Gap(7), const Gap(7),
Text( Text(
statusWeather.getText(widget.weather[weatherController statusWeather.getText(
.getTime(widget.time, widget.timezone)]), widget.weather[weatherController.getTime(
widget.time,
widget.timezone,
)],
),
style: context.textTheme.titleMedium?.copyWith( style: context.textTheme.titleMedium?.copyWith(
color: Colors.grey, color: Colors.grey,
fontWeight: FontWeight.w400, fontWeight: FontWeight.w400,
@ -79,11 +88,11 @@ class _PlaceCardState extends State<PlaceCard> {
widget.district.isEmpty widget.district.isEmpty
? widget.city ? widget.city
: widget.city.isEmpty : widget.city.isEmpty
? widget.district ? widget.district
: widget.city == widget.district : widget.city == widget.district
? widget.city ? widget.city
: '${widget.city}' : '${widget.city}'
', ${widget.district}', ', ${widget.district}',
style: context.textTheme.titleMedium?.copyWith( style: context.textTheme.titleMedium?.copyWith(
fontWeight: FontWeight.w500, fontWeight: FontWeight.w500,
), ),
@ -107,14 +116,23 @@ class _PlaceCardState extends State<PlaceCard> {
const Gap(5), const Gap(5),
Image.asset( Image.asset(
statusWeather.getImageNow( statusWeather.getImageNow(
widget.weather[ widget.weather[weatherController.getTime(
weatherController.getTime(widget.time, widget.timezone)], widget.time,
widget.time[ widget.timezone,
weatherController.getTime(widget.time, widget.timezone)], )],
widget.timeDay[weatherController.getDay( widget.time[weatherController.getTime(
widget.timeDaily, widget.timezone)], widget.time,
widget.timeNight[weatherController.getDay( widget.timezone,
widget.timeDaily, widget.timezone)]), )],
widget.timeDay[weatherController.getDay(
widget.timeDaily,
widget.timezone,
)],
widget.timeNight[weatherController.getDay(
widget.timeDaily,
widget.timezone,
)],
),
scale: 6.5, scale: 6.5,
), ),
], ],

View file

@ -6,10 +6,7 @@ import 'package:rain/app/ui/places/view/place_info.dart';
import 'package:rain/app/ui/places/widgets/place_card.dart'; import 'package:rain/app/ui/places/widgets/place_card.dart';
class PlaceCardList extends StatefulWidget { class PlaceCardList extends StatefulWidget {
const PlaceCardList({ const PlaceCardList({super.key, required this.searchCity});
super.key,
required this.searchCity,
});
final String searchCity; final String searchCity;
@override @override
@ -24,15 +21,21 @@ class _PlaceCardListState extends State<PlaceCardList> {
final textTheme = context.textTheme; final textTheme = context.textTheme;
final titleMedium = textTheme.titleMedium; final titleMedium = textTheme.titleMedium;
var weatherCards = weatherController.weatherCards var weatherCards =
.where((weatherCard) => (widget.searchCity.isEmpty || weatherController.weatherCards
weatherCard.city!.toLowerCase().contains(widget.searchCity))) .where(
.toList() (weatherCard) =>
.obs; (widget.searchCity.isEmpty ||
weatherCard.city!.toLowerCase().contains(
widget.searchCity,
)),
)
.toList()
.obs;
return ReorderableListView( return ReorderableListView(
onReorder: (oldIndex, newIndex) => onReorder:
weatherController.reorder(oldIndex, newIndex), (oldIndex, newIndex) => weatherController.reorder(oldIndex, newIndex),
children: [ children: [
...weatherCards.map( ...weatherCards.map(
(weatherCardList) => Dismissible( (weatherCardList) => Dismissible(
@ -42,10 +45,7 @@ class _PlaceCardListState extends State<PlaceCardList> {
alignment: Alignment.centerRight, alignment: Alignment.centerRight,
child: const Padding( child: const Padding(
padding: EdgeInsets.only(right: 15), padding: EdgeInsets.only(right: 15),
child: Icon( child: Icon(IconsaxPlusLinear.trash_square, color: Colors.red),
IconsaxPlusLinear.trash_square,
color: Colors.red,
),
), ),
), ),
confirmDismiss: (DismissDirection direction) async { confirmDismiss: (DismissDirection direction) async {
@ -75,9 +75,7 @@ class _PlaceCardListState extends State<PlaceCardList> {
onPressed: () => Get.back(result: true), onPressed: () => Get.back(result: true),
child: Text( child: Text(
'delete'.tr, 'delete'.tr,
style: titleMedium?.copyWith( style: titleMedium?.copyWith(color: Colors.red),
color: Colors.red,
),
), ),
), ),
], ],
@ -89,12 +87,11 @@ class _PlaceCardListState extends State<PlaceCardList> {
await weatherController.deleteCardWeather(weatherCardList); await weatherController.deleteCardWeather(weatherCardList);
}, },
child: GestureDetector( child: GestureDetector(
onTap: () => Get.to( onTap:
() => PlaceInfo( () => Get.to(
weatherCard: weatherCardList, () => PlaceInfo(weatherCard: weatherCardList),
), transition: Transition.downToUp,
transition: Transition.downToUp, ),
),
child: PlaceCard( child: PlaceCard(
time: weatherCardList.time!, time: weatherCardList.time!,
timeDaily: weatherCardList.timeDaily!, timeDaily: weatherCardList.timeDaily!,

View file

@ -41,9 +41,7 @@ class SettingCard extends StatelessWidget {
elevation: elevation ?? 1, elevation: elevation ?? 1,
margin: const EdgeInsets.symmetric(horizontal: 10, vertical: 5), margin: const EdgeInsets.symmetric(horizontal: 10, vertical: 5),
child: ListTile( child: ListTile(
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(15)),
borderRadius: BorderRadius.circular(15),
),
onTap: onPressed, onTap: onPressed,
leading: icon, leading: icon,
title: Text( title: Text(
@ -51,50 +49,44 @@ class SettingCard extends StatelessWidget {
style: context.textTheme.titleMedium, style: context.textTheme.titleMedium,
overflow: TextOverflow.visible, overflow: TextOverflow.visible,
), ),
trailing: switcher trailing:
? Transform.scale( switcher
scale: 0.8, ? Transform.scale(
child: Switch( scale: 0.8,
value: value!, child: Switch(value: value!, onChanged: onChange),
onChanged: onChange, )
), : dropdown
)
: dropdown
? DropdownButton<String>( ? DropdownButton<String>(
icon: const Padding( icon: const Padding(
padding: EdgeInsets.only(left: 7), padding: EdgeInsets.only(left: 7),
child: Icon(IconsaxPlusLinear.arrow_down), child: Icon(IconsaxPlusLinear.arrow_down),
), ),
iconSize: 15, iconSize: 15,
alignment: AlignmentDirectional.centerEnd, alignment: AlignmentDirectional.centerEnd,
borderRadius: const BorderRadius.all(Radius.circular(15)), borderRadius: const BorderRadius.all(Radius.circular(15)),
underline: Container(), underline: Container(),
value: dropdownName, value: dropdownName,
items: dropdownList! items:
.map<DropdownMenuItem<String>>((String value) { dropdownList!.map<DropdownMenuItem<String>>((
return DropdownMenuItem<String>( String value,
value: value, ) {
child: Text(value), return DropdownMenuItem<String>(
); value: value,
}).toList(), child: Text(value),
onChanged: dropdownCange, );
) }).toList(),
onChanged: dropdownCange,
)
: info : info
? infoSettings ? infoSettings
? Wrap( ? Wrap(
children: [ children: [
infoWidget!, infoWidget!,
const Icon( const Icon(IconsaxPlusLinear.arrow_right_3, size: 18),
IconsaxPlusLinear.arrow_right_3, ],
size: 18, )
), : infoWidget!
], : const Icon(IconsaxPlusLinear.arrow_right_3, size: 18),
)
: infoWidget!
: const Icon(
IconsaxPlusLinear.arrow_right_3,
size: 18,
),
), ),
); );
} }

View file

@ -19,13 +19,11 @@ class MyTextButton extends StatelessWidget {
style: ButtonStyle( style: ButtonStyle(
shadowColor: const WidgetStatePropertyAll(Colors.transparent), shadowColor: const WidgetStatePropertyAll(Colors.transparent),
backgroundColor: WidgetStatePropertyAll( backgroundColor: WidgetStatePropertyAll(
context.theme.colorScheme.secondaryContainer.withAlpha(80)), context.theme.colorScheme.secondaryContainer.withAlpha(80),
),
), ),
onPressed: onPressed, onPressed: onPressed,
child: Text( child: Text(buttonName, style: context.textTheme.titleMedium),
buttonName,
style: context.textTheme.titleMedium,
),
), ),
); );
} }

View file

@ -3,11 +3,7 @@ import 'package:get/get.dart';
import 'package:shimmer/shimmer.dart'; import 'package:shimmer/shimmer.dart';
class MyShimmer extends StatelessWidget { class MyShimmer extends StatelessWidget {
const MyShimmer({ const MyShimmer({super.key, required this.hight, this.edgeInsetsMargin});
super.key,
required this.hight,
this.edgeInsetsMargin,
});
final double hight; final double hight;
final EdgeInsets? edgeInsetsMargin; final EdgeInsets? edgeInsetsMargin;
@ -16,12 +12,7 @@ class MyShimmer extends StatelessWidget {
return Shimmer.fromColors( return Shimmer.fromColors(
baseColor: context.theme.cardColor, baseColor: context.theme.cardColor,
highlightColor: context.theme.primaryColor, highlightColor: context.theme.primaryColor,
child: Card( child: Card(margin: edgeInsetsMargin, child: SizedBox(height: hight)),
margin: edgeInsetsMargin,
child: SizedBox(
height: hight,
),
),
); );
} }
} }

View file

@ -32,50 +32,51 @@ class _DailyCardState extends State<DailyCard> {
return widget.weathercodeDaily == null return widget.weathercodeDaily == null
? Container() ? Container()
: Card( : Card(
margin: const EdgeInsets.symmetric(horizontal: 10, vertical: 8), margin: const EdgeInsets.symmetric(horizontal: 10, vertical: 8),
child: Padding( child: Padding(
padding: const EdgeInsets.symmetric(vertical: 15, horizontal: 20), padding: const EdgeInsets.symmetric(vertical: 15, horizontal: 20),
child: Row( child: Row(
children: [ children: [
Expanded( Expanded(
child: Column( child: Column(
crossAxisAlignment: CrossAxisAlignment.start, crossAxisAlignment: CrossAxisAlignment.start,
children: [ children: [
Text( Text(
'${statusData.getDegree(widget.temperature2MMin?.round())} / ${statusData.getDegree(widget.temperature2MMax?.round())}', '${statusData.getDegree(widget.temperature2MMin?.round())} / ${statusData.getDegree(widget.temperature2MMax?.round())}',
style: context.textTheme.titleLarge?.copyWith( style: context.textTheme.titleLarge?.copyWith(
fontSize: 22, fontSize: 22,
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
),
), ),
const Gap(5), ),
Text( const Gap(5),
DateFormat.MMMMEEEEd(locale.languageCode) Text(
.format(widget.timeDaily), DateFormat.MMMMEEEEd(
style: context.textTheme.titleMedium?.copyWith( locale.languageCode,
color: Colors.grey, ).format(widget.timeDaily),
fontWeight: FontWeight.w400, style: context.textTheme.titleMedium?.copyWith(
), color: Colors.grey,
fontWeight: FontWeight.w400,
), ),
const Gap(5), ),
Text( const Gap(5),
statusWeather.getText(widget.weathercodeDaily), Text(
style: context.textTheme.titleMedium?.copyWith( statusWeather.getText(widget.weathercodeDaily),
color: Colors.grey, style: context.textTheme.titleMedium?.copyWith(
fontWeight: FontWeight.w400, color: Colors.grey,
), fontWeight: FontWeight.w400,
), ),
], ),
), ],
), ),
const Gap(5), ),
Image.asset( const Gap(5),
statusWeather.getImageNowDaily(widget.weathercodeDaily), Image.asset(
scale: 6.5, statusWeather.getImageNowDaily(widget.weathercodeDaily),
), scale: 6.5,
], ),
), ],
), ),
); ),
);
} }
} }

View file

@ -64,16 +64,14 @@ class _DailyCardInfoState extends State<DailyCardInfo> {
onPressed: () { onPressed: () {
Get.back(); Get.back();
}, },
icon: const Icon( icon: const Icon(IconsaxPlusLinear.arrow_left_3, size: 20),
IconsaxPlusLinear.arrow_left_3,
size: 20,
),
splashColor: Colors.transparent, splashColor: Colors.transparent,
highlightColor: Colors.transparent, highlightColor: Colors.transparent,
), ),
title: Text( title: Text(
DateFormat.MMMMEEEEd(locale.languageCode) DateFormat.MMMMEEEEd(
.format(timeDaily[pageIndex]), locale.languageCode,
).format(timeDaily[pageIndex]),
style: textTheme.titleMedium?.copyWith( style: textTheme.titleMedium?.copyWith(
fontWeight: FontWeight.w600, fontWeight: FontWeight.w600,
fontSize: 18, fontSize: 18,
@ -115,133 +113,145 @@ class _DailyCardInfoState extends State<DailyCardInfo> {
return indexedWeatherCodeDaily == null return indexedWeatherCodeDaily == null
? null ? null
: Container( : Container(
margin: const EdgeInsets.symmetric(horizontal: 10), margin: const EdgeInsets.symmetric(horizontal: 10),
child: ListView( child: ListView(
children: [ children: [
Now( Now(
weather: weather:
weatherData.weathercode![startIndex + hourOfDay], weatherData.weathercode![startIndex + hourOfDay],
degree: weatherData degree:
.temperature2M![startIndex + hourOfDay], weatherData.temperature2M![startIndex + hourOfDay],
feels: weatherData feels:
.apparentTemperature![startIndex + hourOfDay]!, weatherData.apparentTemperature![startIndex +
time: weatherData.time![startIndex + hourOfDay], hourOfDay]!,
timeDay: sunrise, time: weatherData.time![startIndex + hourOfDay],
timeNight: sunset, timeDay: sunrise,
tempMax: temperature2MMax!, timeNight: sunset,
tempMin: temperature2MMin!, tempMax: temperature2MMax!,
), tempMin: temperature2MMin!,
Card( ),
margin: const EdgeInsets.only(bottom: 15), Card(
child: Padding( margin: const EdgeInsets.only(bottom: 15),
padding: const EdgeInsets.symmetric( child: Padding(
horizontal: 10, vertical: 5), padding: const EdgeInsets.symmetric(
child: SizedBox( horizontal: 10,
height: 135, vertical: 5,
child: ScrollablePositionedList.separated( ),
separatorBuilder: child: SizedBox(
(BuildContext context, int index) { height: 135,
return const VerticalDivider( child: ScrollablePositionedList.separated(
width: 10, separatorBuilder: (
indent: 40, BuildContext context,
endIndent: 40, int index,
); ) {
}, return const VerticalDivider(
scrollDirection: Axis.horizontal, width: 10,
itemCount: 24, indent: 40,
itemBuilder: (ctx, i) { endIndent: 40,
int hourlyIndex = startIndex + i; );
return GestureDetector( },
onTap: () { scrollDirection: Axis.horizontal,
hourOfDay = i; itemCount: 24,
setState(() {}); itemBuilder: (ctx, i) {
}, int hourlyIndex = startIndex + i;
child: Container( return GestureDetector(
margin: const EdgeInsets.symmetric( onTap: () {
vertical: 5), hourOfDay = i;
padding: const EdgeInsets.symmetric( setState(() {});
horizontal: 20, },
vertical: 5, child: Container(
), margin: const EdgeInsets.symmetric(
decoration: BoxDecoration( vertical: 5,
color: i == hourOfDay ),
? context.theme.colorScheme padding: const EdgeInsets.symmetric(
.secondaryContainer horizontal: 20,
: Colors.transparent, vertical: 5,
borderRadius: const BorderRadius.all( ),
Radius.circular(20), decoration: BoxDecoration(
), color:
), i == hourOfDay
child: Hourly( ? context
time: weatherData.time![hourlyIndex], .theme
weather: weatherData .colorScheme
.weathercode![hourlyIndex], .secondaryContainer
degree: weatherData : Colors.transparent,
.temperature2M![hourlyIndex], borderRadius: const BorderRadius.all(
timeDay: sunrise, Radius.circular(20),
timeNight: sunset,
), ),
), ),
); child: Hourly(
}, time: weatherData.time![hourlyIndex],
), weather:
weatherData.weathercode![hourlyIndex],
degree:
weatherData
.temperature2M![hourlyIndex],
timeDay: sunrise,
timeNight: sunset,
),
),
);
},
), ),
), ),
), ),
SunsetSunrise( ),
timeSunrise: sunrise, SunsetSunrise(timeSunrise: sunrise, timeSunset: sunset),
timeSunset: sunset, DescContainer(
), humidity:
DescContainer( weatherData.relativehumidity2M?[startIndex +
humidity: weatherData hourOfDay],
.relativehumidity2M?[startIndex + hourOfDay], wind: weatherData.windspeed10M?[startIndex + hourOfDay],
wind: visibility:
weatherData.windspeed10M?[startIndex + hourOfDay], weatherData.visibility?[startIndex + hourOfDay],
visibility: feels:
weatherData.visibility?[startIndex + hourOfDay], weatherData.apparentTemperature?[startIndex +
feels: weatherData hourOfDay],
.apparentTemperature?[startIndex + hourOfDay], evaporation:
evaporation: weatherData weatherData.evapotranspiration?[startIndex +
.evapotranspiration?[startIndex + hourOfDay], hourOfDay],
precipitation: weatherData precipitation:
.precipitation?[startIndex + hourOfDay], weatherData.precipitation?[startIndex + hourOfDay],
direction: weatherData direction:
.winddirection10M?[startIndex + hourOfDay], weatherData.winddirection10M?[startIndex +
pressure: weatherData hourOfDay],
.surfacePressure?[startIndex + hourOfDay], pressure:
rain: weatherData.rain?[startIndex + hourOfDay], weatherData.surfacePressure?[startIndex +
cloudcover: hourOfDay],
weatherData.cloudcover?[startIndex + hourOfDay], rain: weatherData.rain?[startIndex + hourOfDay],
windgusts: cloudcover:
weatherData.windgusts10M?[startIndex + hourOfDay], weatherData.cloudcover?[startIndex + hourOfDay],
uvIndex: weatherData.uvIndex?[startIndex + hourOfDay], windgusts:
dewpoint2M: weatherData.windgusts10M?[startIndex + hourOfDay],
weatherData.dewpoint2M?[startIndex + hourOfDay], uvIndex: weatherData.uvIndex?[startIndex + hourOfDay],
precipitationProbability: dewpoint2M:
weatherData.precipitationProbability?[ weatherData.dewpoint2M?[startIndex + hourOfDay],
startIndex + hourOfDay], precipitationProbability:
shortwaveRadiation: weatherData weatherData.precipitationProbability?[startIndex +
.shortwaveRadiation?[startIndex + hourOfDay], hourOfDay],
initiallyExpanded: true, shortwaveRadiation:
title: 'hourlyVariables'.tr, weatherData.shortwaveRadiation?[startIndex +
), hourOfDay],
DescContainer( initiallyExpanded: true,
apparentTemperatureMin: apparentTemperatureMin, title: 'hourlyVariables'.tr,
apparentTemperatureMax: apparentTemperatureMax, ),
uvIndexMax: uvIndexMax, DescContainer(
windDirection10MDominant: windDirection10MDominant, apparentTemperatureMin: apparentTemperatureMin,
windSpeed10MMax: windSpeed10MMax, apparentTemperatureMax: apparentTemperatureMax,
windGusts10MMax: windGusts10MMax, uvIndexMax: uvIndexMax,
precipitationProbabilityMax: windDirection10MDominant: windDirection10MDominant,
precipitationProbabilityMax, windSpeed10MMax: windSpeed10MMax,
rainSum: rainSum, windGusts10MMax: windGusts10MMax,
precipitationSum: precipitationSum, precipitationProbabilityMax:
initiallyExpanded: true, precipitationProbabilityMax,
title: 'dailyVariables'.tr, rainSum: rainSum,
), precipitationSum: precipitationSum,
], initiallyExpanded: true,
), title: 'dailyVariables'.tr,
); ),
],
),
);
}, },
), ),
), ),

View file

@ -6,10 +6,7 @@ import 'package:rain/app/ui/widgets/weather/daily/daily_card_info.dart';
import 'package:rain/app/ui/widgets/weather/daily/daily_card.dart'; import 'package:rain/app/ui/widgets/weather/daily/daily_card.dart';
class DailyCardList extends StatefulWidget { class DailyCardList extends StatefulWidget {
const DailyCardList({ const DailyCardList({super.key, required this.weatherData});
super.key,
required this.weatherData,
});
final WeatherCard weatherData; final WeatherCard weatherData;
@override @override
@ -31,10 +28,7 @@ class _DailyCardListState extends State<DailyCardList> {
onPressed: () { onPressed: () {
Get.back(); Get.back();
}, },
icon: const Icon( icon: const Icon(IconsaxPlusLinear.arrow_left_3, size: 20),
IconsaxPlusLinear.arrow_left_3,
size: 20,
),
splashColor: transparent, splashColor: transparent,
highlightColor: transparent, highlightColor: transparent,
), ),
@ -49,21 +43,21 @@ class _DailyCardListState extends State<DailyCardList> {
body: SafeArea( body: SafeArea(
child: ListView.builder( child: ListView.builder(
itemCount: timeDaily.length, itemCount: timeDaily.length,
itemBuilder: (context, index) => GestureDetector( itemBuilder:
onTap: () => Get.to( (context, index) => GestureDetector(
() => DailyCardInfo( onTap:
weatherData: weatherData, () => Get.to(
index: index, () =>
DailyCardInfo(weatherData: weatherData, index: index),
transition: Transition.downToUp,
),
child: DailyCard(
timeDaily: timeDaily[index],
weathercodeDaily: weatherData.weathercodeDaily![index],
temperature2MMax: weatherData.temperature2MMax![index],
temperature2MMin: weatherData.temperature2MMin![index],
),
), ),
transition: Transition.downToUp,
),
child: DailyCard(
timeDaily: timeDaily[index],
weathercodeDaily: weatherData.weathercodeDaily![index],
temperature2MMax: weatherData.temperature2MMax![index],
temperature2MMin: weatherData.temperature2MMin![index],
),
),
), ),
), ),
); );

View file

@ -29,9 +29,7 @@ class _DailyContainerState extends State<DailyContainer> {
@override @override
Widget build(BuildContext context) { Widget build(BuildContext context) {
final splashColor = context.theme.colorScheme.primary.withOpacity(0.4); final splashColor = context.theme.colorScheme.primary.withOpacity(0.4);
const inkWellBorderRadius = BorderRadius.all( const inkWellBorderRadius = BorderRadius.all(Radius.circular(16));
Radius.circular(16),
);
final weatherData = widget.weatherData; final weatherData = widget.weatherData;
final weatherCodeDaily = weatherData.weathercodeDaily ?? []; final weatherCodeDaily = weatherData.weathercodeDaily ?? [];
@ -52,13 +50,14 @@ class _DailyContainerState extends State<DailyContainer> {
return InkWell( return InkWell(
splashColor: splashColor, splashColor: splashColor,
borderRadius: inkWellBorderRadius, borderRadius: inkWellBorderRadius,
onTap: () => Get.to( onTap:
() => DailyCardInfo( () => Get.to(
weatherData: weatherData, () => DailyCardInfo(
index: index, weatherData: weatherData,
), index: index,
transition: Transition.downToUp, ),
), transition: Transition.downToUp,
),
child: Container( child: Container(
margin: const EdgeInsets.symmetric(vertical: 12), margin: const EdgeInsets.symmetric(vertical: 12),
child: Row( child: Row(
@ -66,8 +65,9 @@ class _DailyContainerState extends State<DailyContainer> {
children: [ children: [
Expanded( Expanded(
child: Text( child: Text(
DateFormat.EEEE(locale.languageCode) DateFormat.EEEE(
.format((weatherData.timeDaily ?? [])[index]), locale.languageCode,
).format((weatherData.timeDaily ?? [])[index]),
style: labelLarge, style: labelLarge,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
), ),
@ -77,15 +77,17 @@ class _DailyContainerState extends State<DailyContainer> {
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Image.asset( Image.asset(
statusWeather statusWeather.getImage7Day(
.getImage7Day(weatherCodeDaily[index]), weatherCodeDaily[index],
),
scale: 3, scale: 3,
), ),
const Gap(5), const Gap(5),
Expanded( Expanded(
child: Text( child: Text(
statusWeather statusWeather.getText(
.getText(weatherCodeDaily[index]), weatherCodeDaily[index],
),
style: labelLarge, style: labelLarge,
overflow: TextOverflow.ellipsis, overflow: TextOverflow.ellipsis,
), ),
@ -99,18 +101,17 @@ class _DailyContainerState extends State<DailyContainer> {
children: [ children: [
Text( Text(
statusData.getDegree( statusData.getDegree(
(weatherData.temperature2MMin ?? [])[index] (weatherData.temperature2MMin ?? [])[index]
?.round()), ?.round(),
style: labelLarge, ),
),
Text(
' / ',
style: labelLarge, style: labelLarge,
), ),
Text(' / ', style: labelLarge),
Text( Text(
statusData.getDegree( statusData.getDegree(
(weatherData.temperature2MMax ?? [])[index] (weatherData.temperature2MMax ?? [])[index]
?.round()), ?.round(),
),
style: labelLarge, style: labelLarge,
), ),
], ],

View file

@ -35,14 +35,12 @@ class _DescWeatherState extends State<DescWeather> {
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [ children: [
Image.asset( Image.asset(widget.imageName, scale: 20),
widget.imageName,
scale: 20,
),
const Gap(5), const Gap(5),
Text( Text(
widget.value, widget.value,
style: textTheme.labelLarge, style: textTheme.labelLarge,
overflow: TextOverflow.ellipsis,
), ),
Expanded( Expanded(
child: Text( child: Text(

View file

@ -107,10 +107,7 @@ class _DescContainerState extends State<DescContainer> {
margin: const EdgeInsets.only(bottom: 15), margin: const EdgeInsets.only(bottom: 15),
child: ExpansionTile( child: ExpansionTile(
shape: const Border(), shape: const Border(),
title: Text( title: Text(title, style: context.textTheme.labelLarge),
title,
style: context.textTheme.labelLarge,
),
initiallyExpanded: initiallyExpanded, initiallyExpanded: initiallyExpanded,
children: [ children: [
Padding( Padding(
@ -122,180 +119,180 @@ class _DescContainerState extends State<DescContainer> {
apparentTemperatureMin == null apparentTemperatureMin == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/cold.png', imageName: 'assets/images/cold.png',
value: statusData value: statusData.getDegree(
.getDegree(apparentTemperatureMin.round()), apparentTemperatureMin.round(),
desc: 'apparentTemperatureMin'.tr,
), ),
desc: 'apparentTemperatureMin'.tr,
),
apparentTemperatureMax == null apparentTemperatureMax == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/hot.png', imageName: 'assets/images/hot.png',
value: statusData value: statusData.getDegree(
.getDegree(apparentTemperatureMax.round()), apparentTemperatureMax.round(),
desc: 'apparentTemperatureMax'.tr,
), ),
desc: 'apparentTemperatureMax'.tr,
),
uvIndexMax == null uvIndexMax == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/uv.png', imageName: 'assets/images/uv.png',
value: '${uvIndexMax.round()}', value: '${uvIndexMax.round()}',
desc: 'uvIndex'.tr, desc: 'uvIndex'.tr,
message: message.getUvIndex(uvIndexMax.round()), message: message.getUvIndex(uvIndexMax.round()),
), ),
windDirection10MDominant == null windDirection10MDominant == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/windsock.png', imageName: 'assets/images/windsock.png',
value: '$windDirection10MDominant°', value: '$windDirection10MDominant°',
desc: 'direction'.tr, desc: 'direction'.tr,
message: message.getDirection(windDirection10MDominant), message: message.getDirection(windDirection10MDominant),
), ),
windSpeed10MMax == null windSpeed10MMax == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/wind.png', imageName: 'assets/images/wind.png',
value: statusData.getSpeed(windSpeed10MMax.round()), value: statusData.getSpeed(windSpeed10MMax.round()),
desc: 'wind'.tr, desc: 'wind'.tr,
), ),
windGusts10MMax == null windGusts10MMax == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/windgusts.png', imageName: 'assets/images/windgusts.png',
value: statusData.getSpeed(windGusts10MMax.round()), value: statusData.getSpeed(windGusts10MMax.round()),
desc: 'windgusts'.tr, desc: 'windgusts'.tr,
), ),
precipitationProbabilityMax == null precipitationProbabilityMax == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: imageName: 'assets/images/precipitation_probability.png',
'assets/images/precipitation_probability.png', value: '$precipitationProbabilityMax%',
value: '$precipitationProbabilityMax%', desc: 'precipitationProbability'.tr,
desc: 'precipitationProbability'.tr, ),
),
rainSum == null rainSum == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/water.png', imageName: 'assets/images/water.png',
value: statusData.getPrecipitation(rainSum), value: statusData.getPrecipitation(rainSum),
desc: 'rain'.tr, desc: 'rain'.tr,
), ),
precipitationSum == null precipitationSum == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/rainfall.png', imageName: 'assets/images/rainfall.png',
value: statusData.getPrecipitation(precipitationSum), value: statusData.getPrecipitation(precipitationSum),
desc: 'precipitation'.tr, desc: 'precipitation'.tr,
), ),
dewpoint2M == null dewpoint2M == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/dew.png', imageName: 'assets/images/dew.png',
value: statusData.getDegree(dewpoint2M.round()), value: statusData.getDegree(dewpoint2M.round()),
desc: 'dewpoint'.tr, desc: 'dewpoint'.tr,
), ),
feels == null feels == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/temperature.png', imageName: 'assets/images/temperature.png',
value: statusData.getDegree(feels.round()), value: statusData.getDegree(feels.round()),
desc: 'feels'.tr, desc: 'feels'.tr,
), ),
visibility == null visibility == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/fog.png', imageName: 'assets/images/fog.png',
value: statusData.getVisibility(visibility), value: statusData.getVisibility(visibility),
desc: 'visibility'.tr, desc: 'visibility'.tr,
), ),
direction == null direction == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/windsock.png', imageName: 'assets/images/windsock.png',
value: '$direction°', value: '$direction°',
desc: 'direction'.tr, desc: 'direction'.tr,
message: message.getDirection(direction), message: message.getDirection(direction),
), ),
wind == null wind == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/wind.png', imageName: 'assets/images/wind.png',
value: statusData.getSpeed(wind.round()), value: statusData.getSpeed(wind.round()),
desc: 'wind'.tr, desc: 'wind'.tr,
), ),
windgusts == null windgusts == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/windgusts.png', imageName: 'assets/images/windgusts.png',
value: statusData.getSpeed(windgusts.round()), value: statusData.getSpeed(windgusts.round()),
desc: 'windgusts'.tr, desc: 'windgusts'.tr,
), ),
evaporation == null evaporation == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/evaporation.png', imageName: 'assets/images/evaporation.png',
value: statusData.getPrecipitation(evaporation.abs()), value: statusData.getPrecipitation(evaporation.abs()),
desc: 'evaporation'.tr, desc: 'evaporation'.tr,
), ),
precipitation == null precipitation == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/rainfall.png', imageName: 'assets/images/rainfall.png',
value: statusData.getPrecipitation(precipitation), value: statusData.getPrecipitation(precipitation),
desc: 'precipitation'.tr, desc: 'precipitation'.tr,
), ),
rain == null rain == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/water.png', imageName: 'assets/images/water.png',
value: statusData.getPrecipitation(rain), value: statusData.getPrecipitation(rain),
desc: 'rain'.tr, desc: 'rain'.tr,
), ),
precipitationProbability == null precipitationProbability == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: imageName: 'assets/images/precipitation_probability.png',
'assets/images/precipitation_probability.png', value: '$precipitationProbability%',
value: '$precipitationProbability%', desc: 'precipitationProbability'.tr,
desc: 'precipitationProbability'.tr, ),
),
humidity == null humidity == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/humidity.png', imageName: 'assets/images/humidity.png',
value: '$humidity%', value: '$humidity%',
desc: 'humidity'.tr, desc: 'humidity'.tr,
), ),
cloudcover == null cloudcover == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/cloudy.png', imageName: 'assets/images/cloudy.png',
value: '$cloudcover%', value: '$cloudcover%',
desc: 'cloudcover'.tr, desc: 'cloudcover'.tr,
), ),
pressure == null pressure == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/atmospheric.png', imageName: 'assets/images/atmospheric.png',
value: statusData.getPressure(pressure.round()), value: statusData.getPressure(pressure.round()),
desc: 'pressure'.tr, desc: 'pressure'.tr,
message: message.getPressure(pressure.round()), message: message.getPressure(pressure.round()),
), ),
uvIndex == null uvIndex == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/uv.png', imageName: 'assets/images/uv.png',
value: '${uvIndex.round()}', value: '${uvIndex.round()}',
desc: 'uvIndex'.tr, desc: 'uvIndex'.tr,
message: message.getUvIndex(uvIndex.round()), message: message.getUvIndex(uvIndex.round()),
), ),
shortwaveRadiation == null shortwaveRadiation == null
? Container() ? Container()
: DescWeather( : DescWeather(
imageName: 'assets/images/shortwave_radiation.png', imageName: 'assets/images/shortwave_radiation.png',
value: '${shortwaveRadiation.round()} ${'W/m2'.tr}', value: '${shortwaveRadiation.round()} ${'W/m2'.tr}',
desc: 'shortwaveRadiation'.tr, desc: 'shortwaveRadiation'.tr,
), ),
], ],
), ),
), ),

View file

@ -37,16 +37,13 @@ class _HourlyState extends State<Hourly> {
children: [ children: [
Column( Column(
children: [ children: [
Text(statusData.getTimeFormat(time), style: textTheme.labelLarge),
Text( Text(
statusData.getTimeFormat(time), DateFormat(
style: textTheme.labelLarge, 'E',
), locale.languageCode,
Text( ).format(DateTime.tryParse(time)!),
DateFormat('E', locale.languageCode) style: textTheme.labelLarge?.copyWith(color: Colors.grey),
.format(DateTime.tryParse(time)!),
style: textTheme.labelLarge?.copyWith(
color: Colors.grey,
),
), ),
], ],
), ),
@ -61,9 +58,7 @@ class _HourlyState extends State<Hourly> {
), ),
Text( Text(
statusData.getDegree(widget.degree.round()), statusData.getDegree(widget.degree.round()),
style: textTheme.titleMedium?.copyWith( style: textTheme.titleMedium?.copyWith(fontWeight: FontWeight.w600),
fontWeight: FontWeight.w600,
),
), ),
], ],
); );

View file

@ -39,113 +39,131 @@ class _NowState extends State<Now> {
Widget build(BuildContext context) { Widget build(BuildContext context) {
return largeElement return largeElement
? Padding( ? Padding(
padding: const EdgeInsets.only(bottom: 15), padding: const EdgeInsets.only(bottom: 15),
child: Column( child: Column(
mainAxisAlignment: MainAxisAlignment.center, mainAxisAlignment: MainAxisAlignment.center,
children: [
const Gap(15),
Image(
image: AssetImage(
statusWeather.getImageNow(
widget.weather,
widget.time,
widget.timeDay,
widget.timeNight,
),
),
fit: BoxFit.fill,
height: 200,
),
Text(
'${roundDegree ? widget.degree.round() : widget.degree}',
style: context.textTheme.displayLarge?.copyWith(
fontSize: 90,
fontWeight: FontWeight.w800,
shadows: const [Shadow(blurRadius: 15, offset: Offset(5, 5))],
),
),
Text(
statusWeather.getText(widget.weather),
style: context.textTheme.titleLarge,
),
const Gap(5),
Text(
DateFormat.MMMMEEEEd(
locale.languageCode,
).format(DateTime.parse(widget.time)),
style: context.textTheme.labelLarge?.copyWith(
color: Colors.grey,
),
),
],
),
)
: Card(
margin: const EdgeInsets.only(bottom: 15),
child: Padding(
padding: const EdgeInsets.only(
top: 18,
bottom: 18,
left: 25,
right: 15,
),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [ children: [
const Gap(15), Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
DateFormat.MMMMEEEEd(
locale.languageCode,
).format(DateTime.parse(widget.time)),
style: context.textTheme.labelLarge?.copyWith(
color: Colors.grey,
),
),
const Gap(5),
Text(
statusWeather.getText(widget.weather),
style: context.textTheme.titleLarge?.copyWith(
fontSize: 20,
),
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('feels'.tr, style: context.textTheme.bodyMedium),
Text('', style: context.textTheme.bodyMedium),
Text(
statusData.getDegree(widget.feels.round()),
style: context.textTheme.bodyMedium,
),
],
),
const Gap(30),
Text(
statusData.getDegree(
roundDegree ? widget.degree.round() : widget.degree,
),
style: context.textTheme.displayMedium?.copyWith(
fontWeight: FontWeight.w800,
),
),
const Gap(5),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
statusData.getDegree((widget.tempMin.round())),
style: context.textTheme.labelLarge,
),
Text(' / ', style: context.textTheme.labelLarge),
Text(
statusData.getDegree((widget.tempMax.round())),
style: context.textTheme.labelLarge,
),
],
),
],
),
),
Image( Image(
image: AssetImage(statusWeather.getImageNow(widget.weather, image: AssetImage(
widget.time, widget.timeDay, widget.timeNight)), statusWeather.getImageNow(
widget.weather,
widget.time,
widget.timeDay,
widget.timeNight,
),
),
fit: BoxFit.fill, fit: BoxFit.fill,
height: 200, height: 140,
),
Text(
'${roundDegree ? widget.degree.round() : widget.degree}',
style: context.textTheme.displayLarge?.copyWith(
fontSize: 90,
fontWeight: FontWeight.w800,
shadows: const [
Shadow(
blurRadius: 15,
offset: Offset(5, 5),
)
]),
),
Text(
statusWeather.getText(widget.weather),
style: context.textTheme.titleLarge,
),
const Gap(5),
Text(
DateFormat.MMMMEEEEd(locale.languageCode).format(
DateTime.parse(widget.time),
),
style: context.textTheme.labelLarge?.copyWith(
color: Colors.grey,
),
), ),
], ],
), ),
) ),
: Card( );
margin: const EdgeInsets.only(bottom: 15),
child: Padding(
padding: const EdgeInsets.only(
top: 18, bottom: 18, left: 25, right: 15),
child: Row(
crossAxisAlignment: CrossAxisAlignment.center,
children: [
Expanded(
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(
DateFormat.MMMMEEEEd(locale.languageCode).format(
DateTime.parse(widget.time),
),
style: context.textTheme.labelLarge?.copyWith(
color: Colors.grey,
),
),
const Gap(5),
Text(
statusWeather.getText(widget.weather),
style: context.textTheme.titleLarge
?.copyWith(fontSize: 20),
),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text('feels'.tr,
style: context.textTheme.bodyMedium),
Text('', style: context.textTheme.bodyMedium),
Text(statusData.getDegree(widget.feels.round()),
style: context.textTheme.bodyMedium),
],
),
const Gap(30),
Text(
statusData.getDegree(roundDegree
? widget.degree.round()
: widget.degree),
style: context.textTheme.displayMedium?.copyWith(
fontWeight: FontWeight.w800,
),
),
const Gap(5),
Row(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text(statusData.getDegree((widget.tempMin.round())),
style: context.textTheme.labelLarge),
Text(' / ', style: context.textTheme.labelLarge),
Text(statusData.getDegree((widget.tempMax.round())),
style: context.textTheme.labelLarge),
],
),
],
),
),
Image(
image: AssetImage(statusWeather.getImageNow(widget.weather,
widget.time, widget.timeDay, widget.timeNight)),
fit: BoxFit.fill,
height: 140,
),
],
),
),
);
} }
} }

View file

@ -63,14 +63,17 @@ class StatusData {
String getTimeFormat(String time) { String getTimeFormat(String time) {
switch (settings.timeformat) { switch (settings.timeformat) {
case '12': case '12':
return DateFormat.jm(locale.languageCode) return DateFormat.jm(
.format(DateTime.tryParse(time)!); locale.languageCode,
).format(DateTime.tryParse(time)!);
case '24': case '24':
return DateFormat.Hm(locale.languageCode) return DateFormat.Hm(
.format(DateTime.tryParse(time)!); locale.languageCode,
).format(DateTime.tryParse(time)!);
default: default:
return DateFormat.Hm(locale.languageCode) return DateFormat.Hm(
.format(DateTime.tryParse(time)!); locale.languageCode,
).format(DateTime.tryParse(time)!);
} }
} }

View file

@ -4,15 +4,29 @@ const assetImageRoot = 'assets/images/';
class StatusWeather { class StatusWeather {
String getImageNow( String getImageNow(
int weather, String time, String timeDay, String timeNight) { int weather,
String time,
String timeDay,
String timeNight,
) {
final currentTime = DateTime.parse(time); final currentTime = DateTime.parse(time);
final day = DateTime.parse(timeDay); final day = DateTime.parse(timeDay);
final night = DateTime.parse(timeNight); final night = DateTime.parse(timeNight);
final dayTime = final dayTime = DateTime(
DateTime(day.year, day.month, day.day, day.hour, day.minute); day.year,
final nightTime = day.month,
DateTime(night.year, night.month, night.day, night.hour, night.minute); day.day,
day.hour,
day.minute,
);
final nightTime = DateTime(
night.year,
night.month,
night.day,
night.hour,
night.minute,
);
switch (weather) { switch (weather) {
case 0: case 0:
@ -112,15 +126,29 @@ class StatusWeather {
} }
String getImageToday( String getImageToday(
int weather, String time, String timeDay, String timeNight) { int weather,
String time,
String timeDay,
String timeNight,
) {
final currentTime = DateTime.parse(time); final currentTime = DateTime.parse(time);
final day = DateTime.parse(timeDay); final day = DateTime.parse(timeDay);
final night = DateTime.parse(timeNight); final night = DateTime.parse(timeNight);
final dayTime = final dayTime = DateTime(
DateTime(day.year, day.month, day.day, day.hour, day.minute); day.year,
final nightTime = day.month,
DateTime(night.year, night.month, night.day, night.hour, night.minute); day.day,
day.hour,
day.minute,
);
final nightTime = DateTime(
night.year,
night.month,
night.day,
night.hour,
night.minute,
);
switch (weather) { switch (weather) {
case 0: case 0:
@ -274,15 +302,29 @@ class StatusWeather {
} }
String getImageNotification( String getImageNotification(
int weather, String time, String timeDay, String timeNight) { int weather,
String time,
String timeDay,
String timeNight,
) {
final currentTime = DateTime.parse(time); final currentTime = DateTime.parse(time);
final day = DateTime.parse(timeDay); final day = DateTime.parse(timeDay);
final night = DateTime.parse(timeNight); final night = DateTime.parse(timeNight);
final dayTime = final dayTime = DateTime(
DateTime(day.year, day.month, day.day, day.hour, day.minute); day.year,
final nightTime = day.month,
DateTime(night.year, night.month, night.day, night.hour, night.minute); day.day,
day.hour,
day.minute,
);
final nightTime = DateTime(
night.year,
night.month,
night.day,
night.hour,
night.minute,
);
switch (weather) { switch (weather) {
case 0: case 0:

View file

@ -55,10 +55,7 @@ class _SunsetSunriseState extends State<SunsetSunrise> {
), ),
const Gap(5), const Gap(5),
Flexible( Flexible(
child: Image.asset( child: Image.asset('assets/images/sunrise.png', scale: 10),
'assets/images/sunrise.png',
scale: 10,
),
), ),
], ],
), ),
@ -86,10 +83,7 @@ class _SunsetSunriseState extends State<SunsetSunrise> {
), ),
const Gap(5), const Gap(5),
Flexible( Flexible(
child: Image.asset( child: Image.asset('assets/images/sunset.png', scale: 10),
'assets/images/sunset.png',
scale: 10,
),
), ),
], ],
), ),

View file

@ -10,9 +10,17 @@ extension HexColor on Color {
} }
/// Prefixes a hash sign if [leadingHashSign] is set to `true` (default is `true`). /// Prefixes a hash sign if [leadingHashSign] is set to `true` (default is `true`).
String toHex({bool leadingHashSign = true}) => '${leadingHashSign ? '#' : ''}' String toHex({bool leadingHashSign = true}) {
'${alpha.toRadixString(16).padLeft(2, '0')}' final argb = toARGB32(); // Get 32-bit integer representation
'${red.toRadixString(16).padLeft(2, '0')}' final a = (argb >> 24) & 0xFF;
'${green.toRadixString(16).padLeft(2, '0')}' final r = (argb >> 16) & 0xFF;
'${blue.toRadixString(16).padLeft(2, '0')}'; final g = (argb >> 8) & 0xFF;
final b = argb & 0xFF;
return '${leadingHashSign ? '#' : ''}'
'${a.toRadixString(16).padLeft(2, '0')}'
'${r.toRadixString(16).padLeft(2, '0')}'
'${g.toRadixString(16).padLeft(2, '0')}'
'${b.toRadixString(16).padLeft(2, '0')}';
}
} }

View file

@ -15,16 +15,17 @@ class NotificationShow {
AndroidNotificationDetails androidNotificationDetails = AndroidNotificationDetails androidNotificationDetails =
AndroidNotificationDetails( AndroidNotificationDetails(
'Rain', 'Rain',
'DARK NIGHT', 'DARK NIGHT',
priority: Priority.high, priority: Priority.high,
importance: Importance.max, importance: Importance.max,
playSound: false, playSound: false,
enableVibration: false, enableVibration: false,
largeIcon: FilePathAndroidBitmap(imagePath), largeIcon: FilePathAndroidBitmap(imagePath),
);
NotificationDetails notificationDetails = NotificationDetails(
android: androidNotificationDetails,
); );
NotificationDetails notificationDetails =
NotificationDetails(android: androidNotificationDetails);
var scheduledTime = tz.TZDateTime.from(date, tz.local); var scheduledTime = tz.TZDateTime.from(date, tz.local);
flutterLocalNotificationsPlugin.zonedSchedule( flutterLocalNotificationsPlugin.zonedSchedule(

View file

@ -7,14 +7,15 @@ void showSnackBar({required String content, Function? onPressed}) {
globalKey.currentState?.showSnackBar( globalKey.currentState?.showSnackBar(
SnackBar( SnackBar(
content: Text(content), content: Text(content),
action: onPressed != null action:
? SnackBarAction( onPressed != null
label: 'settings'.tr, ? SnackBarAction(
onPressed: () { label: 'settings'.tr,
onPressed(); onPressed: () {
}, onPressed();
) },
: null, )
: null,
), ),
); );
} }

View file

@ -33,7 +33,7 @@ final ValueNotifier<Future<bool>> isOnline = ValueNotifier(
InternetConnection().hasInternetAccess, InternetConnection().hasInternetAccess,
); );
FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin = final FlutterLocalNotificationsPlugin flutterLocalNotificationsPlugin =
FlutterLocalNotificationsPlugin(); FlutterLocalNotificationsPlugin();
bool amoledTheme = false; bool amoledTheme = false;
@ -47,36 +47,36 @@ String timeEnd = '21:00';
String widgetBackgroundColor = ''; String widgetBackgroundColor = '';
String widgetTextColor = ''; String widgetTextColor = '';
final List appLanguages = [
{'name': 'বাংলা', 'locale': const Locale('bn', 'IN')},
{'name': 'Čeština', 'locale': const Locale('cs', 'CZ')},
{'name': 'Dansk', 'locale': const Locale('da', 'DK')},
{'name': 'Deutsch', 'locale': const Locale('de', 'DE')},
{'name': 'English', 'locale': const Locale('en', 'US')},
{'name': 'Español', 'locale': const Locale('es', 'ES')},
{'name': 'Français', 'locale': const Locale('fr', 'FR')},
// {'name': 'Gaeilge', 'locale': const Locale('ga', 'IE')},
{'name': 'हिन्दी', 'locale': const Locale('hi', 'IN')},
{'name': 'Magyar', 'locale': const Locale('hu', 'HU')},
{'name': 'Italiano', 'locale': const Locale('it', 'IT')},
{'name': '한국어', 'locale': const Locale('ko', 'KR')},
{'name': 'فارسی', 'locale': const Locale('fa', 'IR')},
{'name': 'ქართული', 'locale': const Locale('ka', 'GE')},
{'name': 'Nederlands', 'locale': const Locale('nl', 'NL')},
{'name': 'Polski', 'locale': const Locale('pl', 'PL')},
{'name': 'Português (Brasil)', 'locale': const Locale('pt', 'BR')},
{'name': 'Română', 'locale': const Locale('ro', 'RO')},
{'name': 'Русский', 'locale': const Locale('ru', 'RU')},
{'name': 'Slovenčina', 'locale': const Locale('sk', 'SK')},
{'name': 'Türkçe', 'locale': const Locale('tr', 'TR')},
{'name': 'اردو', 'locale': const Locale('ur', 'PK')},
{'name': '中文(简体)', 'locale': const Locale('zh', 'CN')},
{'name': '中文(繁體)', 'locale': const Locale('zh', 'TW')},
];
const String appGroupId = 'DARK NIGHT'; const String appGroupId = 'DARK NIGHT';
const String androidWidgetName = 'OreoWidget'; const String androidWidgetName = 'OreoWidget';
const List<Map<String, dynamic>> appLanguages = [
{'name': 'বাংলা', 'locale': Locale('bn', 'IN')},
{'name': 'Čeština', 'locale': Locale('cs', 'CZ')},
{'name': 'Dansk', 'locale': Locale('da', 'DK')},
{'name': 'Deutsch', 'locale': Locale('de', 'DE')},
{'name': 'English', 'locale': Locale('en', 'US')},
{'name': 'Español', 'locale': Locale('es', 'ES')},
{'name': 'Français', 'locale': Locale('fr', 'FR')},
// {'name': 'Gaeilge', 'locale': Locale('ga', 'IE')},
{'name': 'हिन्दी', 'locale': Locale('hi', 'IN')},
{'name': 'Magyar', 'locale': Locale('hu', 'HU')},
{'name': 'Italiano', 'locale': Locale('it', 'IT')},
{'name': '한국어', 'locale': Locale('ko', 'KR')},
{'name': 'فارسی', 'locale': Locale('fa', 'IR')},
{'name': 'ქართული', 'locale': Locale('ka', 'GE')},
{'name': 'Nederlands', 'locale': Locale('nl', 'NL')},
{'name': 'Polski', 'locale': Locale('pl', 'PL')},
{'name': 'Português (Brasil)', 'locale': Locale('pt', 'BR')},
{'name': 'Română', 'locale': Locale('ro', 'RO')},
{'name': 'Русский', 'locale': Locale('ru', 'RU')},
{'name': 'Slovenčina', 'locale': Locale('sk', 'SK')},
{'name': 'Türkçe', 'locale': Locale('tr', 'TR')},
{'name': 'اردو', 'locale': Locale('ur', 'PK')},
{'name': '中文(简体)', 'locale': Locale('zh', 'CN')},
{'name': '中文(繁體)', 'locale': Locale('zh', 'TW')},
];
@pragma('vm:entry-point') @pragma('vm:entry-point')
void callbackDispatcher() { void callbackDispatcher() {
Workmanager().executeTask((task, inputData) { Workmanager().executeTask((task, inputData) {
@ -85,59 +85,40 @@ void callbackDispatcher() {
} }
void main() async { void main() async {
final String timeZoneName;
WidgetsFlutterBinding.ensureInitialized(); WidgetsFlutterBinding.ensureInitialized();
Connectivity().onConnectivityChanged.listen(( await _initializeApp();
List<ConnectivityResult> result,
) {
result.contains(ConnectivityResult.none)
? isOnline.value = Future(() => false)
: isOnline.value = InternetConnection().hasInternetAccess;
});
DeviceFeature().init();
if (Platform.isAndroid) {
Workmanager().initialize(callbackDispatcher, isInDebugMode: kDebugMode);
await setOptimalDisplayMode();
}
timeZoneName = await FlutterTimezone.getLocalTimezone();
tz.initializeTimeZones();
tz.setLocalLocation(tz.getLocation(timeZoneName));
await isarInit();
const AndroidInitializationSettings initializationSettingsAndroid =
AndroidInitializationSettings('@mipmap/ic_launcher');
const DarwinInitializationSettings initializationSettingsDarwin =
DarwinInitializationSettings();
const LinuxInitializationSettings initializationSettingsLinux =
LinuxInitializationSettings(defaultActionName: 'Rain');
const InitializationSettings initializationSettings = InitializationSettings(
android: initializationSettingsAndroid,
iOS: initializationSettingsDarwin,
linux: initializationSettingsLinux,
);
await flutterLocalNotificationsPlugin.initialize(initializationSettings);
runApp(const MyApp()); runApp(const MyApp());
} }
Future<void> setOptimalDisplayMode() async { Future<void> _initializeApp() async {
final List<DisplayMode> supported = await FlutterDisplayMode.supported; _setupConnectivityListener();
final DisplayMode active = await FlutterDisplayMode.active; await _initializeTimeZone();
final List<DisplayMode> sameResolution = await _initializeIsar();
supported await _initializeNotifications();
.where( if (Platform.isAndroid) {
(DisplayMode m) => await _setOptimalDisplayMode();
m.width == active.width && m.height == active.height, Workmanager().initialize(callbackDispatcher, isInDebugMode: kDebugMode);
) HomeWidget.setAppGroupId(appGroupId);
.toList() }
..sort( DeviceFeature().init();
(DisplayMode a, DisplayMode b) =>
b.refreshRate.compareTo(a.refreshRate),
);
final DisplayMode mostOptimalMode =
sameResolution.isNotEmpty ? sameResolution.first : active;
await FlutterDisplayMode.setPreferredMode(mostOptimalMode);
} }
Future<void> isarInit() async { void _setupConnectivityListener() {
Connectivity().onConnectivityChanged.listen((result) {
isOnline.value =
result.contains(ConnectivityResult.none)
? Future.value(false)
: InternetConnection().hasInternetAccess;
});
}
Future<void> _initializeTimeZone() async {
final timeZoneName = await FlutterTimezone.getLocalTimezone();
tz.initializeTimeZones();
tz.setLocalLocation(tz.getLocation(timeZoneName));
}
Future<void> _initializeIsar() async {
isar = await Isar.open([ isar = await Isar.open([
SettingsSchema, SettingsSchema,
MainWeatherCacheSchema, MainWeatherCacheSchema,
@ -159,6 +140,28 @@ Future<void> isarInit() async {
} }
} }
Future<void> _initializeNotifications() async {
const initializationSettings = InitializationSettings(
android: AndroidInitializationSettings('@mipmap/ic_launcher'),
iOS: DarwinInitializationSettings(),
linux: LinuxInitializationSettings(defaultActionName: 'Rain'),
);
await flutterLocalNotificationsPlugin.initialize(initializationSettings);
}
Future<void> _setOptimalDisplayMode() async {
final supported = await FlutterDisplayMode.supported;
final active = await FlutterDisplayMode.active;
final sameResolution =
supported
.where((m) => m.width == active.width && m.height == active.height)
.toList()
..sort((a, b) => b.refreshRate.compareTo(a.refreshRate));
final mostOptimalMode =
sameResolution.isNotEmpty ? sameResolution.first : active;
await FlutterDisplayMode.setPreferredMode(mostOptimalMode);
}
class MyApp extends StatefulWidget { class MyApp extends StatefulWidget {
const MyApp({super.key}); const MyApp({super.key});
@ -177,30 +180,14 @@ class MyApp extends StatefulWidget {
}) async { }) async {
final state = context.findAncestorStateOfType<_MyAppState>()!; final state = context.findAncestorStateOfType<_MyAppState>()!;
if (newAmoledTheme != null) { if (newAmoledTheme != null) state.changeAmoledTheme(newAmoledTheme);
state.changeAmoledTheme(newAmoledTheme); if (newMaterialColor != null) state.changeMarerialTheme(newMaterialColor);
} if (newRoundDegree != null) state.changeRoundDegree(newRoundDegree);
if (newMaterialColor != null) { if (newLargeElement != null) state.changeLargeElement(newLargeElement);
state.changeMarerialTheme(newMaterialColor); if (newLocale != null) state.changeLocale(newLocale);
} if (newTimeRange != null) state.changeTimeRange(newTimeRange);
if (newRoundDegree != null) { if (newTimeStart != null) state.changeTimeStart(newTimeStart);
state.changeRoundDegree(newRoundDegree); if (newTimeEnd != null) state.changeTimeEnd(newTimeEnd);
}
if (newLargeElement != null) {
state.changeLargeElement(newLargeElement);
}
if (newLocale != null) {
state.changeLocale(newLocale);
}
if (newTimeRange != null) {
state.changeTimeRange(newTimeRange);
}
if (newTimeStart != null) {
state.changeTimeStart(newTimeStart);
}
if (newTimeEnd != null) {
state.changeTimeEnd(newTimeEnd);
}
if (newWidgetBackgroundColor != null) { if (newWidgetBackgroundColor != null) {
state.changeWidgetBackgroundColor(newWidgetBackgroundColor); state.changeWidgetBackgroundColor(newWidgetBackgroundColor);
} }
@ -216,68 +203,28 @@ class MyApp extends StatefulWidget {
class _MyAppState extends State<MyApp> { class _MyAppState extends State<MyApp> {
final themeController = Get.put(ThemeController()); final themeController = Get.put(ThemeController());
void changeAmoledTheme(bool newAmoledTheme) { void changeAmoledTheme(bool newAmoledTheme) =>
setState(() { setState(() => amoledTheme = newAmoledTheme);
amoledTheme = newAmoledTheme; void changeMarerialTheme(bool newMaterialColor) =>
}); setState(() => materialColor = newMaterialColor);
} void changeRoundDegree(bool newRoundDegree) =>
setState(() => roundDegree = newRoundDegree);
void changeMarerialTheme(bool newMaterialColor) { void changeLargeElement(bool newLargeElement) =>
setState(() { setState(() => largeElement = newLargeElement);
materialColor = newMaterialColor; void changeTimeRange(int newTimeRange) =>
}); setState(() => timeRange = newTimeRange);
} void changeTimeStart(String newTimeStart) =>
setState(() => timeStart = newTimeStart);
void changeRoundDegree(bool newRoundDegree) { void changeTimeEnd(String newTimeEnd) => setState(() => timeEnd = newTimeEnd);
setState(() { void changeLocale(Locale newLocale) => setState(() => locale = newLocale);
roundDegree = newRoundDegree; void changeWidgetBackgroundColor(String newWidgetBackgroundColor) =>
}); setState(() => widgetBackgroundColor = newWidgetBackgroundColor);
} void changeWidgetTextColor(String newWidgetTextColor) =>
setState(() => widgetTextColor = newWidgetTextColor);
void changeLargeElement(bool newLargeElement) {
setState(() {
largeElement = newLargeElement;
});
}
void changeTimeRange(int newTimeRange) {
setState(() {
timeRange = newTimeRange;
});
}
void changeTimeStart(String newTimeStart) {
setState(() {
timeStart = newTimeStart;
});
}
void changeTimeEnd(String newTimeEnd) {
setState(() {
timeEnd = newTimeEnd;
});
}
void changeLocale(Locale newLocale) {
setState(() {
locale = newLocale;
});
}
void changeWidgetBackgroundColor(String newWidgetBackgroundColor) {
setState(() {
widgetBackgroundColor = newWidgetBackgroundColor;
});
}
void changeWidgetTextColor(String newWidgetTextColor) {
setState(() {
widgetTextColor = newWidgetTextColor;
});
}
@override @override
void initState() { void initState() {
super.initState();
amoledTheme = settings.amoledTheme; amoledTheme = settings.amoledTheme;
materialColor = settings.materialColor; materialColor = settings.materialColor;
roundDegree = settings.roundDegree; roundDegree = settings.roundDegree;
@ -291,10 +238,6 @@ class _MyAppState extends State<MyApp> {
timeEnd = settings.timeEnd ?? '21:00'; timeEnd = settings.timeEnd ?? '21:00';
widgetBackgroundColor = settings.widgetBackgroundColor ?? ''; widgetBackgroundColor = settings.widgetBackgroundColor ?? '';
widgetTextColor = settings.widgetTextColor ?? ''; widgetTextColor = settings.widgetTextColor ?? '';
if (Platform.isAndroid) {
HomeWidget.setAppGroupId(appGroupId);
}
super.initState();
} }
@override @override
@ -379,10 +322,10 @@ class _MyAppState extends State<MyApp> {
debugShowCheckedModeBanner: false, debugShowCheckedModeBanner: false,
home: home:
settings.onboard settings.onboard
? (locationCache.city == null) || ? (locationCache.city == null ||
(locationCache.district == null) || locationCache.district == null ||
(locationCache.lat == null) || locationCache.lat == null ||
(locationCache.lon == null) locationCache.lon == null)
? const SelectGeolocation(isStart: true) ? const SelectGeolocation(isStart: true)
: const HomePage() : const HomePage()
: const OnBording(), : const OnBording(),

View file

@ -20,15 +20,19 @@ ColorScheme colorSchemeDark = ColorScheme.fromSeed(
); );
ThemeData lightTheme( ThemeData lightTheme(
Color? color, ColorScheme? colorScheme, bool edgeToEdgeAvailable) { Color? color,
ColorScheme? colorScheme,
bool edgeToEdgeAvailable,
) {
return baseLigth.copyWith( return baseLigth.copyWith(
brightness: Brightness.light, brightness: Brightness.light,
colorScheme: colorScheme colorScheme:
?.copyWith( colorScheme
brightness: Brightness.light, ?.copyWith(
surface: baseLigth.colorScheme.surface, brightness: Brightness.light,
) surface: baseLigth.colorScheme.surface,
.harmonized(), )
.harmonized(),
textTheme: GoogleFonts.ubuntuTextTheme(baseLigth.textTheme), textTheme: GoogleFonts.ubuntuTextTheme(baseLigth.textTheme),
appBarTheme: AppBarTheme( appBarTheme: AppBarTheme(
backgroundColor: color, backgroundColor: color,
@ -54,9 +58,7 @@ ThemeData lightTheme(
color: color, color: color,
surfaceTintColor: surfaceTintColor:
color == oledColor ? Colors.transparent : colorScheme?.surfaceTint, color == oledColor ? Colors.transparent : colorScheme?.surfaceTint,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
borderRadius: BorderRadius.circular(20),
),
shadowColor: Colors.transparent, shadowColor: Colors.transparent,
), ),
bottomSheetTheme: baseLigth.bottomSheetTheme.copyWith( bottomSheetTheme: baseLigth.bottomSheetTheme.copyWith(
@ -73,11 +75,9 @@ ThemeData lightTheme(
color == oledColor ? Colors.transparent : colorScheme?.surfaceTint, color == oledColor ? Colors.transparent : colorScheme?.surfaceTint,
), ),
inputDecorationTheme: baseLigth.inputDecorationTheme.copyWith( inputDecorationTheme: baseLigth.inputDecorationTheme.copyWith(
labelStyle: WidgetStateTextStyle.resolveWith( labelStyle: WidgetStateTextStyle.resolveWith((Set<WidgetState> states) {
(Set<WidgetState> states) { return const TextStyle(fontSize: 14);
return const TextStyle(fontSize: 14); }),
},
),
border: InputBorder.none, border: InputBorder.none,
focusedBorder: InputBorder.none, focusedBorder: InputBorder.none,
enabledBorder: InputBorder.none, enabledBorder: InputBorder.none,
@ -87,15 +87,19 @@ ThemeData lightTheme(
} }
ThemeData darkTheme( ThemeData darkTheme(
Color? color, ColorScheme? colorScheme, bool edgeToEdgeAvailable) { Color? color,
ColorScheme? colorScheme,
bool edgeToEdgeAvailable,
) {
return baseDark.copyWith( return baseDark.copyWith(
brightness: Brightness.dark, brightness: Brightness.dark,
colorScheme: colorScheme colorScheme:
?.copyWith( colorScheme
brightness: Brightness.dark, ?.copyWith(
surface: baseDark.colorScheme.surface, brightness: Brightness.dark,
) surface: baseDark.colorScheme.surface,
.harmonized(), )
.harmonized(),
textTheme: GoogleFonts.ubuntuTextTheme(baseDark.textTheme), textTheme: GoogleFonts.ubuntuTextTheme(baseDark.textTheme),
appBarTheme: AppBarTheme( appBarTheme: AppBarTheme(
backgroundColor: color, backgroundColor: color,
@ -121,9 +125,7 @@ ThemeData darkTheme(
color: color, color: color,
surfaceTintColor: surfaceTintColor:
color == oledColor ? Colors.transparent : colorScheme?.surfaceTint, color == oledColor ? Colors.transparent : colorScheme?.surfaceTint,
shape: RoundedRectangleBorder( shape: RoundedRectangleBorder(borderRadius: BorderRadius.circular(20)),
borderRadius: BorderRadius.circular(20),
),
shadowColor: Colors.transparent, shadowColor: Colors.transparent,
), ),
bottomSheetTheme: baseDark.bottomSheetTheme.copyWith( bottomSheetTheme: baseDark.bottomSheetTheme.copyWith(
@ -140,11 +142,9 @@ ThemeData darkTheme(
color == oledColor ? Colors.transparent : colorScheme?.surfaceTint, color == oledColor ? Colors.transparent : colorScheme?.surfaceTint,
), ),
inputDecorationTheme: baseDark.inputDecorationTheme.copyWith( inputDecorationTheme: baseDark.inputDecorationTheme.copyWith(
labelStyle: WidgetStateTextStyle.resolveWith( labelStyle: WidgetStateTextStyle.resolveWith((Set<WidgetState> states) {
(Set<WidgetState> states) { return const TextStyle(fontSize: 14);
return const TextStyle(fontSize: 14); }),
},
),
border: InputBorder.none, border: InputBorder.none,
focusedBorder: InputBorder.none, focusedBorder: InputBorder.none,
enabledBorder: InputBorder.none, enabledBorder: InputBorder.none,

View file

@ -4,9 +4,10 @@ import 'package:rain/app/data/db.dart';
import 'package:rain/main.dart'; import 'package:rain/main.dart';
class ThemeController extends GetxController { class ThemeController extends GetxController {
ThemeMode get theme => settings.theme == 'system' ThemeMode get theme =>
? ThemeMode.system settings.theme == 'system'
: settings.theme == 'dark' ? ThemeMode.system
: settings.theme == 'dark'
? ThemeMode.dark ? ThemeMode.dark
: ThemeMode.light; : ThemeMode.light;

View file

@ -1,141 +1,141 @@
class BnIn { class BnIn {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'শুরু করুন', 'start': 'শুরু করুন',
'description': 'description':
'প্রতি ঘণ্টায়, দিনে এবং সপ্তাহের জন্য প্রতিষ্ঠানের জন্য সক্রিয় পূর্বাভাস সহ আবহাওয়া অ্যাপ্লিকেশন।', 'প্রতি ঘণ্টায়, দিনে এবং সপ্তাহের জন্য প্রতিষ্ঠানের জন্য সক্রিয় পূর্বাভাস সহ আবহাওয়া অ্যাপ্লিকেশন।',
'name': 'আবহাওয়া', 'name': 'আবহাওয়া',
'name2': 'সুবিধাজনক ডিজাইন', 'name2': 'সুবিধাজনক ডিজাইন',
'name3': 'আমাদের সাথে যোগাযোগ করুন', 'name3': 'আমাদের সাথে যোগাযোগ করুন',
'description2': 'description2':
'সমস্ত নেভিগেশনটি এমনভাবে তৈরি করা হয়েছে যাতে আপনি অ্যাপ্লিকেশনে সর্বোত্তম সুবিধায় এবং দ্রুত ইন্টারঅ্যাক্ট করতে পারেন।', 'সমস্ত নেভিগেশনটি এমনভাবে তৈরি করা হয়েছে যাতে আপনি অ্যাপ্লিকেশনে সর্বোত্তম সুবিধায় এবং দ্রুত ইন্টারঅ্যাক্ট করতে পারেন।',
'description3': 'description3':
'আপনার যদি কোনও সমস্যা হয়, অনুগ্রহ করে ইমেল বা অ্যাপ্লিকেশন পর্যালোচনার মাধ্যমে আমাদের সাথে যোগাযোগ করুন।', 'আপনার যদি কোনও সমস্যা হয়, অনুগ্রহ করে ইমেল বা অ্যাপ্লিকেশন পর্যালোচনার মাধ্যমে আমাদের সাথে যোগাযোগ করুন।',
'next': 'পরবর্তী', 'next': 'পরবর্তী',
'search': 'অনুসন্ধান...', 'search': 'অনুসন্ধান...',
'loading': 'লোড হচ্ছে...', 'loading': 'লোড হচ্ছে...',
'searchCity': 'আপনার শহর খুঁজুন', 'searchCity': 'আপনার শহর খুঁজুন',
'humidity': 'আর্দ্ধমন্দ', 'humidity': 'আর্দ্ধমন্দ',
'wind': 'বায়ু', 'wind': 'বায়ু',
'visibility': 'দৃশ্যতা', 'visibility': 'দৃশ্যতা',
'feels': 'অনুভব', 'feels': 'অনুভব',
'evaporation': 'অবপাত ও প্রবাহ', 'evaporation': 'অবপাত ও প্রবাহ',
'precipitation': 'বৃষ্টিপাত', 'precipitation': 'বৃষ্টিপাত',
'direction': 'দিশা', 'direction': 'দিশা',
'pressure': 'চাপ', 'pressure': 'চাপ',
'rain': 'বৃষ্টি', 'rain': 'বৃষ্টি',
'clear_sky': 'পরিষ্কার আকাশ', 'clear_sky': 'পরিষ্কার আকাশ',
'cloudy': 'মেঘলা', 'cloudy': 'মেঘলা',
'overcast': 'মেঘাচ্ছন্ন', 'overcast': 'মেঘাচ্ছন্ন',
'fog': 'কুয়াশা', 'fog': 'কুয়াশা',
'drizzle': 'বৃষ্টি বৃষ্টি', 'drizzle': 'বৃষ্টি বৃষ্টি',
'freezing_drizzle': 'শীতল বৃষ্টি', 'freezing_drizzle': 'শীতল বৃষ্টি',
'freezing_rain': 'শীতল বৃষ্টি', 'freezing_rain': 'শীতল বৃষ্টি',
'rain_showers': 'বৃষ্টির বৃষ্টি', 'rain_showers': 'বৃষ্টির বৃষ্টি',
'snow': 'তুষার', 'snow': 'তুষার',
'thunderstorm': 'বজ্রপাত', 'thunderstorm': 'বজ্রপাত',
'kph': 'কিমি/ঘণ্টা', 'kph': 'কিমি/ঘণ্টা',
'mph': 'মাইল/ঘণ্টা', 'mph': 'মাইল/ঘণ্টা',
'm/s': 'মি/সে', 'm/s': 'মি/সে',
'mmHg': 'মিমি Hg', 'mmHg': 'মিমি Hg',
'mi': 'মাইল', 'mi': 'মাইল',
'km': 'কিমি', 'km': 'কিমি',
'inch': 'ইঞ্চ', 'inch': 'ইঞ্চ',
'mm': 'মিমি', 'mm': 'মিমি',
'hPa': 'হেক্টোপাস্কল', 'hPa': 'হেক্টোপাস্কল',
'settings': 'সেটিংস', 'settings': 'সেটিংস',
'no_inter': 'ইন্টারনেট নেই', 'no_inter': 'ইন্টারনেট নেই',
'on_inter': 'মেটিয়োরোলজিক তথ্য পেতে ইন্টারনেট চালু করুন।', 'on_inter': 'মেটিয়োরোলজিক তথ্য পেতে ইন্টারনেট চালু করুন।',
'location': 'অবস্থান', 'location': 'অবস্থান',
'no_location': 'no_location':
'বর্তমান অবস্থানের জন্য আবহাওয়া ডেটা পেতে অবস্থান সেবা সক্রিয় করুন।', 'বর্তমান অবস্থানের জন্য আবহাওয়া ডেটা পেতে অবস্থান সেবা সক্রিয় করুন।',
'theme': 'থিম', 'theme': 'থিম',
'low': 'নিম্ন', 'low': 'নিম্ন',
'high': 'উচ্চ', 'high': 'উচ্চ',
'normal': 'সাধারণ', 'normal': 'সাধারণ',
'lat': 'অক্ষাংশ', 'lat': 'অক্ষাংশ',
'lon': 'দ্রাঘিমাংশ', 'lon': 'দ্রাঘিমাংশ',
'create': 'তৈরি করুন', 'create': 'তৈরি করুন',
'city': 'শহর', 'city': 'শহর',
'district': 'জেলা', 'district': 'জেলা',
'noWeatherCard': 'একটি শহর যোগ করুন', 'noWeatherCard': 'একটি শহর যোগ করুন',
'deletedCardWeather': 'একটি শহর মুছে ফেলা হচ্ছে', 'deletedCardWeather': 'একটি শহর মুছে ফেলা হচ্ছে',
'deletedCardWeatherQuery': 'আপনি কি নিশ্চিত যে আপনি শহরটি মুছতে চান?', 'deletedCardWeatherQuery': 'আপনি কি নিশ্চিত যে আপনি শহরটি মুছতে চান?',
'delete': 'মুছে ফেলুন', 'delete': 'মুছে ফেলুন',
'cancel': 'বাতিল করুন', 'cancel': 'বাতিল করুন',
'time': 'শহরে সময়', 'time': 'শহরে সময়',
'validateName': 'দয়া করে নাম লিখুন', 'validateName': 'দয়া করে নাম লিখুন',
'measurements': 'মাপনের সিস্টেম', 'measurements': 'মাপনের সিস্টেম',
'degrees': 'ডিগ্রি', 'degrees': 'ডিগ্রি',
'celsius': 'সেলসিয়াস', 'celsius': 'সেলসিয়াস',
'fahrenheit': 'ফারেনহাইট', 'fahrenheit': 'ফারেনহাইট',
'imperial': 'ইমপেরিয়াল', 'imperial': 'ইমপেরিয়াল',
'metric': 'মেট্রিক', 'metric': 'মেট্রিক',
'validateValue': 'দয়া করে একটি মান লিখুন', 'validateValue': 'দয়া করে একটি মান লিখুন',
'validateNumber': 'দয়া করে একটি বৈধ সংখ্যা লিখুন', 'validateNumber': 'দয়া করে একটি বৈধ সংখ্যা লিখুন',
'validate90': 'মান -৯০ থেকে ৯০ মধ্যে হতে হবে', 'validate90': 'মান -৯০ থেকে ৯০ মধ্যে হতে হবে',
'validate180': 'মান -১৮০ থেকে ১৮০ মধ্যে হতে হবে', 'validate180': 'মান -১৮০ থেকে ১৮০ মধ্যে হতে হবে',
'notifications': 'বিজ্ঞপ্তি', 'notifications': 'বিজ্ঞপ্তি',
'sunrise': 'সূর্যোদয়', 'sunrise': 'সূর্যোদয়',
'sunset': 'সূর্যাস্ত', 'sunset': 'সূর্যাস্ত',
'timeformat': 'সময় বিন্যাস', 'timeformat': 'সময় বিন্যাস',
'12': '১২-ঘণ্টা', '12': '১২-ঘণ্টা',
'24': '২৪-ঘণ্টা', '24': '২৪-ঘণ্টা',
'cloudcover': 'মেঘপর্দা', 'cloudcover': 'মেঘপর্দা',
'uvIndex': 'আল্ট্রাভায়োলেট-সূচী', 'uvIndex': 'আল্ট্রাভায়োলেট-সূচী',
'materialColor': 'গতিবিধির রঙ', 'materialColor': 'গতিবিধির রঙ',
'uvLow': 'নিম্ন', 'uvLow': 'নিম্ন',
'uvAverage': 'মধ্যম', 'uvAverage': 'মধ্যম',
'uvHigh': 'উচ্চ', 'uvHigh': 'উচ্চ',
'uvVeryHigh': 'অত্যন্ত উচ্চ', 'uvVeryHigh': 'অত্যন্ত উচ্চ',
'uvExtreme': 'একাধিক', 'uvExtreme': 'একাধিক',
'weatherMore': '১২-দিনের আবহাওয়া পূর্বানুমান', 'weatherMore': '১২-দিনের আবহাওয়া পূর্বানুমান',
'windgusts': 'ঝংকার', 'windgusts': 'ঝংকার',
'north': 'উত্তর', 'north': 'উত্তর',
'northeast': 'উত্তরপূর্ব', 'northeast': 'উত্তরপূর্ব',
'east': 'পূর্ব', 'east': 'পূর্ব',
'southeast': 'দক্ষিণপূর্ব', 'southeast': 'দক্ষিণপূর্ব',
'south': 'দক্ষিণ', 'south': 'দক্ষিণ',
'southwest': 'দক্ষিণপশ্চিম', 'southwest': 'দক্ষিণপশ্চিম',
'west': 'পশ্চিম', 'west': 'পশ্চিম',
'northwest': 'উত্তরপশ্চিম', 'northwest': 'উত্তরপশ্চিম',
'project': 'প্রকল্প', 'project': 'প্রকল্প',
'version': 'অ্যাপ্লিকেশন সংস্করণ', 'version': 'অ্যাপ্লিকেশন সংস্করণ',
'precipitationProbability': 'বৃষ্টিপাতের সম্ভাবনা', 'precipitationProbability': 'বৃষ্টিপাতের সম্ভাবনা',
'apparentTemperatureMin': 'apparentTemperatureMin':
'ন্যায্য ন্যায্য তাপমাত্রা ন্যায্য ন্যায্য ন্যায্য ন্যায্য ন্যায্য ন্যায্য ন্যায্য', 'ন্যায্য ন্যায্য তাপমাত্রা ন্যায্য ন্যায্য ন্যায্য ন্যায্য ন্যায্য ন্যায্য ন্যায্য',
'apparentTemperatureMax': 'সর্বাধিক ন্যায্য তাপমাত্রা', 'apparentTemperatureMax': 'সর্বাধিক ন্যায্য তাপমাত্রা',
'amoledTheme': 'এমোলেড-থিম', 'amoledTheme': 'এমোলেড-থিম',
'appearance': 'উপস্থিতি', 'appearance': 'উপস্থিতি',
'functions': 'কার্য', 'functions': 'কার্য',
'data': 'ডেটা', 'data': 'ডেটা',
'language': 'ভাষা', 'language': 'ভাষা',
'timeRange': 'সময় পরিস্থিতি (ঘণ্টায়)', 'timeRange': 'সময় পরিস্থিতি (ঘণ্টায়)',
'timeStart': 'শুরুর সময়', 'timeStart': 'শুরুর সময়',
'timeEnd': 'শেষ সময়', 'timeEnd': 'শেষ সময়',
'support': 'সাহায্য', 'support': 'সাহায্য',
'system': 'সিস্টেম', 'system': 'সিস্টেম',
'dark': 'ডার্ক', 'dark': 'ডার্ক',
'light': 'আলো', 'light': 'আলো',
'license': 'লাইসেন্স', 'license': 'লাইসেন্স',
'widget': 'উইজেট', 'widget': 'উইজেট',
'widgetBackground': 'উইজেট পেশা', 'widgetBackground': 'উইজেট পেশা',
'widgetText': 'উইজেট টেক্সট', 'widgetText': 'উইজেট টেক্সট',
'dewpoint': 'তুষার বিন্দু', 'dewpoint': 'তুষার বিন্দু',
'shortwaveRadiation': 'সংক্ষেপণ তরঙ্গ প্রকৃতি', 'shortwaveRadiation': 'সংক্ষেপণ তরঙ্গ প্রকৃতি',
'W/m2': 'ডব্লিউ/মিটার বর্গ', 'W/m2': 'ডব্লিউ/মিটার বর্গ',
'roundDegree': 'ডিগ্রি রাউন্ড করুন', 'roundDegree': 'ডিগ্রি রাউন্ড করুন',
'settings_full': 'সেটিংস', 'settings_full': 'সেটিংস',
'cities': 'শহর', 'cities': 'শহর',
'groups': 'আমাদের দলগুলি', 'groups': 'আমাদের দলগুলি',
'openMeteo': 'Open-Meteo থেকে ডেটা (CC-BY 4.0)', 'openMeteo': 'Open-Meteo থেকে ডেটা (CC-BY 4.0)',
'hourlyVariables': 'ঘণ্টায় আবহাওয়ার পরিবর্তনশীল', 'hourlyVariables': 'ঘণ্টায় আবহাওয়ার পরিবর্তনশীল',
'dailyVariables': 'দৈনিক আবহাওয়ার পরিবর্তনশীল', 'dailyVariables': 'দৈনিক আবহাওয়ার পরিবর্তনশীল',
'largeElement': 'বড় আবহাওয়া ডিসপ্লে', 'largeElement': 'বড় আবহাওয়া ডিসপ্লে',
'map': 'মানচিত্র', 'map': 'মানচিত্র',
'clearCacheStore': 'ক্যাশ পরিষ্কার করুন', 'clearCacheStore': 'ক্যাশ পরিষ্কার করুন',
'deletedCacheStore': 'ক্যাশ পরিষ্কার করা হচ্ছে', 'deletedCacheStore': 'ক্যাশ পরিষ্কার করা হচ্ছে',
'deletedCacheStoreQuery': 'আপনি কি সত্যিই ক্যাশ পরিষ্কার করতে চান?', 'deletedCacheStoreQuery': 'আপনি কি সত্যিই ক্যাশ পরিষ্কার করতে চান?',
'addWidget': 'উইজেট যোগ করুন', 'addWidget': 'উইজেট যোগ করুন',
'hideMap': 'মানচিত্র লুকান', 'hideMap': 'মানচিত্র লুকান',
}; };
} }

View file

@ -1,141 +1,141 @@
class CsCz { class CsCz {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'Začít', 'start': 'Začít',
'description': 'description':
'Aplikace počasí s aktuálním předpovědí na každou hodinu, den a týden pro libovolné místo.', 'Aplikace počasí s aktuálním předpovědí na každou hodinu, den a týden pro libovolné místo.',
'name': 'Počasí', 'name': 'Počasí',
'name2': 'Pohodlný design', 'name2': 'Pohodlný design',
'name3': 'Kontaktujte nás', 'name3': 'Kontaktujte nás',
'description2': 'description2':
'Celá navigace je navržena tak, aby bylo možné s aplikací co nejpohodlněji a nejrychleji interagovat.', 'Celá navigace je navržena tak, aby bylo možné s aplikací co nejpohodlněji a nejrychleji interagovat.',
'description3': 'description3':
'Pokud narazíte na nějaké potíže, kontaktujte nás prosím e-mailem nebo v recenzích aplikace.', 'Pokud narazíte na nějaké potíže, kontaktujte nás prosím e-mailem nebo v recenzích aplikace.',
'next': 'Další', 'next': 'Další',
'search': 'Hledat...', 'search': 'Hledat...',
'loading': 'Načítá se...', 'loading': 'Načítá se...',
'searchCity': 'Najděte své místo', 'searchCity': 'Najděte své místo',
'humidity': 'Vlhkost', 'humidity': 'Vlhkost',
'wind': 'Vítr', 'wind': 'Vítr',
'visibility': 'Viditelnost', 'visibility': 'Viditelnost',
'feels': 'Pocitová teplota', 'feels': 'Pocitová teplota',
'evaporation': 'Evapotranspirace', 'evaporation': 'Evapotranspirace',
'precipitation': 'Srážky', 'precipitation': 'Srážky',
'direction': 'Směr', 'direction': 'Směr',
'pressure': 'Tlak', 'pressure': 'Tlak',
'rain': 'Déšť', 'rain': 'Déšť',
'clear_sky': 'Jasno', 'clear_sky': 'Jasno',
'cloudy': 'Oblačno', 'cloudy': 'Oblačno',
'overcast': 'Zataženo', 'overcast': 'Zataženo',
'fog': 'Mlha', 'fog': 'Mlha',
'drizzle': 'Mrholení', 'drizzle': 'Mrholení',
'drizzling_rain': 'Mrznúce mrholení', 'drizzling_rain': 'Mrznúce mrholení',
'freezing_rain': 'Mrazivý déšť', 'freezing_rain': 'Mrazivý déšť',
'heavy_rains': 'Přeháňky', 'heavy_rains': 'Přeháňky',
'snow': 'Sníh', 'snow': 'Sníh',
'thunderstorm': 'Bouřka', 'thunderstorm': 'Bouřka',
'kph': 'km/h', 'kph': 'km/h',
'mph': 'mph', 'mph': 'mph',
'm/s': 'm/s', 'm/s': 'm/s',
'mmHg': 'mmHg', 'mmHg': 'mmHg',
'mi': 'mi', 'mi': 'mi',
'km': 'km', 'km': 'km',
'inch': 'inch', 'inch': 'inch',
'mm': 'mm', 'mm': 'mm',
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Nast.', 'settings': 'Nast.',
'no_inter': 'Žádný internet', 'no_inter': 'Žádný internet',
'on_inter': 'Připojte se k internetu a získejte meteorologické údaje.', 'on_inter': 'Připojte se k internetu a získejte meteorologické údaje.',
'location': 'Poloha', 'location': 'Poloha',
'no_location': 'no_location':
'Chcete-li získat údaje o počasí pro aktuální polohu, povolte službu určování polohy.', 'Chcete-li získat údaje o počasí pro aktuální polohu, povolte službu určování polohy.',
'theme': 'Téma', 'theme': 'Téma',
'low': 'Nízký', 'low': 'Nízký',
'high': 'Vysoký', 'high': 'Vysoký',
'normal': 'Normální', 'normal': 'Normální',
'lat': 'Zeměpisná šířka', 'lat': 'Zeměpisná šířka',
'lon': 'Zemepisná délka', 'lon': 'Zemepisná délka',
'create': 'Vytvořit', 'create': 'Vytvořit',
'city': 'Místo', 'city': 'Místo',
'district': 'Okres', 'district': 'Okres',
'noWeatherCard': 'Přidat město', 'noWeatherCard': 'Přidat město',
'deletedCardWeather': 'Vymazat město', 'deletedCardWeather': 'Vymazat město',
'deletedCardWeatherQuery': 'Opravdu chcete odstranit město?', 'deletedCardWeatherQuery': 'Opravdu chcete odstranit město?',
'delete': 'Odstranit', 'delete': 'Odstranit',
'cancel': 'Zrušit', 'cancel': 'Zrušit',
'time': 'Čas ve městě', 'time': 'Čas ve městě',
'validateName': 'Prosím zadejte název', 'validateName': 'Prosím zadejte název',
'measurements': 'Jednotky měření', 'measurements': 'Jednotky měření',
'degrees': 'Stupně', 'degrees': 'Stupně',
'celsius': 'Celzius', 'celsius': 'Celzius',
'fahrenheit': 'Fahrenheit', 'fahrenheit': 'Fahrenheit',
'imperial': 'Imperiální', 'imperial': 'Imperiální',
'metric': 'Metrické', 'metric': 'Metrické',
'validateValue': 'Zadejte hodnotu', 'validateValue': 'Zadejte hodnotu',
'validateNumber': 'Zadejte platné číslo', 'validateNumber': 'Zadejte platné číslo',
'validate90': 'Hodnota musí být mezi -90 a 90', 'validate90': 'Hodnota musí být mezi -90 a 90',
'validate180': 'Hodnota musí být mezi -180 a 180', 'validate180': 'Hodnota musí být mezi -180 a 180',
'notifications': 'Notifikace', 'notifications': 'Notifikace',
'sunrise': 'Východ slunce', 'sunrise': 'Východ slunce',
'sunset': 'Západ slunce', 'sunset': 'Západ slunce',
'timeformat': 'Formát času', 'timeformat': 'Formát času',
'12': '12-hodinový', '12': '12-hodinový',
'24': '24-hodinový', '24': '24-hodinový',
'cloudcover': 'Oblačnost', 'cloudcover': 'Oblačnost',
'uvIndex': 'UV-index', 'uvIndex': 'UV-index',
'materialColor': 'Dynamické Barvy', 'materialColor': 'Dynamické Barvy',
'uvLow': 'Nízký', 'uvLow': 'Nízký',
'uvAverage': 'Mírný', 'uvAverage': 'Mírný',
'uvHigh': 'Vysoký', 'uvHigh': 'Vysoký',
'uvVeryHigh': 'Velmi vysoký', 'uvVeryHigh': 'Velmi vysoký',
'uvExtreme': 'Extrémní', 'uvExtreme': 'Extrémní',
'weatherMore': 'Předpověď počasí na 12 dní', 'weatherMore': 'Předpověď počasí na 12 dní',
'windgusts': 'Nárazy větru', 'windgusts': 'Nárazy větru',
'north': 'Sever', 'north': 'Sever',
'northeast': 'Severo-Východ', 'northeast': 'Severo-Východ',
'east': 'Východ', 'east': 'Východ',
'southeast': 'Juhovýchod', 'southeast': 'Juhovýchod',
'south': 'Juž', 'south': 'Juž',
'southwest': 'Juhozápad', 'southwest': 'Juhozápad',
'west': 'Západ', 'west': 'Západ',
'northwest': 'Severo-Západ', 'northwest': 'Severo-Západ',
'project': 'Projekt na', 'project': 'Projekt na',
'version': 'Verzia aplikace', 'version': 'Verzia aplikace',
'precipitationProbability': 'Pravděpodobnost srážek', 'precipitationProbability': 'Pravděpodobnost srážek',
'apparentTemperatureMin': 'Minimální pocitová teplota', 'apparentTemperatureMin': 'Minimální pocitová teplota',
'apparentTemperatureMax': 'Maximální pocitová teplota', 'apparentTemperatureMax': 'Maximální pocitová teplota',
'amoledTheme': 'AMOLED-téma', 'amoledTheme': 'AMOLED-téma',
'appearance': 'Vzhled', 'appearance': 'Vzhled',
'functions': 'Funkce', 'functions': 'Funkce',
'data': 'Data', 'data': 'Data',
'language': 'Jazyk', 'language': 'Jazyk',
'timeRange': 'Frekvence (v hodinách)', 'timeRange': 'Frekvence (v hodinách)',
'timeStart': 'Čas začátku', 'timeStart': 'Čas začátku',
'timeEnd': 'Čas ukončení', 'timeEnd': 'Čas ukončení',
'support': 'Podpora', 'support': 'Podpora',
'system': 'Systém', 'system': 'Systém',
'dark': 'Tmavá', 'dark': 'Tmavá',
'light': 'Světlá', 'light': 'Světlá',
'license': 'Licence', 'license': 'Licence',
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Pozadí widgetu', 'widgetBackground': 'Pozadí widgetu',
'widgetText': 'Text widgetu', 'widgetText': 'Text widgetu',
'dewpoint': 'Rosný bod', 'dewpoint': 'Rosný bod',
'shortwaveRadiation': 'Krátká vlnová radiace', 'shortwaveRadiation': 'Krátká vlnová radiace',
'roundDegree': 'Zaokrouhlit stupně', 'roundDegree': 'Zaokrouhlit stupně',
'settings_full': 'Nastavení', 'settings_full': 'Nastavení',
'cities': 'Města', 'cities': 'Města',
'searchMethod': 'Použijte hledání nebo geolokaci', 'searchMethod': 'Použijte hledání nebo geolokaci',
'done': 'Hotovo', 'done': 'Hotovo',
'groups': 'Naše skupiny', 'groups': 'Naše skupiny',
'openMeteo': 'Data z Open-Meteo (CC-BY 4.0)', 'openMeteo': 'Data z Open-Meteo (CC-BY 4.0)',
'hourlyVariables': 'Hodinové meteorologické proměnné', 'hourlyVariables': 'Hodinové meteorologické proměnné',
'dailyVariables': 'Denní meteorologické proměnné', 'dailyVariables': 'Denní meteorologické proměnné',
'largeElement': 'Velké zobrazení počasí', 'largeElement': 'Velké zobrazení počasí',
'map': 'Mapa', 'map': 'Mapa',
'clearCacheStore': 'Vymazat mezipaměť', 'clearCacheStore': 'Vymazat mezipaměť',
'deletedCacheStore': 'Čištění mezipaměti', 'deletedCacheStore': 'Čištění mezipaměti',
'deletedCacheStoreQuery': 'Opravdu chcete vymazat mezipaměť?', 'deletedCacheStoreQuery': 'Opravdu chcete vymazat mezipaměť?',
'addWidget': 'Přidat widget', 'addWidget': 'Přidat widget',
'hideMap': 'Skrýt mapu', 'hideMap': 'Skrýt mapu',
}; };
} }

View file

@ -1,142 +1,142 @@
class DaDk { class DaDk {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'Kom i gang', 'start': 'Kom i gang',
'description': 'description':
'Vejr app med en opdateret vejrudsigt for hver time, dag og uge for ethvert sted.', 'Vejr app med en opdateret vejrudsigt for hver time, dag og uge for ethvert sted.',
'name': 'Vejr', 'name': 'Vejr',
'name2': 'Praktisk design', 'name2': 'Praktisk design',
'name3': 'Kontakt os', 'name3': 'Kontakt os',
'description2': 'description2':
'Al navigation er designet til at interagere med appen så bekvemt og hurtigt som muligt.', 'Al navigation er designet til at interagere med appen så bekvemt og hurtigt som muligt.',
'description3': 'description3':
'Hvis du støder på problemer, må du meget gerne kontakte os via e-mail eller i app anmeldelserne.', 'Hvis du støder på problemer, må du meget gerne kontakte os via e-mail eller i app anmeldelserne.',
'next': 'Næste', 'next': 'Næste',
'search': 'Søg...', 'search': 'Søg...',
'loading': 'Henter...', 'loading': 'Henter...',
'searchCity': 'Find din by', 'searchCity': 'Find din by',
'humidity': 'Luftfugtighed', 'humidity': 'Luftfugtighed',
'wind': 'Vind', 'wind': 'Vind',
'visibility': 'Sigtbarhed', 'visibility': 'Sigtbarhed',
'feels': 'Føles som', 'feels': 'Føles som',
'evaporation': 'Fordampning', 'evaporation': 'Fordampning',
'precipitation': 'Nedbør', 'precipitation': 'Nedbør',
'direction': 'Retning', 'direction': 'Retning',
'pressure': 'Tryk', 'pressure': 'Tryk',
'rain': 'Regn', 'rain': 'Regn',
'clear_sky': 'Skyfri himmel', 'clear_sky': 'Skyfri himmel',
'cloudy': 'Skyet', 'cloudy': 'Skyet',
'overcast': 'Overskyet', 'overcast': 'Overskyet',
'fog': 'Tåge', 'fog': 'Tåge',
'drizzle': 'Støv regn', 'drizzle': 'Støv regn',
'drizzling_rain': 'Frysende støvregn', 'drizzling_rain': 'Frysende støvregn',
'freezing_rain': 'Frostregn', 'freezing_rain': 'Frostregn',
'heavy_rains': 'Regnskyl', 'heavy_rains': 'Regnskyl',
'snow': 'Sne', 'snow': 'Sne',
'thunderstorm': 'Tordenvejr', 'thunderstorm': 'Tordenvejr',
'kph': 'km/h', 'kph': 'km/h',
'mph': 'mph', 'mph': 'mph',
'm/s': 'm/s', 'm/s': 'm/s',
'mmHg': 'mmHg', 'mmHg': 'mmHg',
'mi': 'mi', 'mi': 'mi',
'km': 'km', 'km': 'km',
'inch': 'tommer', 'inch': 'tommer',
'mm': 'mm', 'mm': 'mm',
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Inds.', 'settings': 'Inds.',
'no_inter': 'Ingen Internet', 'no_inter': 'Ingen Internet',
'on_inter': 'Tænd for internettet for at få meteorologisk data.', 'on_inter': 'Tænd for internettet for at få meteorologisk data.',
'location': 'Placering', 'location': 'Placering',
'no_location': 'no_location':
'Aktiver placeringer for at få vejrdata for den aktuelle placering.', 'Aktiver placeringer for at få vejrdata for den aktuelle placering.',
'theme': 'Tema', 'theme': 'Tema',
'low': 'Lav', 'low': 'Lav',
'high': 'Høj', 'high': 'Høj',
'normal': 'Normal', 'normal': 'Normal',
'lat': 'Breddegrad', 'lat': 'Breddegrad',
'lon': 'Længdegrad', 'lon': 'Længdegrad',
'create': 'Opret', 'create': 'Opret',
'city': 'By', 'city': 'By',
'district': 'Distrikt', 'district': 'Distrikt',
'noWeatherCard': 'Tilføj en by', 'noWeatherCard': 'Tilføj en by',
'deletedCardWeather': 'Slet en by', 'deletedCardWeather': 'Slet en by',
'deletedCardWeatherQuery': 'Er du sikker på at du vil slette denne by?', 'deletedCardWeatherQuery': 'Er du sikker på at du vil slette denne by?',
'delete': 'Slet', 'delete': 'Slet',
'cancel': 'Annullere', 'cancel': 'Annullere',
'time': 'Tid i byen', 'time': 'Tid i byen',
'validateName': 'Indtast venligst navnet', 'validateName': 'Indtast venligst navnet',
'measurements': 'Foranstaltningssystemet', 'measurements': 'Foranstaltningssystemet',
'degrees': 'Grader', 'degrees': 'Grader',
'celsius': 'Celsius', 'celsius': 'Celsius',
'fahrenheit': 'Fahrenheit', 'fahrenheit': 'Fahrenheit',
'imperial': 'Imperialistisk', 'imperial': 'Imperialistisk',
'metric': 'Metrisk', 'metric': 'Metrisk',
'validateValue': 'Indtast en værdi', 'validateValue': 'Indtast en værdi',
'validateNumber': 'Indtast et gyldigt nummer', 'validateNumber': 'Indtast et gyldigt nummer',
'validate90': 'Værdien skal være mellem -90 og 90', 'validate90': 'Værdien skal være mellem -90 og 90',
'validate180': 'Værdien skal være mellem -180 og 180', 'validate180': 'Værdien skal være mellem -180 og 180',
'notifications': 'Notifikationer', 'notifications': 'Notifikationer',
'sunrise': 'Solopgang', 'sunrise': 'Solopgang',
'sunset': 'Solnedgang', 'sunset': 'Solnedgang',
'timeformat': 'Tids format', 'timeformat': 'Tids format',
'12': '12-timer', '12': '12-timer',
'24': '24-timer', '24': '24-timer',
'cloudcover': 'skydække', 'cloudcover': 'skydække',
'uvIndex': 'UV-index', 'uvIndex': 'UV-index',
'materialColor': 'Dynamiske farver', 'materialColor': 'Dynamiske farver',
'uvLow': 'Lav', 'uvLow': 'Lav',
'uvAverage': 'Moderat', 'uvAverage': 'Moderat',
'uvHigh': 'Høj', 'uvHigh': 'Høj',
'uvVeryHigh': 'Meget højt', 'uvVeryHigh': 'Meget højt',
'uvExtreme': 'Ekstrem', 'uvExtreme': 'Ekstrem',
'weatherMore': '12 dages vejrudsigt', 'weatherMore': '12 dages vejrudsigt',
'windgusts': 'Vindstød', 'windgusts': 'Vindstød',
'north': 'Nord', 'north': 'Nord',
'northeast': 'Nordøst', 'northeast': 'Nordøst',
'east': 'Øst', 'east': 'Øst',
'southeast': 'Sydøst', 'southeast': 'Sydøst',
'south': 'Syd', 'south': 'Syd',
'southwest': 'Sydvest', 'southwest': 'Sydvest',
'west': 'Vest', 'west': 'Vest',
'northwest': 'Nordvest', 'northwest': 'Nordvest',
'project': 'Projektet findes på', 'project': 'Projektet findes på',
'version': 'App version', 'version': 'App version',
'precipitationProbability': 'Sandsynlighed for nedbør', 'precipitationProbability': 'Sandsynlighed for nedbør',
'apparentTemperatureMin': 'Minimum temperature', 'apparentTemperatureMin': 'Minimum temperature',
'apparentTemperatureMax': 'Maksimal temperatur', 'apparentTemperatureMax': 'Maksimal temperatur',
'amoledTheme': 'AMOLED-tema', 'amoledTheme': 'AMOLED-tema',
'appearance': 'Udseende', 'appearance': 'Udseende',
'functions': 'Funktioner', 'functions': 'Funktioner',
'data': 'Data', 'data': 'Data',
'language': 'Sprog', 'language': 'Sprog',
'timeRange': 'Hyppighed (i timer)', 'timeRange': 'Hyppighed (i timer)',
'timeStart': 'Start tid', 'timeStart': 'Start tid',
'timeEnd': 'Slut tid', 'timeEnd': 'Slut tid',
'support': 'Support', 'support': 'Support',
'system': 'System', 'system': 'System',
'dark': 'Mørk', 'dark': 'Mørk',
'light': 'Lys', 'light': 'Lys',
'license': 'Licenser', 'license': 'Licenser',
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Widget baggrund', 'widgetBackground': 'Widget baggrund',
'widgetText': 'Widget tekst', 'widgetText': 'Widget tekst',
'dewpoint': 'Dugpunktet', 'dewpoint': 'Dugpunktet',
'shortwaveRadiation': 'Kortbølgestråling', 'shortwaveRadiation': 'Kortbølgestråling',
'W/m2': 'W/m2', 'W/m2': 'W/m2',
'roundDegree': 'Afrundede grader', 'roundDegree': 'Afrundede grader',
'settings_full': 'Indstillinger', 'settings_full': 'Indstillinger',
'cities': 'Byer', 'cities': 'Byer',
'searchMethod': 'Brug søgning eller geolokation', 'searchMethod': 'Brug søgning eller geolokation',
'done': 'Færdig', 'done': 'Færdig',
'groups': 'Vores grupper', 'groups': 'Vores grupper',
'openMeteo': 'Data fra Open-Meteo (CC-BY 4.0)', 'openMeteo': 'Data fra Open-Meteo (CC-BY 4.0)',
'hourlyVariables': 'Timevise vejrfaktorer', 'hourlyVariables': 'Timevise vejrfaktorer',
'dailyVariables': 'Daglige vejrfaktorer', 'dailyVariables': 'Daglige vejrfaktorer',
'largeElement': 'Stort vejrdisplay', 'largeElement': 'Stort vejrdisplay',
'map': 'Kort', 'map': 'Kort',
'clearCacheStore': 'Ryd cache', 'clearCacheStore': 'Ryd cache',
'deletedCacheStore': 'Rydder cache', 'deletedCacheStore': 'Rydder cache',
'deletedCacheStoreQuery': 'Er du sikker på, at du vil rydde cachen?', 'deletedCacheStoreQuery': 'Er du sikker på, at du vil rydde cachen?',
'addWidget': 'Tilføj widget', 'addWidget': 'Tilføj widget',
'hideMap': 'Skjul kort', 'hideMap': 'Skjul kort',
}; };
} }

View file

@ -1,144 +1,144 @@
class DeDe { class DeDe {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'Los gehts', 'start': 'Los gehts',
'description': 'description':
'Wetteranwendung mit einer aktuellen Prognose für jede Stunde, Tag und Woche für jeden Ort.', 'Wetteranwendung mit einer aktuellen Prognose für jede Stunde, Tag und Woche für jeden Ort.',
'name': 'Wetter', 'name': 'Wetter',
'name2': 'Bequemes Design', 'name2': 'Bequemes Design',
'name3': 'Kontaktiere uns', 'name3': 'Kontaktiere uns',
'description2': 'description2':
'Die gesamte Navigation ist so gestaltet, dass die Interaktion mit der Anwendung so bequem und schnell wie möglich erfolgt.', 'Die gesamte Navigation ist so gestaltet, dass die Interaktion mit der Anwendung so bequem und schnell wie möglich erfolgt.',
'description3': 'description3':
'Wenn Sie auf Probleme stoßen, kontaktieren Sie uns bitte per E-Mail oder in den Bewertungen der Anwendung.', 'Wenn Sie auf Probleme stoßen, kontaktieren Sie uns bitte per E-Mail oder in den Bewertungen der Anwendung.',
'next': 'Weiter', 'next': 'Weiter',
'search': 'Suchen...', 'search': 'Suchen...',
'loading': 'Lädt...', 'loading': 'Lädt...',
'searchCity': 'Finde deine Stadt', 'searchCity': 'Finde deine Stadt',
'humidity': 'Luftfeuchtigkeit', 'humidity': 'Luftfeuchtigkeit',
'wind': 'Wind', 'wind': 'Wind',
'visibility': 'Sichtweite', 'visibility': 'Sichtweite',
'feels': 'Gefühlt', 'feels': 'Gefühlt',
'evaporation': 'Verdunstung', 'evaporation': 'Verdunstung',
'precipitation': 'Niederschlag', 'precipitation': 'Niederschlag',
'direction': 'Richtung', 'direction': 'Richtung',
'pressure': 'Druck', 'pressure': 'Druck',
'rain': 'Regen', 'rain': 'Regen',
'clear_sky': 'Klarer Himmel', 'clear_sky': 'Klarer Himmel',
'cloudy': 'Bewölkt', 'cloudy': 'Bewölkt',
'overcast': 'Bedeckt', 'overcast': 'Bedeckt',
'fog': 'Nebel', 'fog': 'Nebel',
'drizzle': 'Nieselregen', 'drizzle': 'Nieselregen',
'drizzling_rain': 'Gefrierender Nieselregen', 'drizzling_rain': 'Gefrierender Nieselregen',
'freezing_rain': 'Gefrierender Regen', 'freezing_rain': 'Gefrierender Regen',
'heavy_rains': 'Regenschauer', 'heavy_rains': 'Regenschauer',
'snow': 'Schnee', 'snow': 'Schnee',
'thunderstorm': 'Gewitter', 'thunderstorm': 'Gewitter',
'kph': 'km/h', 'kph': 'km/h',
'mph': 'mph', 'mph': 'mph',
'm/s': 'm/s', 'm/s': 'm/s',
'mmHg': 'mmHg', 'mmHg': 'mmHg',
'mi': 'mi', 'mi': 'mi',
'km': 'km', 'km': 'km',
'inch': 'inch', 'inch': 'inch',
'mm': 'mm', 'mm': 'mm',
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Einstellungen', 'settings': 'Einstellungen',
'no_inter': 'Keine Internetverbindung', 'no_inter': 'Keine Internetverbindung',
'on_inter': 'on_inter':
'Schalte das Internet ein, um meteorologische Daten zu erhalten.', 'Schalte das Internet ein, um meteorologische Daten zu erhalten.',
'location': 'Standort', 'location': 'Standort',
'no_location': 'no_location':
'Aktiviere den Standortdienst, um Wetterdaten für den aktuellen Standort zu erhalten.', 'Aktiviere den Standortdienst, um Wetterdaten für den aktuellen Standort zu erhalten.',
'theme': 'Thema', 'theme': 'Thema',
'low': 'Niedrig', 'low': 'Niedrig',
'high': 'Hoch', 'high': 'Hoch',
'normal': 'Normal', 'normal': 'Normal',
'lat': 'Breitengrad', 'lat': 'Breitengrad',
'lon': 'Längengrad', 'lon': 'Längengrad',
'create': 'Erstellen', 'create': 'Erstellen',
'city': 'Stadt', 'city': 'Stadt',
'district': 'Bezirk', 'district': 'Bezirk',
'noWeatherCard': 'Füge eine Stadt hinzu', 'noWeatherCard': 'Füge eine Stadt hinzu',
'deletedCardWeather': 'Stadt löschen', 'deletedCardWeather': 'Stadt löschen',
'deletedCardWeatherQuery': 'deletedCardWeatherQuery':
'Sind Sie sicher, dass Sie die Stadt löschen möchten?', 'Sind Sie sicher, dass Sie die Stadt löschen möchten?',
'delete': 'Löschen', 'delete': 'Löschen',
'cancel': 'Abbrechen', 'cancel': 'Abbrechen',
'time': 'Ortszeit', 'time': 'Ortszeit',
'validateName': 'Bitte geben Sie den Namen ein', 'validateName': 'Bitte geben Sie den Namen ein',
'measurements': 'Einheitensystem', 'measurements': 'Einheitensystem',
'degrees': 'Grade', 'degrees': 'Grade',
'celsius': 'Celsius', 'celsius': 'Celsius',
'fahrenheit': 'Fahrenheit', 'fahrenheit': 'Fahrenheit',
'imperial': 'Imperial', 'imperial': 'Imperial',
'metric': 'Metrisch', 'metric': 'Metrisch',
'validateValue': 'Bitte geben Sie einen Wert ein', 'validateValue': 'Bitte geben Sie einen Wert ein',
'validateNumber': 'Bitte geben Sie eine Nummer ein', 'validateNumber': 'Bitte geben Sie eine Nummer ein',
'validate90': 'Der Wert muss zwischen -90 und 90 liegen', 'validate90': 'Der Wert muss zwischen -90 und 90 liegen',
'validate180': 'Der Wert muss zwischen -180 und 180 liegen', 'validate180': 'Der Wert muss zwischen -180 und 180 liegen',
'notifications': 'Benachrichtigungen', 'notifications': 'Benachrichtigungen',
'sunrise': 'Sonnenaufgang', 'sunrise': 'Sonnenaufgang',
'sunset': 'Sonnenuntergang', 'sunset': 'Sonnenuntergang',
'timeformat': 'Zeitformat', 'timeformat': 'Zeitformat',
'12': '12-stunden', '12': '12-stunden',
'24': '24-stunden', '24': '24-stunden',
'cloudcover': 'Wolkenbedeckung', 'cloudcover': 'Wolkenbedeckung',
'uvIndex': 'UV-index', 'uvIndex': 'UV-index',
'materialColor': 'Dynamische Farben', 'materialColor': 'Dynamische Farben',
'uvLow': 'Niedrig', 'uvLow': 'Niedrig',
'uvAverage': 'Mäßig', 'uvAverage': 'Mäßig',
'uvHigh': 'Hoch', 'uvHigh': 'Hoch',
'uvVeryHigh': 'Sehr hoch', 'uvVeryHigh': 'Sehr hoch',
'uvExtreme': 'Extrem', 'uvExtreme': 'Extrem',
'weatherMore': '12-Tage-Wettervorhersage', 'weatherMore': '12-Tage-Wettervorhersage',
'windgusts': 'Böe', 'windgusts': 'Böe',
'north': 'Norden', 'north': 'Norden',
'northeast': 'Nordosten', 'northeast': 'Nordosten',
'east': 'Osten', 'east': 'Osten',
'southeast': 'Südosten', 'southeast': 'Südosten',
'south': 'Süden', 'south': 'Süden',
'southwest': 'Südwesten', 'southwest': 'Südwesten',
'west': 'Westen', 'west': 'Westen',
'northwest': 'Nordwesten', 'northwest': 'Nordwesten',
'project': 'Projekt auf', 'project': 'Projekt auf',
'version': 'Anwendungsversion', 'version': 'Anwendungsversion',
'precipitationProbability': 'Niederschlagswahrscheinlichkeit', 'precipitationProbability': 'Niederschlagswahrscheinlichkeit',
'apparentTemperatureMin': 'Minimale gefühlte Temperatur', 'apparentTemperatureMin': 'Minimale gefühlte Temperatur',
'apparentTemperatureMax': 'Maximale gefühlte Temperatur', 'apparentTemperatureMax': 'Maximale gefühlte Temperatur',
'amoledTheme': 'AMOLED-thema', 'amoledTheme': 'AMOLED-thema',
'appearance': 'Erscheinungsbild', 'appearance': 'Erscheinungsbild',
'functions': 'Funktionen', 'functions': 'Funktionen',
'data': 'Daten', 'data': 'Daten',
'language': 'Sprache', 'language': 'Sprache',
'timeRange': 'Häufigkeit (in Stunden)', 'timeRange': 'Häufigkeit (in Stunden)',
'timeStart': 'Startzeit', 'timeStart': 'Startzeit',
'timeEnd': 'Endzeit', 'timeEnd': 'Endzeit',
'support': 'Unterstützung', 'support': 'Unterstützung',
'system': 'System', 'system': 'System',
'dark': 'Dunkel', 'dark': 'Dunkel',
'light': 'Hell', 'light': 'Hell',
'license': 'Lizenzen', 'license': 'Lizenzen',
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Widget-Hintergrund', 'widgetBackground': 'Widget-Hintergrund',
'widgetText': 'Widget-Text', 'widgetText': 'Widget-Text',
'dewpoint': 'Taupunkt', 'dewpoint': 'Taupunkt',
'shortwaveRadiation': 'Kurzwellenstrahlung', 'shortwaveRadiation': 'Kurzwellenstrahlung',
'roundDegree': 'Grad runden', 'roundDegree': 'Grad runden',
'settings_full': 'Einstellungen', 'settings_full': 'Einstellungen',
'cities': 'Städte', 'cities': 'Städte',
'searchMethod': 'Verwenden Sie die Suche oder die Geolokalisierung', 'searchMethod': 'Verwenden Sie die Suche oder die Geolokalisierung',
'done': 'Fertig', 'done': 'Fertig',
'groups': 'Unsere gruppen', 'groups': 'Unsere gruppen',
'openMeteo': 'Daten von Open-Meteo (CC-BY 4.0)', 'openMeteo': 'Daten von Open-Meteo (CC-BY 4.0)',
'hourlyVariables': 'Stündliche Wettervariablen', 'hourlyVariables': 'Stündliche Wettervariablen',
'dailyVariables': 'Tägliche Wettervariablen', 'dailyVariables': 'Tägliche Wettervariablen',
'largeElement': 'Große Wetteranzeige', 'largeElement': 'Große Wetteranzeige',
'map': 'Karte', 'map': 'Karte',
'clearCacheStore': 'Cache leeren', 'clearCacheStore': 'Cache leeren',
'deletedCacheStore': 'Cache wird geleert', 'deletedCacheStore': 'Cache wird geleert',
'deletedCacheStoreQuery': 'deletedCacheStoreQuery':
'Sind Sie sicher, dass Sie den Cache leeren möchten?', 'Sind Sie sicher, dass Sie den Cache leeren möchten?',
'addWidget': 'Widget hinzufügen', 'addWidget': 'Widget hinzufügen',
'hideMap': 'Karte ausblenden', 'hideMap': 'Karte ausblenden',
}; };
} }

View file

@ -1,142 +1,142 @@
class EnUs { class EnUs {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'Get Started', 'start': 'Get Started',
'description': 'description':
'Weather application with an up-to-date forecast for each hour, day, and week for any location.', 'Weather application with an up-to-date forecast for each hour, day, and week for any location.',
'name': 'Weather', 'name': 'Weather',
'name2': 'Convenient Design', 'name2': 'Convenient Design',
'name3': 'Contact Us', 'name3': 'Contact Us',
'description2': 'description2':
'All navigation is designed to interact with the application as conveniently and quickly as possible.', 'All navigation is designed to interact with the application as conveniently and quickly as possible.',
'description3': 'description3':
'If you encounter any issues, please contact us via email or in the application reviews.', 'If you encounter any issues, please contact us via email or in the application reviews.',
'next': 'Next', 'next': 'Next',
'search': 'Search...', 'search': 'Search...',
'loading': 'Loading...', 'loading': 'Loading...',
'searchCity': 'Find your city', 'searchCity': 'Find your city',
'humidity': 'Humidity', 'humidity': 'Humidity',
'wind': 'Wind', 'wind': 'Wind',
'visibility': 'Visibility', 'visibility': 'Visibility',
'feels': 'Feels', 'feels': 'Feels',
'evaporation': 'Evapotranspiration', 'evaporation': 'Evapotranspiration',
'precipitation': 'Precipitation', 'precipitation': 'Precipitation',
'direction': 'Direction', 'direction': 'Direction',
'pressure': 'Pressure', 'pressure': 'Pressure',
'rain': 'Rain', 'rain': 'Rain',
'clear_sky': 'Clear sky', 'clear_sky': 'Clear sky',
'cloudy': 'Cloudy', 'cloudy': 'Cloudy',
'overcast': 'Overcast', 'overcast': 'Overcast',
'fog': 'Fog', 'fog': 'Fog',
'drizzle': 'Drizzle', 'drizzle': 'Drizzle',
'drizzling_rain': 'Freezing Drizzle', 'drizzling_rain': 'Freezing Drizzle',
'freezing_rain': 'Freezing Rain', 'freezing_rain': 'Freezing Rain',
'heavy_rains': 'Rain showers', 'heavy_rains': 'Rain showers',
'snow': 'Snow', 'snow': 'Snow',
'thunderstorm': 'Thunderstorm', 'thunderstorm': 'Thunderstorm',
'kph': 'km/h', 'kph': 'km/h',
'mph': 'mph', 'mph': 'mph',
'm/s': 'm/s', 'm/s': 'm/s',
'mmHg': 'mmHg', 'mmHg': 'mmHg',
'mi': 'mi', 'mi': 'mi',
'km': 'km', 'km': 'km',
'inch': 'inch', 'inch': 'inch',
'mm': 'mm', 'mm': 'mm',
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Set.', 'settings': 'Set.',
'no_inter': 'No Internet', 'no_inter': 'No Internet',
'on_inter': 'Turn on the Internet to get meteorological data.', 'on_inter': 'Turn on the Internet to get meteorological data.',
'location': 'Location', 'location': 'Location',
'no_location': 'no_location':
'Enable the location service to get weather data for the current location.', 'Enable the location service to get weather data for the current location.',
'theme': 'Theme', 'theme': 'Theme',
'low': 'Low', 'low': 'Low',
'high': 'High', 'high': 'High',
'normal': 'Normal', 'normal': 'Normal',
'lat': 'Latitude', 'lat': 'Latitude',
'lon': 'Longitude', 'lon': 'Longitude',
'create': 'Create', 'create': 'Create',
'city': 'City', 'city': 'City',
'district': 'District', 'district': 'District',
'noWeatherCard': 'Add a city', 'noWeatherCard': 'Add a city',
'deletedCardWeather': 'Deleting a city', 'deletedCardWeather': 'Deleting a city',
'deletedCardWeatherQuery': 'Are you sure you want to delete the city?', 'deletedCardWeatherQuery': 'Are you sure you want to delete the city?',
'delete': 'Delete', 'delete': 'Delete',
'cancel': 'Cancel', 'cancel': 'Cancel',
'time': 'Time in the city', 'time': 'Time in the city',
'validateName': 'Please enter the name', 'validateName': 'Please enter the name',
'measurements': 'System of measures', 'measurements': 'System of measures',
'degrees': 'Degrees', 'degrees': 'Degrees',
'celsius': 'Celsius', 'celsius': 'Celsius',
'fahrenheit': 'Fahrenheit', 'fahrenheit': 'Fahrenheit',
'imperial': 'Imperial', 'imperial': 'Imperial',
'metric': 'Metric', 'metric': 'Metric',
'validateValue': 'Please enter a value', 'validateValue': 'Please enter a value',
'validateNumber': 'Please enter a valid number', 'validateNumber': 'Please enter a valid number',
'validate90': 'Value must be between -90 and 90', 'validate90': 'Value must be between -90 and 90',
'validate180': 'Value must be between -180 and 180', 'validate180': 'Value must be between -180 and 180',
'notifications': 'Notifications', 'notifications': 'Notifications',
'sunrise': 'Sunrise', 'sunrise': 'Sunrise',
'sunset': 'Sunset', 'sunset': 'Sunset',
'timeformat': 'Time format', 'timeformat': 'Time format',
'12': '12-hour', '12': '12-hour',
'24': '24-hour', '24': '24-hour',
'cloudcover': 'Cloudcover', 'cloudcover': 'Cloudcover',
'uvIndex': 'UV-index', 'uvIndex': 'UV-index',
'materialColor': 'Dynamic colors', 'materialColor': 'Dynamic colors',
'uvLow': 'Low', 'uvLow': 'Low',
'uvAverage': 'Moderate', 'uvAverage': 'Moderate',
'uvHigh': 'High', 'uvHigh': 'High',
'uvVeryHigh': 'Very high', 'uvVeryHigh': 'Very high',
'uvExtreme': 'Extreme', 'uvExtreme': 'Extreme',
'weatherMore': '12-day weather forecast', 'weatherMore': '12-day weather forecast',
'windgusts': 'Gust', 'windgusts': 'Gust',
'north': 'North', 'north': 'North',
'northeast': 'Northeast', 'northeast': 'Northeast',
'east': 'East', 'east': 'East',
'southeast': 'Southeast', 'southeast': 'Southeast',
'south': 'South', 'south': 'South',
'southwest': 'Southwest', 'southwest': 'Southwest',
'west': 'West', 'west': 'West',
'northwest': 'Northwest', 'northwest': 'Northwest',
'project': 'Project on', 'project': 'Project on',
'version': 'Application version', 'version': 'Application version',
'precipitationProbability': 'Precipitation probability', 'precipitationProbability': 'Precipitation probability',
'apparentTemperatureMin': 'Minimum apparent temperature', 'apparentTemperatureMin': 'Minimum apparent temperature',
'apparentTemperatureMax': 'Maximum apparent temperature', 'apparentTemperatureMax': 'Maximum apparent temperature',
'amoledTheme': 'AMOLED-theme', 'amoledTheme': 'AMOLED-theme',
'appearance': 'Appearance', 'appearance': 'Appearance',
'functions': 'Functions', 'functions': 'Functions',
'data': 'Data', 'data': 'Data',
'language': 'Language', 'language': 'Language',
'timeRange': 'Frequency (in hours)', 'timeRange': 'Frequency (in hours)',
'timeStart': 'Start time', 'timeStart': 'Start time',
'timeEnd': 'End time', 'timeEnd': 'End time',
'support': 'Donate', 'support': 'Donate',
'system': 'System', 'system': 'System',
'dark': 'Dark', 'dark': 'Dark',
'light': 'Light', 'light': 'Light',
'license': 'Licenses', 'license': 'Licenses',
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Widget background', 'widgetBackground': 'Widget background',
'widgetText': 'Widget text', 'widgetText': 'Widget text',
'dewpoint': 'Dewpoint', 'dewpoint': 'Dewpoint',
'shortwaveRadiation': 'Shortwave radiation', 'shortwaveRadiation': 'Shortwave radiation',
'W/m2': 'W/m2', 'W/m2': 'W/m2',
'roundDegree': 'Round degrees', 'roundDegree': 'Round degrees',
'settings_full': 'Settings', 'settings_full': 'Settings',
'cities': 'Cities', 'cities': 'Cities',
'searchMethod': 'Use search or geolocation', 'searchMethod': 'Use search or geolocation',
'done': 'Done', 'done': 'Done',
'groups': 'Our groups', 'groups': 'Our groups',
'openMeteo': 'Data by Open-Meteo (CC-BY 4.0)', 'openMeteo': 'Data by Open-Meteo (CC-BY 4.0)',
'hourlyVariables': 'Hourly weather variables', 'hourlyVariables': 'Hourly weather variables',
'dailyVariables': 'Daily weather variables', 'dailyVariables': 'Daily weather variables',
'largeElement': 'Large weather display', 'largeElement': 'Large weather display',
'map': 'Map', 'map': 'Map',
'clearCacheStore': 'Clear cache', 'clearCacheStore': 'Clear cache',
'deletedCacheStore': 'Clearing the cache', 'deletedCacheStore': 'Clearing the cache',
'deletedCacheStoreQuery': 'Are you sure you want to clear the cache?', 'deletedCacheStoreQuery': 'Are you sure you want to clear the cache?',
'addWidget': 'Add widget', 'addWidget': 'Add widget',
'hideMap': 'Hide map', 'hideMap': 'Hide map',
}; };
} }

View file

@ -1,144 +1,142 @@
class EsEs { class EsEs {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'Empezar', 'start': 'Empezar',
'description': 'description':
'Aplicación meteorológica con un pronóstico actualizado para cada hora, día y semana para cualquier lugar.', 'Aplicación meteorológica con un pronóstico actualizado para cada hora, día y semana para cualquier lugar.',
'name': 'Tiempo', 'name': 'Tiempo',
'name2': 'Diseño Conveniente', 'name2': 'Diseño Conveniente',
'name3': 'Contáctenos', 'name3': 'Contáctenos',
'description2': 'description2':
'Toda la navegación está diseñada para interactuar con la aplicación de la manera más cómoda y rápida posible.', 'Toda la navegación está diseñada para interactuar con la aplicación de la manera más cómoda y rápida posible.',
'description3': 'description3':
'Si encuentra algún problema, contáctenos por correo electrónico o en las reseñas de la aplicación.', 'Si encuentra algún problema, contáctenos por correo electrónico o en las reseñas de la aplicación.',
'next': 'Siguiente', 'next': 'Siguiente',
'search': 'Buscar...', 'search': 'Buscar...',
'loading': 'Cargando...', 'loading': 'Cargando...',
'searchCity': 'Busca tu ciudad', 'searchCity': 'Busca tu ciudad',
'humidity': 'Humedad', 'humidity': 'Humedad',
'wind': 'Viento', 'wind': 'Viento',
'visibility': 'Visibilidad', 'visibility': 'Visibilidad',
'feels': 'Sensación térmica', 'feels': 'Sensación térmica',
'evaporation': 'Evaporación', 'evaporation': 'Evaporación',
'precipitation': 'Precipitación', 'precipitation': 'Precipitación',
'direction': 'Dirección', 'direction': 'Dirección',
'pressure': 'Presión', 'pressure': 'Presión',
'rain': 'Lluvia', 'rain': 'Lluvia',
'clear_sky': 'Cielo despejado', 'clear_sky': 'Cielo despejado',
'cloudy': 'Nuboso', 'cloudy': 'Nuboso',
'overcast': 'Cubierto de nubes', 'overcast': 'Cubierto de nubes',
'fog': 'Niebla', 'fog': 'Niebla',
'drizzle': 'Llovizna', 'drizzle': 'Llovizna',
'drizzling_rain': 'Llovizna helada', 'drizzling_rain': 'Llovizna helada',
'freezing_rain': 'Lluvia helada', 'freezing_rain': 'Lluvia helada',
'heavy_rains': 'Chubasco intenso', 'heavy_rains': 'Chubasco intenso',
'snow': 'Nieve', 'snow': 'Nieve',
'thunderstorm': 'Tormenta', 'thunderstorm': 'Tormenta',
'kph': 'km/h', 'kph': 'km/h',
'mph': 'mph', 'mph': 'mph',
'm/s': 'm/s', 'm/s': 'm/s',
'mmHg': 'mmHg', 'mmHg': 'mmHg',
'mi': 'mi', 'mi': 'mi',
'km': 'km', 'km': 'km',
'inch': 'inch', 'inch': 'inch',
'mm': 'mm', 'mm': 'mm',
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Ajustes', 'settings': 'Ajustes',
'no_inter': 'Sin conexión a Internet', 'no_inter': 'Sin conexión a Internet',
'on_inter': 'on_inter': 'Conéctate a Internet para obtener información meteorológica.',
'Conéctate a Internet para obtener información meteorológica.', 'location': 'Ubicación',
'location': 'Ubicación', 'no_location':
'no_location': 'Activa la localización para obtener información meteorológica para tu ubicación actual.',
'Activa la localización para obtener información meteorológica para tu ubicación actual.', 'theme': 'Tema',
'theme': 'Tema', 'low': 'Bajo',
'low': 'Bajo', 'high': 'Alto',
'high': 'Alto', 'normal': 'Normal',
'normal': 'Normal', 'lat': 'Latitud',
'lat': 'Latitud', 'lon': 'Longitud',
'lon': 'Longitud', 'create': 'Crear',
'create': 'Crear', 'city': 'Ciudad',
'city': 'Ciudad', 'district': 'Distrito',
'district': 'Distrito', 'noWeatherCard': 'Añadir una ciudad',
'noWeatherCard': 'Añadir una ciudad', 'deletedCardWeather': 'Eliminar una ciudad',
'deletedCardWeather': 'Eliminar una ciudad', 'deletedCardWeatherQuery':
'deletedCardWeatherQuery': '¿Estás seguro de que quieres eliminar la ciudad?',
'¿Estás seguro de que quieres eliminar la ciudad?', 'delete': 'Eliminar',
'delete': 'Eliminar', 'cancel': 'Cancelar',
'cancel': 'Cancelar', 'time': 'Hora en la ciudad',
'time': 'Hora en la ciudad', 'validateName': 'Por favor, introduce un nombre',
'validateName': 'Por favor, introduce un nombre', 'measurements': 'Sistema de medidas',
'measurements': 'Sistema de medidas', 'degrees': 'Grados',
'degrees': 'Grados', 'celsius': 'Celsius',
'celsius': 'Celsius', 'fahrenheit': 'Fahrenheit',
'fahrenheit': 'Fahrenheit', 'imperial': 'Imperial',
'imperial': 'Imperial', 'metric': 'Métrico',
'metric': 'Métrico', 'validateValue': 'Por favor, introduce un valor',
'validateValue': 'Por favor, introduce un valor', 'validateNumber': 'Por favor, introduce un número válido',
'validateNumber': 'Por favor, introduce un número válido', 'validate90': 'El valor tiene que estar entre -90 y 90',
'validate90': 'El valor tiene que estar entre -90 y 90', 'validate180': 'El valor tiene que estar entre -180 y 180',
'validate180': 'El valor tiene que estar entre -180 y 180', 'notifications': 'Notificaciones',
'notifications': 'Notificaciones', 'sunrise': 'Amanecer',
'sunrise': 'Amanecer', 'sunset': 'Atardecer',
'sunset': 'Atardecer', 'timeformat': 'Formato de hora',
'timeformat': 'Formato de hora', '12': '12 horas',
'12': '12 horas', '24': '24 horas',
'24': '24 horas', 'cloudcover': 'Cobertura de nubes',
'cloudcover': 'Cobertura de nubes', 'uvIndex': 'UV-índice',
'uvIndex': 'UV-índice', 'materialColor': 'Colores Dinámicos',
'materialColor': 'Colores Dinámicos', 'uvLow': 'Bajo',
'uvLow': 'Bajo', 'uvAverage': 'Moderado',
'uvAverage': 'Moderado', 'uvHigh': 'Alto',
'uvHigh': 'Alto', 'uvVeryHigh': 'Muy alto',
'uvVeryHigh': 'Muy alto', 'uvExtreme': 'Extremo',
'uvExtreme': 'Extremo', 'weatherMore': 'Pronóstico del tiempo para 12 días',
'weatherMore': 'Pronóstico del tiempo para 12 días', 'windgusts': 'Ráfagas',
'windgusts': 'Ráfagas', 'north': 'Norte',
'north': 'Norte', 'northeast': 'Noreste',
'northeast': 'Noreste', 'east': 'Este',
'east': 'Este', 'southeast': 'Sureste',
'southeast': 'Sureste', 'south': 'Sur',
'south': 'Sur', 'southwest': 'Suroeste',
'southwest': 'Suroeste', 'west': 'Oeste',
'west': 'Oeste', 'northwest': 'Noroeste',
'northwest': 'Noroeste', 'project': 'Proyecto en',
'project': 'Proyecto en', 'version': 'Versión de la aplicación',
'version': 'Versión de la aplicación', 'precipitationProbability': 'Probabilidad de precipitación',
'precipitationProbability': 'Probabilidad de precipitación', 'apparentTemperatureMin': 'Temperatura aparente mínima',
'apparentTemperatureMin': 'Temperatura aparente mínima', 'apparentTemperatureMax': 'Temperatura aparente máxima',
'apparentTemperatureMax': 'Temperatura aparente máxima', 'amoledTheme': 'AMOLED-tema',
'amoledTheme': 'AMOLED-tema', 'appearance': 'Apariencia',
'appearance': 'Apariencia', 'functions': 'Funciones',
'functions': 'Funciones', 'data': 'Datos',
'data': 'Datos', 'language': 'Idioma',
'language': 'Idioma', 'timeRange': 'Frecuencia (en horas)',
'timeRange': 'Frecuencia (en horas)', 'timeStart': 'Hora de inicio',
'timeStart': 'Hora de inicio', 'timeEnd': 'Hora de finalización',
'timeEnd': 'Hora de finalización', 'support': 'Soporte',
'support': 'Soporte', 'system': 'Sistema',
'system': 'Sistema', 'dark': 'Oscuro',
'dark': 'Oscuro', 'light': 'Claro',
'light': 'Claro', 'license': 'Licencias',
'license': 'Licencias', 'widget': 'Widget',
'widget': 'Widget', 'widgetBackground': 'Fondo del widget',
'widgetBackground': 'Fondo del widget', 'widgetText': 'Texto del widget',
'widgetText': 'Texto del widget', 'dewpoint': 'Punto de rocío',
'dewpoint': 'Punto de rocío', 'shortwaveRadiation': 'Radiación de onda corta',
'shortwaveRadiation': 'Radiación de onda corta', 'roundDegree': 'Redondear grados',
'roundDegree': 'Redondear grados', 'settings_full': 'Configuración',
'settings_full': 'Configuración', 'cities': 'Ciudades',
'cities': 'Ciudades', 'searchMethod': 'Usa la búsqueda o la geolocalización',
'searchMethod': 'Usa la búsqueda o la geolocalización', 'done': 'Hecho',
'done': 'Hecho', 'groups': 'Nuestros grupos',
'groups': 'Nuestros grupos', 'openMeteo': 'Datos de Open-Meteo (CC-BY 4.0)',
'openMeteo': 'Datos de Open-Meteo (CC-BY 4.0)', 'hourlyVariables': 'Variables meteorológicas horarias',
'hourlyVariables': 'Variables meteorológicas horarias', 'dailyVariables': 'Variables meteorológicas diarias',
'dailyVariables': 'Variables meteorológicas diarias', 'largeElement': 'Visualización grande del clima',
'largeElement': 'Visualización grande del clima', 'map': 'Mapa',
'map': 'Mapa', 'clearCacheStore': 'Borrar caché',
'clearCacheStore': 'Borrar caché', 'deletedCacheStore': 'Borrando caché',
'deletedCacheStore': 'Borrando caché', 'deletedCacheStoreQuery': '¿Estás seguro de que quieres borrar el caché?',
'deletedCacheStoreQuery': 'addWidget': 'Agregar widget',
'¿Estás seguro de que quieres borrar el caché?', 'hideMap': 'Ocultar mapa',
'addWidget': 'Agregar widget', };
'hideMap': 'Ocultar mapa',
};
} }

View file

@ -1,143 +1,143 @@
class FaIr { class FaIr {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'شروع کنید', 'start': 'شروع کنید',
'description': 'description':
'یک برنامه هواشناسی با پیش‌بینی به روز برای هر ساعت، روز و هفته و هر مکان', 'یک برنامه هواشناسی با پیش‌بینی به روز برای هر ساعت، روز و هفته و هر مکان',
'name': 'آب و هوا', 'name': 'آب و هوا',
'name2': 'طراحی راحت', 'name2': 'طراحی راحت',
'name3': 'ارتباط باما', 'name3': 'ارتباط باما',
'description2': 'description2':
'برنامه به گونه ای طراحی شده است تا به راحتی بتوانید با آن ارتباط بگیرید.', 'برنامه به گونه ای طراحی شده است تا به راحتی بتوانید با آن ارتباط بگیرید.',
'description3': 'description3':
'اگر با مشکلی روبرو شدید، لطفاً با ما از طریق ایمیل و یا نظرات برنامه ارتباط بگیرید.', 'اگر با مشکلی روبرو شدید، لطفاً با ما از طریق ایمیل و یا نظرات برنامه ارتباط بگیرید.',
'next': 'بعدی', 'next': 'بعدی',
'search': 'جستجو....', 'search': 'جستجو....',
'loading': 'درحال بارگذاری...', 'loading': 'درحال بارگذاری...',
'searchCity': 'شهر خود را پیدا کنید', 'searchCity': 'شهر خود را پیدا کنید',
'humidity': 'رطوبت', 'humidity': 'رطوبت',
'wind': 'باد', 'wind': 'باد',
'visibility': 'میزان دید', 'visibility': 'میزان دید',
'feels': 'دما', 'feels': 'دما',
'evaporation': 'تبخیر و تعرق', 'evaporation': 'تبخیر و تعرق',
'precipitation': 'ته‌نشینی', 'precipitation': 'ته‌نشینی',
'direction': 'جهت', 'direction': 'جهت',
'pressure': 'فشار', 'pressure': 'فشار',
'rain': 'باران', 'rain': 'باران',
'clear_sky': 'آسمان صاف', 'clear_sky': 'آسمان صاف',
'cloudy': 'ابری', 'cloudy': 'ابری',
'overcast': 'ابری', 'overcast': 'ابری',
'fog': 'مه', 'fog': 'مه',
'drizzle': 'ریز باران', 'drizzle': 'ریز باران',
'drizzling_rain': 'تگرگ', 'drizzling_rain': 'تگرگ',
'freezing_rain': 'باران یخ‌زن', 'freezing_rain': 'باران یخ‌زن',
'heavy_rains': 'باران شدید', 'heavy_rains': 'باران شدید',
'snow': 'برف', 'snow': 'برف',
'thunderstorm': 'طوفان', 'thunderstorm': 'طوفان',
'kph': 'km/h', 'kph': 'km/h',
'mph': 'mph', 'mph': 'mph',
'mi': 'mi', 'mi': 'mi',
'km': 'km', 'km': 'km',
'm/s': 'm/s', 'm/s': 'm/s',
'mmHg': 'mmHg', 'mmHg': 'mmHg',
'inch': 'inch', 'inch': 'inch',
'mm': 'mm', 'mm': 'mm',
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'تنظیمات', 'settings': 'تنظیمات',
'no_inter': 'عدم اتصال به اینترنت', 'no_inter': 'عدم اتصال به اینترنت',
'on_inter': 'برای دریافت تغییرات جوی اینترنت خود را روشن کنید.', 'on_inter': 'برای دریافت تغییرات جوی اینترنت خود را روشن کنید.',
'location': 'مکان', 'location': 'مکان',
'no_location': 'no_location':
'برای دریافت اطلاعات آب و هوا برای مکان فعلی، سرویس مکان را فعال کنید.', 'برای دریافت اطلاعات آب و هوا برای مکان فعلی، سرویس مکان را فعال کنید.',
'theme': 'پوسته', 'theme': 'پوسته',
'low': 'کم', 'low': 'کم',
'high': 'زیاد', 'high': 'زیاد',
'normal': 'عادی', 'normal': 'عادی',
'lat': 'عرض جغرافیایی', 'lat': 'عرض جغرافیایی',
'lon': 'طول جغرافیایی', 'lon': 'طول جغرافیایی',
'create': 'ایجاد', 'create': 'ایجاد',
'city': 'شهر', 'city': 'شهر',
'district': 'ناحیه', 'district': 'ناحیه',
'noWeatherCard': 'یک شهر اضافه کنید', 'noWeatherCard': 'یک شهر اضافه کنید',
'deletedCardWeather': 'حذف یک شهر', 'deletedCardWeather': 'حذف یک شهر',
'deletedCardWeatherQuery': 'آیا از حذف این شهر اطمینان دارید؟', 'deletedCardWeatherQuery': 'آیا از حذف این شهر اطمینان دارید؟',
'delete': 'حذف', 'delete': 'حذف',
'cancel': 'صرف نظر', 'cancel': 'صرف نظر',
'time': 'زمان در این شهر', 'time': 'زمان در این شهر',
'validateName': 'لطفاً نام را وارد کنید.', 'validateName': 'لطفاً نام را وارد کنید.',
'measurements': 'سیستم اندازه گیری', 'measurements': 'سیستم اندازه گیری',
'degrees': 'درجه', 'degrees': 'درجه',
'celsius': 'سلسیوس', 'celsius': 'سلسیوس',
'fahrenheit': 'فارنهایت', 'fahrenheit': 'فارنهایت',
'imperial': 'بریتانیایی', 'imperial': 'بریتانیایی',
'metric': 'متریک', 'metric': 'متریک',
'validateValue': 'لطفاً یک مقدار را وارد کنید.', 'validateValue': 'لطفاً یک مقدار را وارد کنید.',
'validateNumber': 'لطفاً یک مقدار معتبر وارد کنید.', 'validateNumber': 'لطفاً یک مقدار معتبر وارد کنید.',
'validate90': 'مقدار شما باید بین -۹۰ و ۹۰ باشد.', 'validate90': 'مقدار شما باید بین -۹۰ و ۹۰ باشد.',
'validate180': 'مقدار شما باید بین -۱۸۰ و ۱۸۰ باشد.', 'validate180': 'مقدار شما باید بین -۱۸۰ و ۱۸۰ باشد.',
'notifications': 'اعلانات', 'notifications': 'اعلانات',
'sunrise': 'طلوع آفتاب', 'sunrise': 'طلوع آفتاب',
'sunset': 'غروب آفتاب', 'sunset': 'غروب آفتاب',
'timeformat': 'نوع زمان', 'timeformat': 'نوع زمان',
'12': '۱۲ ساعته', '12': '۱۲ ساعته',
'24': '۲۴ ساعته', '24': '۲۴ ساعته',
'cloudcover': 'پوشش ابری', 'cloudcover': 'پوشش ابری',
'uvIndex': 'شاخص اشعه ماوراء بنفش', 'uvIndex': 'شاخص اشعه ماوراء بنفش',
'materialColor': 'رنگ های پویا', 'materialColor': 'رنگ های پویا',
'uvLow': 'کم', 'uvLow': 'کم',
'uvAverage': 'متوسط', 'uvAverage': 'متوسط',
'uvHigh': 'زیاد', 'uvHigh': 'زیاد',
'uvVeryHigh': 'خیلی زیاد', 'uvVeryHigh': 'خیلی زیاد',
'uvExtreme': 'شدید', 'uvExtreme': 'شدید',
'weatherMore': 'پیش بینی آب و هوا 12 روزه', 'weatherMore': 'پیش بینی آب و هوا 12 روزه',
'windgusts': 'وزش باد', 'windgusts': 'وزش باد',
'north': 'شمال', 'north': 'شمال',
'northeast': 'شمال شرقی', 'northeast': 'شمال شرقی',
'east': 'شرق', 'east': 'شرق',
'southeast': 'جنوب شرقی', 'southeast': 'جنوب شرقی',
'south': 'جنوب', 'south': 'جنوب',
'southwest': 'جنوب غربی', 'southwest': 'جنوب غربی',
'west': 'غرب', 'west': 'غرب',
'northwest': 'شمال غربی', 'northwest': 'شمال غربی',
'project': 'Project on', 'project': 'Project on',
'version': 'نگارش برنامه', 'version': 'نگارش برنامه',
'precipitationProbability': 'احتمال بارش', 'precipitationProbability': 'احتمال بارش',
'apparentTemperatureMin': 'حداقل دمای ظاهری', 'apparentTemperatureMin': 'حداقل دمای ظاهری',
'apparentTemperatureMax': 'حداکثر دمای ظاهری', 'apparentTemperatureMax': 'حداکثر دمای ظاهری',
'amoledTheme': 'پوسته امولد', 'amoledTheme': 'پوسته امولد',
'appearance': 'ظاهر', 'appearance': 'ظاهر',
'functions': 'کارکرد', 'functions': 'کارکرد',
'data': 'داده ها', 'data': 'داده ها',
'language': 'زبان', 'language': 'زبان',
'timeRange': 'فرکانس (بر حسب ساعت)', 'timeRange': 'فرکانس (بر حسب ساعت)',
'timeStart': 'زمان شروع', 'timeStart': 'زمان شروع',
'timeEnd': 'زمان پایان', 'timeEnd': 'زمان پایان',
'support': 'پشتیبانی', 'support': 'پشتیبانی',
'system': 'سیستم', 'system': 'سیستم',
'dark': 'تیره', 'dark': 'تیره',
'light': 'روشن', 'light': 'روشن',
'license': 'مجوز', 'license': 'مجوز',
'widget': 'ویجت', 'widget': 'ویجت',
'widgetBackground': 'پس زمینه ویجت', 'widgetBackground': 'پس زمینه ویجت',
'widgetText': 'متن ویجت', 'widgetText': 'متن ویجت',
'dewpoint': 'نقطه شبنم', 'dewpoint': 'نقطه شبنم',
'shortwaveRadiation': 'تابش موج کوتاه', 'shortwaveRadiation': 'تابش موج کوتاه',
'W/m2': 'W/m2', 'W/m2': 'W/m2',
'roundDegree': 'درجه گرد', 'roundDegree': 'درجه گرد',
'settings_full': 'تنظیمات', 'settings_full': 'تنظیمات',
'cities': 'شهر ها', 'cities': 'شهر ها',
'searchMethod': 'از جستجو یا موقعیت جغرافیایی استفاده کنید', 'searchMethod': 'از جستجو یا موقعیت جغرافیایی استفاده کنید',
'done': 'پایان', 'done': 'پایان',
'groups': 'گروه‌های ما', 'groups': 'گروه‌های ما',
'openMeteo': 'داده‌ها از Open-Meteo (CC-BY 4.0)', 'openMeteo': 'داده‌ها از Open-Meteo (CC-BY 4.0)',
'hourlyVariables': 'متغیرهای ساعتی هواشناسی', 'hourlyVariables': 'متغیرهای ساعتی هواشناسی',
'dailyVariables': 'متغیرهای روزانه هواشناسی', 'dailyVariables': 'متغیرهای روزانه هواشناسی',
'largeElement': 'نمایش هواشناسی بزرگ', 'largeElement': 'نمایش هواشناسی بزرگ',
'map': 'نقشه', 'map': 'نقشه',
'clearCacheStore': 'پاک کردن حافظه نهان', 'clearCacheStore': 'پاک کردن حافظه نهان',
'deletedCacheStore': 'در حال پاک کردن حافظه نهان', 'deletedCacheStore': 'در حال پاک کردن حافظه نهان',
'deletedCacheStoreQuery': 'deletedCacheStoreQuery':
'آیا مطمئن هستید که می‌خواهید حافظه نهان را پاک کنید؟', 'آیا مطمئن هستید که می‌خواهید حافظه نهان را پاک کنید؟',
'addWidget': 'افزودن ویجت', 'addWidget': 'افزودن ویجت',
'hideMap': 'پنهان کردن نقشه', 'hideMap': 'پنهان کردن نقشه',
}; };
} }

View file

@ -1,143 +1,142 @@
class FrFr { class FrFr {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'Démarrer', 'start': 'Démarrer',
'description': 'description':
'Application météo avec un pronostic à jour pour chaque heure, jour et semaine pour n\'importe quel endroit.', 'Application météo avec un pronostic à jour pour chaque heure, jour et semaine pour n\'importe quel endroit.',
'name': 'Météo', 'name': 'Météo',
'name2': 'Design pratique', 'name2': 'Design pratique',
'name3': 'Nous contacter', 'name3': 'Nous contacter',
'description2': 'description2':
'Toute la navigation est conçue pour interagir avec l\'application de la manière la plus pratique et la plus rapide possible.', 'Toute la navigation est conçue pour interagir avec l\'application de la manière la plus pratique et la plus rapide possible.',
'description3': 'description3':
'Si vous rencontrez des problèmes, veuillez nous contacter par e-mail ou dans les avis de l\'application.', 'Si vous rencontrez des problèmes, veuillez nous contacter par e-mail ou dans les avis de l\'application.',
'next': 'Suivant', 'next': 'Suivant',
'search': 'Rechercher...', 'search': 'Rechercher...',
'loading': 'Chargement...', 'loading': 'Chargement...',
'searchCity': 'Trouver votre ville', 'searchCity': 'Trouver votre ville',
'humidity': 'Humidité', 'humidity': 'Humidité',
'wind': 'Vent', 'wind': 'Vent',
'visibility': 'Visibilité', 'visibility': 'Visibilité',
'feels': 'Ressenti', 'feels': 'Ressenti',
'evaporation': 'Evaporation', 'evaporation': 'Evaporation',
'precipitation': 'Précipitation', 'precipitation': 'Précipitation',
'direction': 'Direction', 'direction': 'Direction',
'pressure': 'Pression', 'pressure': 'Pression',
'rain': 'Pluie', 'rain': 'Pluie',
'clear_sky': 'Ciel dégagé', 'clear_sky': 'Ciel dégagé',
'cloudy': 'Nuageux', 'cloudy': 'Nuageux',
'overcast': 'Couvert', 'overcast': 'Couvert',
'fog': 'Brouillard', 'fog': 'Brouillard',
'drizzle': 'Bruine', 'drizzle': 'Bruine',
'drizzling_rain': 'Brouillard givrant', 'drizzling_rain': 'Brouillard givrant',
'freezing_rain': 'Pluie verglaçante', 'freezing_rain': 'Pluie verglaçante',
'heavy_rains': 'Averses de pluie', 'heavy_rains': 'Averses de pluie',
'snow': 'Neige', 'snow': 'Neige',
'thunderstorm': 'Orage', 'thunderstorm': 'Orage',
'kph': 'km/h', 'kph': 'km/h',
'mph': 'mph', 'mph': 'mph',
'm/s': 'm/s', 'm/s': 'm/s',
'mmHg': 'mmHg', 'mmHg': 'mmHg',
'mi': 'mi', 'mi': 'mi',
'km': 'km', 'km': 'km',
'inch': 'inch', 'inch': 'inch',
'mm': 'mm', 'mm': 'mm',
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Par.', 'settings': 'Par.',
'no_inter': 'Pas de réseau', 'no_inter': 'Pas de réseau',
'on_inter': 'on_inter':
'Connectez-vous à internet pour obtenir des données météorologiques.', 'Connectez-vous à internet pour obtenir des données météorologiques.',
'location': 'Localisation', 'location': 'Localisation',
'no_location': 'no_location':
'Activez le service de localisation pour obtenir les données météorologiques de l\'endroit actuel.', 'Activez le service de localisation pour obtenir les données météorologiques de l\'endroit actuel.',
'theme': 'Thème', 'theme': 'Thème',
'low': 'Bas', 'low': 'Bas',
'high': 'Haut', 'high': 'Haut',
'normal': 'Normal', 'normal': 'Normal',
'lat': 'Latitude', 'lat': 'Latitude',
'lon': 'Longitude', 'lon': 'Longitude',
'create': 'Créer', 'create': 'Créer',
'city': 'Ville', 'city': 'Ville',
'district': 'District', 'district': 'District',
'noWeatherCard': 'Ajouter une ville', 'noWeatherCard': 'Ajouter une ville',
'deletedCardWeather': 'Supprimer une ville', 'deletedCardWeather': 'Supprimer une ville',
'deletedCardWeatherQuery': 'deletedCardWeatherQuery': 'Êtes-vous sûr de vouloir supprimer la ville ?',
'Êtes-vous sûr de vouloir supprimer la ville ?', 'delete': 'Supprimer',
'delete': 'Supprimer', 'cancel': 'Annuler',
'cancel': 'Annuler', 'time': 'Heure locale',
'time': 'Heure locale', 'validateName': 'Veuillez saisir le nom',
'validateName': 'Veuillez saisir le nom', 'measurements': 'Système de mesures',
'measurements': 'Système de mesures', 'degrees': 'Degrés',
'degrees': 'Degrés', 'celsius': 'Celsius',
'celsius': 'Celsius', 'fahrenheit': 'Fahrenheit',
'fahrenheit': 'Fahrenheit', 'imperial': 'Imperial',
'imperial': 'Imperial', 'metric': 'Métrique',
'metric': 'Métrique', 'validateValue': 'Veuillez saisir une valeur',
'validateValue': 'Veuillez saisir une valeur', 'validateNumber': 'Veuillez saisir un numéro valide',
'validateNumber': 'Veuillez saisir un numéro valide', 'validate90': 'La valeur doit être comprise entre -90 et 90',
'validate90': 'La valeur doit être comprise entre -90 et 90', 'validate180': 'La valeur doit être comprise entre -180 et 180',
'validate180': 'La valeur doit être comprise entre -180 et 180', 'notifications': 'Notifications',
'notifications': 'Notifications', 'sunrise': 'Lever du soleil',
'sunrise': 'Lever du soleil', 'sunset': 'Coucher du soleil',
'sunset': 'Coucher du soleil', 'timeformat': 'Format horaire',
'timeformat': 'Format horaire', '12': '12 heures',
'12': '12 heures', '24': '24 heures',
'24': '24 heures', 'cloudcover': 'Сouverture nuageuse',
'cloudcover': 'Сouverture nuageuse', 'uvIndex': 'UV-indice',
'uvIndex': 'UV-indice', 'materialColor': 'Couleurs Dynamiques',
'materialColor': 'Couleurs Dynamiques', 'uvLow': 'Faible',
'uvLow': 'Faible', 'uvAverage': 'Modéré',
'uvAverage': 'Modéré', 'uvHigh': 'Élevé',
'uvHigh': 'Élevé', 'uvVeryHigh': 'Très élevé',
'uvVeryHigh': 'Très élevé', 'uvExtreme': 'Extrême',
'uvExtreme': 'Extrême', 'weatherMore': 'Prévisions météo pour 12 jours',
'weatherMore': 'Prévisions météo pour 12 jours', 'windgusts': 'Rafale',
'windgusts': 'Rafale', 'north': 'Nord',
'north': 'Nord', 'northeast': 'Nord-Est',
'northeast': 'Nord-Est', 'east': 'Est',
'east': 'Est', 'southeast': 'Sud-Est',
'southeast': 'Sud-Est', 'south': 'Sud',
'south': 'Sud', 'southwest': 'Sud-Ouest',
'southwest': 'Sud-Ouest', 'west': 'Ouest',
'west': 'Ouest', 'northwest': 'Nord-Ouest',
'northwest': 'Nord-Ouest', 'project': 'Project on',
'project': 'Project on', 'version': 'Application version',
'version': 'Application version', 'precipitationProbability': 'Probabilité de précipitation',
'precipitationProbability': 'Probabilité de précipitation', 'apparentTemperatureMin': 'Température apparente minimale',
'apparentTemperatureMin': 'Température apparente minimale', 'apparentTemperatureMax': 'Température apparente maximale',
'apparentTemperatureMax': 'Température apparente maximale', 'amoledTheme': 'AMOLED-thème',
'amoledTheme': 'AMOLED-thème', 'appearance': 'Apparence',
'appearance': 'Apparence', 'functions': 'Fonctions',
'functions': 'Fonctions', 'data': 'Données',
'data': 'Données', 'language': 'Langue',
'language': 'Langue', 'timeRange': 'Fréquence (en heures)',
'timeRange': 'Fréquence (en heures)', 'timeStart': 'Heure de début',
'timeStart': 'Heure de début', 'timeEnd': 'Heure de fin',
'timeEnd': 'Heure de fin', 'support': 'Support',
'support': 'Support', 'system': 'Système',
'system': 'Système', 'dark': 'Sombre',
'dark': 'Sombre', 'light': 'Clair',
'light': 'Clair', 'license': 'Licences',
'license': 'Licences', 'widget': 'Widget',
'widget': 'Widget', 'widgetBackground': 'Fond du widget',
'widgetBackground': 'Fond du widget', 'widgetText': 'Texte du widget',
'widgetText': 'Texte du widget', 'dewpoint': 'Point de rosée',
'dewpoint': 'Point de rosée', 'shortwaveRadiation': 'Rayonnement à ondes courtes',
'shortwaveRadiation': 'Rayonnement à ondes courtes', 'roundDegree': 'Arrondir les degrés',
'roundDegree': 'Arrondir les degrés', 'settings_full': 'Paramètres',
'settings_full': 'Paramètres', 'cities': 'Villes',
'cities': 'Villes', 'searchMethod': 'Utilisez la recherche ou la géolocalisation',
'searchMethod': 'Utilisez la recherche ou la géolocalisation', 'done': 'Terminé',
'done': 'Terminé', 'groups': 'Nos groupes',
'groups': 'Nos groupes', 'openMeteo': 'Données de Open-Meteo (CC-BY 4.0)',
'openMeteo': 'Données de Open-Meteo (CC-BY 4.0)', 'hourlyVariables': 'Variables météorologiques horaires',
'hourlyVariables': 'Variables météorologiques horaires', 'dailyVariables': 'Variables météorologiques quotidiennes',
'dailyVariables': 'Variables météorologiques quotidiennes', 'largeElement': 'Affichage météo grand format',
'largeElement': 'Affichage météo grand format', 'map': 'Carte',
'map': 'Carte', 'clearCacheStore': 'Effacer le cache',
'clearCacheStore': 'Effacer le cache', 'deletedCacheStore': 'Effacement du cache',
'deletedCacheStore': 'Effacement du cache', 'deletedCacheStoreQuery': 'Êtes-vous sûr de vouloir effacer le cache?',
'deletedCacheStoreQuery': 'Êtes-vous sûr de vouloir effacer le cache?', 'addWidget': 'Ajouter un widget',
'addWidget': 'Ajouter un widget', 'hideMap': 'Cacher la carte',
'hideMap': 'Cacher la carte', };
};
} }

View file

@ -1,144 +1,144 @@
class GaIe { class GaIe {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'Tosaigh', 'start': 'Tosaigh',
'description': 'description':
'Aip aimsire le réamhaisnéis láithreach do gach uair, lá, agus seachtain do gach áit.', 'Aip aimsire le réamhaisnéis láithreach do gach uair, lá, agus seachtain do gach áit.',
'name': 'Aimsir', 'name': 'Aimsir',
'name2': 'Dearadh Éasca', 'name2': 'Dearadh Éasca',
'name3': 'Déan teagmháil linn', 'name3': 'Déan teagmháil linn',
'description2': 'description2':
'Tá gach treoir déanta chun éascaíocht agus gniomhachtú a dhéanamh leis an aip chomh héasca agus chomh tapa agus is féidir.', 'Tá gach treoir déanta chun éascaíocht agus gniomhachtú a dhéanamh leis an aip chomh héasca agus chomh tapa agus is féidir.',
'description3': 'description3':
'Má tá fadhb ar bith agat, déan teagmháil linn trí Ríomhphost nó trí phlé an aip.', 'Má tá fadhb ar bith agat, déan teagmháil linn trí Ríomhphost nó trí phlé an aip.',
'next': 'Ar Aghaidh', 'next': 'Ar Aghaidh',
'search': 'Cuardaigh...', 'search': 'Cuardaigh...',
'loading': 'Ag Lódáil...', 'loading': 'Ag Lódáil...',
'searchCity': 'Aimsigh do chathair', 'searchCity': 'Aimsigh do chathair',
'humidity': 'Measarthaíocht Géimneachta', 'humidity': 'Measarthaíocht Géimneachta',
'wind': 'Gaoth', 'wind': 'Gaoth',
'visibility': 'Radharc', 'visibility': 'Radharc',
'feels': 'Brath', 'feels': 'Brath',
'evaporation': 'Buirtheasaiteacht', 'evaporation': 'Buirtheasaiteacht',
'precipitation': 'Tuirlingt', 'precipitation': 'Tuirlingt',
'direction': 'Treorach', 'direction': 'Treorach',
'pressure': 'Brú', 'pressure': 'Brú',
'rain': 'Fearthainn', 'rain': 'Fearthainn',
'clear_sky': 'Spéir Ghlán', 'clear_sky': 'Spéir Ghlán',
'cloudy': 'Scamallach', 'cloudy': 'Scamallach',
'overcast': 'Tromscamallach', 'overcast': 'Tromscamallach',
'fog': 'Ceo', 'fog': 'Ceo',
'drizzle': 'Táilliú', 'drizzle': 'Táilliú',
'drizzling_rain': 'Táilliú Ag Fuarthainn', 'drizzling_rain': 'Táilliú Ag Fuarthainn',
'freezing_rain': 'Tuirlingt Fuara', 'freezing_rain': 'Tuirlingt Fuara',
'heavy_rains': 'Scáil fearthainne', 'heavy_rains': 'Scáil fearthainne',
'snow': 'Sneachta', 'snow': 'Sneachta',
'thunderstorm': 'Tornaí', 'thunderstorm': 'Tornaí',
'kph': 'km/u', 'kph': 'km/u',
'mph': 'mi/u', 'mph': 'mi/u',
'm/s': 'm/s', 'm/s': 'm/s',
'mmHg': 'mmHg', 'mmHg': 'mmHg',
'mi': 'míle', 'mi': 'míle',
'km': 'km', 'km': 'km',
'inch': 'úinse', 'inch': 'úinse',
'mm': 'mm', 'mm': 'mm',
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Socrú', 'settings': 'Socrú',
'no_inter': 'Gan Idirlíon', 'no_inter': 'Gan Idirlíon',
'on_inter': 'Cuir ar Idirlíon chun sonraí aeráide a fháil.', 'on_inter': 'Cuir ar Idirlíon chun sonraí aeráide a fháil.',
'location': 'Áit', 'location': 'Áit',
'no_location': 'no_location':
'Cumasaigh seirbhís na háite chun sonraí aimsire a fháil don áit reatha.', 'Cumasaigh seirbhís na háite chun sonraí aimsire a fháil don áit reatha.',
'theme': 'Téama', 'theme': 'Téama',
'low': 'Íseal', 'low': 'Íseal',
'high': 'Ard', 'high': 'Ard',
'normal': 'Gnáth', 'normal': 'Gnáth',
'lat': 'Éilt', 'lat': 'Éilt',
'lon': 'Long', 'lon': 'Long',
'create': 'Cruthaigh', 'create': 'Cruthaigh',
'city': 'Cathair', 'city': 'Cathair',
'district': 'Ceantar', 'district': 'Ceantar',
'noWeatherCard': 'Cuir cathair leis', 'noWeatherCard': 'Cuir cathair leis',
'deletedCardWeather': 'Áireamh cathair á scriosadh', 'deletedCardWeather': 'Áireamh cathair á scriosadh',
'deletedCardWeatherQuery': 'deletedCardWeatherQuery':
'An bhfuil tú cinnte go bhfuil tú ag iarraidh an chathair a scriosadh?', 'An bhfuil tú cinnte go bhfuil tú ag iarraidh an chathair a scriosadh?',
'delete': 'Scrios', 'delete': 'Scrios',
'cancel': 'Cealaigh', 'cancel': 'Cealaigh',
'time': 'Am sa chathair', 'time': 'Am sa chathair',
'validateName': 'Cuir ainm isteach, le do thoil', 'validateName': 'Cuir ainm isteach, le do thoil',
'measurements': 'Córas Mheáchain', 'measurements': 'Córas Mheáchain',
'degrees': 'Céim', 'degrees': 'Céim',
'celsius': 'Céim Celsius', 'celsius': 'Céim Celsius',
'fahrenheit': 'Céim Fahrenheit', 'fahrenheit': 'Céim Fahrenheit',
'imperial': 'Impireach', 'imperial': 'Impireach',
'metric': 'Mheitric', 'metric': 'Mheitric',
'validateValue': 'Cuir luach isteach, le do thoil', 'validateValue': 'Cuir luach isteach, le do thoil',
'validateNumber': 'Cuir uimhir bailí isteach, le do thoil', 'validateNumber': 'Cuir uimhir bailí isteach, le do thoil',
'validate90': 'Caithfidh luach a bheith idir -90 agus 90', 'validate90': 'Caithfidh luach a bheith idir -90 agus 90',
'validate180': 'Caithfidh luach a bheith idir -180 agus 180', 'validate180': 'Caithfidh luach a bheith idir -180 agus 180',
'notifications': 'Fógraí', 'notifications': 'Fógraí',
'sunrise': 'Éirí na Gréine', 'sunrise': 'Éirí na Gréine',
'sunset': 'Dul faoi na Gréine', 'sunset': 'Dul faoi na Gréine',
'timeformat': 'Formáid Am', 'timeformat': 'Formáid Am',
'12': '12-uair', '12': '12-uair',
'24': '24-uair', '24': '24-uair',
'cloudcover': 'Clúdach Scamall', 'cloudcover': 'Clúdach Scamall',
'uvIndex': 'Indéacs UV', 'uvIndex': 'Indéacs UV',
'materialColor': 'Dathanna Dinimiciúla', 'materialColor': 'Dathanna Dinimiciúla',
'uvLow': 'Íseal', 'uvLow': 'Íseal',
'uvAverage': 'Meánach', 'uvAverage': 'Meánach',
'uvHigh': 'Ard', 'uvHigh': 'Ard',
'uvVeryHigh': 'An-Árd', 'uvVeryHigh': 'An-Árd',
'uvExtreme': 'Éachtach', 'uvExtreme': 'Éachtach',
'weatherMore': 'Réamhaisnéis Aimsire 12 lá', 'weatherMore': 'Réamhaisnéis Aimsire 12 lá',
'windgusts': 'Tonna Gaoithe', 'windgusts': 'Tonna Gaoithe',
'north': 'Tuaisceart', 'north': 'Tuaisceart',
'northeast': 'Tuaisceart-Thoir', 'northeast': 'Tuaisceart-Thoir',
'east': 'Thoir', 'east': 'Thoir',
'southeast': 'Deisceart-Thoir', 'southeast': 'Deisceart-Thoir',
'south': 'Deisceart', 'south': 'Deisceart',
'southwest': 'Deisceart-Iarthar', 'southwest': 'Deisceart-Iarthar',
'west': 'Iarthar', 'west': 'Iarthar',
'northwest': 'Tuaisceart-Iarthar', 'northwest': 'Tuaisceart-Iarthar',
'project': 'Tionscadal ar siúl', 'project': 'Tionscadal ar siúl',
'version': 'Leagan Feidhmchláir', 'version': 'Leagan Feidhmchláir',
'precipitationProbability': 'Ionsaíocht Tuirlingt', 'precipitationProbability': 'Ionsaíocht Tuirlingt',
'apparentTemperatureMin': 'Teocht Shamhlaithe Ísle', 'apparentTemperatureMin': 'Teocht Shamhlaithe Ísle',
'apparentTemperatureMax': 'Teocht Shamhlaithe Uachtarach', 'apparentTemperatureMax': 'Teocht Shamhlaithe Uachtarach',
'amoledTheme': 'Téama AMOLED', 'amoledTheme': 'Téama AMOLED',
'appearance': 'Amharc', 'appearance': 'Amharc',
'functions': 'Feidhmeanna', 'functions': 'Feidhmeanna',
'data': 'Sonraí', 'data': 'Sonraí',
'language': 'Teanga', 'language': 'Teanga',
'timeRange': 'Raon Am (i n-uaireanta)', 'timeRange': 'Raon Am (i n-uaireanta)',
'timeStart': 'Tús Am', 'timeStart': 'Tús Am',
'timeEnd': 'Críoch Am', 'timeEnd': 'Críoch Am',
'support': 'Tacaíocht', 'support': 'Tacaíocht',
'system': 'Córas', 'system': 'Córas',
'dark': 'Téama Dorcha', 'dark': 'Téama Dorcha',
'light': 'Téama Soiléir', 'light': 'Téama Soiléir',
'license': 'Ceadúnas', 'license': 'Ceadúnas',
'widget': 'Rón', 'widget': 'Rón',
'widgetBackground': 'Cúlra an Rón', 'widgetBackground': 'Cúlra an Rón',
'widgetText': 'Téacs an Rón', 'widgetText': 'Téacs an Rón',
'dewpoint': 'Poinnte Dé', 'dewpoint': 'Poinnte Dé',
'shortwaveRadiation': 'Fuinneamh Ghearrfhad', 'shortwaveRadiation': 'Fuinneamh Ghearrfhad',
'W/m2': 'W/m2', 'W/m2': 'W/m2',
'roundDegree': 'Timpeall na Gráid', 'roundDegree': 'Timpeall na Gráid',
'settings_full': 'Socruithe', 'settings_full': 'Socruithe',
'cities': 'Cathracha', 'cities': 'Cathracha',
'searchMethod': 'Úsáid ceangal nó geolocáid', 'searchMethod': 'Úsáid ceangal nó geolocáid',
'done': 'Críochnaithe', 'done': 'Críochnaithe',
'groups': 'Ár ngrúpaí', 'groups': 'Ár ngrúpaí',
'openMeteo': 'Sonraí ó Open-Meteo (CC-BY 4.0)', 'openMeteo': 'Sonraí ó Open-Meteo (CC-BY 4.0)',
'hourlyVariables': 'Athrógacha aimsire uaireanta', 'hourlyVariables': 'Athrógacha aimsire uaireanta',
'dailyVariables': 'Athrógacha aimsire laethúla', 'dailyVariables': 'Athrógacha aimsire laethúla',
'largeElement': 'Taispeáint mór na haimsire', 'largeElement': 'Taispeáint mór na haimsire',
'map': 'Léarscáil', 'map': 'Léarscáil',
'clearCacheStore': 'Glan taisce', 'clearCacheStore': 'Glan taisce',
'deletedCacheStore': 'Ag glanadh an taisce', 'deletedCacheStore': 'Ag glanadh an taisce',
'deletedCacheStoreQuery': 'deletedCacheStoreQuery':
'An bhfuil tú cinnte gur mian leat an taisce a ghlanadh?', 'An bhfuil tú cinnte gur mian leat an taisce a ghlanadh?',
'addWidget': 'Cuir giuirléid leis', 'addWidget': 'Cuir giuirléid leis',
'hideMap': 'Folaigh léarscáil', 'hideMap': 'Folaigh léarscáil',
}; };
} }

View file

@ -1,140 +1,140 @@
class HiIn { class HiIn {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'शुरू करें', 'start': 'शुरू करें',
'description': 'description':
'प्रति घंटे, दिन और सप्ताह के लिए किसी भी स्थान के लिए आधुनिक पूर्वानुमान के साथ मौसम एप्लिकेशन।', 'प्रति घंटे, दिन और सप्ताह के लिए किसी भी स्थान के लिए आधुनिक पूर्वानुमान के साथ मौसम एप्लिकेशन।',
'name': 'मौसम', 'name': 'मौसम',
'name2': 'आसान डिजाइन', 'name2': 'आसान डिजाइन',
'name3': 'हमे संपर्क करें', 'name3': 'हमे संपर्क करें',
'description2': 'description2':
'सभी नेविगेशन को इस प्रकार तैयार किया गया है ताकि आप एप्लिकेशन के साथ सर्वोत्तम रूप से और तेजी से संवाद कर सकें।', 'सभी नेविगेशन को इस प्रकार तैयार किया गया है ताकि आप एप्लिकेशन के साथ सर्वोत्तम रूप से और तेजी से संवाद कर सकें।',
'description3': 'description3':
'यदि आपको कोई समस्या आती है, तो कृपया हमसे ईमेल या एप्लिकेशन समीक्षा के माध्यम से संपर्क करें।', 'यदि आपको कोई समस्या आती है, तो कृपया हमसे ईमेल या एप्लिकेशन समीक्षा के माध्यम से संपर्क करें।',
'next': 'आगे', 'next': 'आगे',
'search': 'खोजें...', 'search': 'खोजें...',
'loading': 'लोड हो रहा है...', 'loading': 'लोड हो रहा है...',
'searchCity': 'अपना शहर खोजें', 'searchCity': 'अपना शहर खोजें',
'humidity': 'नमी', 'humidity': 'नमी',
'wind': 'हवा', 'wind': 'हवा',
'visibility': 'दृश्यता', 'visibility': 'दृश्यता',
'feels': 'अनुभव', 'feels': 'अनुभव',
'evaporation': 'वाष्पीकरण', 'evaporation': 'वाष्पीकरण',
'precipitation': 'वर्षा', 'precipitation': 'वर्षा',
'direction': 'दिशा', 'direction': 'दिशा',
'pressure': 'दबाव', 'pressure': 'दबाव',
'rain': 'बारिश', 'rain': 'बारिश',
'clear_sky': 'साफ आकाश', 'clear_sky': 'साफ आकाश',
'cloudy': 'मेघपाली', 'cloudy': 'मेघपाली',
'overcast': 'बादलबस्ती', 'overcast': 'बादलबस्ती',
'fog': 'कोहरा', 'fog': 'कोहरा',
'drizzle': 'बूंदाबांदी', 'drizzle': 'बूंदाबांदी',
'drizzling_rain': 'हिमवृष्टि', 'drizzling_rain': 'हिमवृष्टि',
'freezing_rain': 'हिमस्खलन', 'freezing_rain': 'हिमस्खलन',
'heavy_rains': 'बारिश की बौछारें', 'heavy_rains': 'बारिश की बौछारें',
'snow': 'बर्फबारी', 'snow': 'बर्फबारी',
'thunderstorm': 'बिजली चमक', 'thunderstorm': 'बिजली चमक',
'kph': 'किमी/घंटा', 'kph': 'किमी/घंटा',
'mph': 'मील/घंटा', 'mph': 'मील/घंटा',
'm/s': 'मी/से', 'm/s': 'मी/से',
'mmHg': 'मिमी एचजी', 'mmHg': 'मिमी एचजी',
'mi': 'मील', 'mi': 'मील',
'km': 'किमी', 'km': 'किमी',
'inch': 'इंच', 'inch': 'इंच',
'mm': 'मिलीमीटर', 'mm': 'मिलीमीटर',
'hPa': 'हेक्टोपास्कल', 'hPa': 'हेक्टोपास्कल',
'settings': 'सेटिंग्स', 'settings': 'सेटिंग्स',
'no_inter': 'कोई इंटरनेट नहीं है', 'no_inter': 'कोई इंटरनेट नहीं है',
'on_inter': 'मौसमी आंकड़े प्राप्त करने के लिए इंटरनेट को चालू करें।', 'on_inter': 'मौसमी आंकड़े प्राप्त करने के लिए इंटरनेट को चालू करें।',
'location': 'स्थान', 'location': 'स्थान',
'no_location': 'वर्तमान स्थान के लिए मौसम डेटा प्राप्त करने के', 'no_location': 'वर्तमान स्थान के लिए मौसम डेटा प्राप्त करने के',
'theme': 'थीम', 'theme': 'थीम',
'low': 'निम्न', 'low': 'निम्न',
'high': 'उच्च', 'high': 'उच्च',
'normal': 'सामान्य', 'normal': 'सामान्य',
'lat': 'अक्षांश', 'lat': 'अक्षांश',
'lon': 'देशांतर', 'lon': 'देशांतर',
'create': 'बनाएँ', 'create': 'बनाएँ',
'city': 'शहर', 'city': 'शहर',
'district': 'जिला', 'district': 'जिला',
'noWeatherCard': 'शहर जोड़ें', 'noWeatherCard': 'शहर जोड़ें',
'deletedCardWeather': 'शहर हटाना', 'deletedCardWeather': 'शहर हटाना',
'deletedCardWeatherQuery': 'क्या आप वाकई शहर को हटाना चाहते हैं?', 'deletedCardWeatherQuery': 'क्या आप वाकई शहर को हटाना चाहते हैं?',
'delete': 'हटाएँ', 'delete': 'हटाएँ',
'cancel': 'रद्द करें', 'cancel': 'रद्द करें',
'time': 'शहर में समय', 'time': 'शहर में समय',
'validateName': 'कृपया नाम दर्ज करें', 'validateName': 'कृपया नाम दर्ज करें',
'measurements': 'मापन प्रणाली', 'measurements': 'मापन प्रणाली',
'degrees': 'डिग्री', 'degrees': 'डिग्री',
'celsius': 'सेल्सियस', 'celsius': 'सेल्सियस',
'fahrenheit': 'फ़ारेनहाइट', 'fahrenheit': 'फ़ारेनहाइट',
'imperial': 'इम्पीरियल', 'imperial': 'इम्पीरियल',
'metric': 'मीट्रिक', 'metric': 'मीट्रिक',
'validateValue': 'कृपया मान दर्ज करें', 'validateValue': 'कृपया मान दर्ज करें',
'validateNumber': 'कृपया एक मान्य संख्या दर्ज करें', 'validateNumber': 'कृपया एक मान्य संख्या दर्ज करें',
'validate90': 'मान -९० और ९० के बीच होना चाहिए', 'validate90': 'मान -९० और ९० के बीच होना चाहिए',
'validate180': 'मान -१८० और १८० के बीच होना चाहिए', 'validate180': 'मान -१८० और १८० के बीच होना चाहिए',
'notifications': 'सूचनाएं', 'notifications': 'सूचनाएं',
'sunrise': 'सूर्योदय', 'sunrise': 'सूर्योदय',
'sunset': 'सूर्यास्त', 'sunset': 'सूर्यास्त',
'timeformat': 'समय प्रारूप', 'timeformat': 'समय प्रारूप',
'12': '१२ घंटा', '12': '१२ घंटा',
'24': '२४ घंटा', '24': '२४ घंटा',
'cloudcover': 'बादलों का कवर', 'cloudcover': 'बादलों का कवर',
'uvIndex': 'यूवी-सूचकांक', 'uvIndex': 'यूवी-सूचकांक',
'materialColor': 'गतिशील रंग', 'materialColor': 'गतिशील रंग',
'uvLow': 'कम', 'uvLow': 'कम',
'uvAverage': 'माध्यम', 'uvAverage': 'माध्यम',
'uvHigh': 'उच्च', 'uvHigh': 'उच्च',
'uvVeryHigh': 'बहुत उच्च', 'uvVeryHigh': 'बहुत उच्च',
'uvExtreme': 'अत्यधिक', 'uvExtreme': 'अत्यधिक',
'weatherMore': '१२ - दिवसीय मौसम पूर', 'weatherMore': '१२ - दिवसीय मौसम पूर',
'windgusts': 'गुस्त', 'windgusts': 'गुस्त',
'north': 'उत्तर', 'north': 'उत्तर',
'northeast': 'उत्तर-पूर्व', 'northeast': 'उत्तर-पूर्व',
'east': 'पूर्व', 'east': 'पूर्व',
'southeast': 'दक्षिण-पूर्व', 'southeast': 'दक्षिण-पूर्व',
'south': 'दक्षिण', 'south': 'दक्षिण',
'southwest': 'दक्षिण-पश्चिम', 'southwest': 'दक्षिण-पश्चिम',
'west': 'पश्चिम', 'west': 'पश्चिम',
'northwest': 'उत्तर-पश्चिम', 'northwest': 'उत्तर-पश्चिम',
'project': 'परियोजना पर', 'project': 'परियोजना पर',
'version': 'एप्लिकेशन संस्करण', 'version': 'एप्लिकेशन संस्करण',
'precipitationProbability': 'वर्षा संभावना', 'precipitationProbability': 'वर्षा संभावना',
'apparentTemperatureMin': 'न्यूनतम प्रतीत तापमान', 'apparentTemperatureMin': 'न्यूनतम प्रतीत तापमान',
'apparentTemperatureMax': 'अधिकतम प्रतीत तापमान', 'apparentTemperatureMax': 'अधिकतम प्रतीत तापमान',
'amoledTheme': 'AMOLED थीम', 'amoledTheme': 'AMOLED थीम',
'appearance': 'दिखावट', 'appearance': 'दिखावट',
'functions': 'कार्य', 'functions': 'कार्य',
'data': 'डेटा', 'data': 'डेटा',
'language': 'भाषा', 'language': 'भाषा',
'timeRange': 'अवधि (घंटों में)', 'timeRange': 'अवधि (घंटों में)',
'timeStart': 'प्रारंभ समय', 'timeStart': 'प्रारंभ समय',
'timeEnd': 'समाप्ति समय', 'timeEnd': 'समाप्ति समय',
'support': 'समर्थन', 'support': 'समर्थन',
'system': 'सिस्टम', 'system': 'सिस्टम',
'dark': 'डार्क', 'dark': 'डार्क',
'light': 'लाइट', 'light': 'लाइट',
'license': 'लाइसेंस', 'license': 'लाइसेंस',
'widget': 'विजेट', 'widget': 'विजेट',
'widgetBackground': 'विजेट कि पृष्ठभूमि', 'widgetBackground': 'विजेट कि पृष्ठभूमि',
'widgetText': 'विजेट पाठ', 'widgetText': 'विजेट पाठ',
'dewpoint': 'बर्फ़ के बिंदु', 'dewpoint': 'बर्फ़ के बिंदु',
'shortwaveRadiation': 'शॉर्टवेव विकिरण', 'shortwaveRadiation': 'शॉर्टवेव विकिरण',
'roundDegree': 'डिग्री गोली मारें', 'roundDegree': 'डिग्री गोली मारें',
'settings_full': 'सेटिंग्स', 'settings_full': 'सेटिंग्स',
'cities': 'शहर', 'cities': 'शहर',
'searchMethod': 'खोज या स्थानगति का उपयोग करें', 'searchMethod': 'खोज या स्थानगति का उपयोग करें',
'done': 'किया', 'done': 'किया',
'groups': 'हमारे समूह', 'groups': 'हमारे समूह',
'openMeteo': 'Open-Meteo से डेटा (CC-BY 4.0)', 'openMeteo': 'Open-Meteo से डेटा (CC-BY 4.0)',
'hourlyVariables': 'घंटेवार मौसम चर', 'hourlyVariables': 'घंटेवार मौसम चर',
'dailyVariables': 'दैनिक मौसम चर', 'dailyVariables': 'दैनिक मौसम चर',
'largeElement': 'बड़े मौसम का प्रदर्शन', 'largeElement': 'बड़े मौसम का प्रदर्शन',
'map': 'मानचित्र', 'map': 'मानचित्र',
'clearCacheStore': 'कैश साफ़ करें', 'clearCacheStore': 'कैश साफ़ करें',
'deletedCacheStore': 'कैश साफ़ हो रहा है', 'deletedCacheStore': 'कैश साफ़ हो रहा है',
'deletedCacheStoreQuery': 'क्या आप वाकई कैश साफ़ करना चाहते हैं?', 'deletedCacheStoreQuery': 'क्या आप वाकई कैश साफ़ करना चाहते हैं?',
'addWidget': 'विजेट जोड़ें', 'addWidget': 'विजेट जोड़ें',
'hideMap': 'मानचित्र छिपाएँ', 'hideMap': 'मानचित्र छिपाएँ',
}; };
} }

View file

@ -1,143 +1,142 @@
class HuHu { class HuHu {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'Kezdés', 'start': 'Kezdés',
'description': 'description':
'Időjárás alkalmazás a friss óránkénti, napi és heti előrejelzéssel bármely helyszínre.', 'Időjárás alkalmazás a friss óránkénti, napi és heti előrejelzéssel bármely helyszínre.',
'name': 'Időjárás', 'name': 'Időjárás',
'name2': 'Kényelmes tervezés', 'name2': 'Kényelmes tervezés',
'name3': 'Kapcsolatfelvétel velünk', 'name3': 'Kapcsolatfelvétel velünk',
'description2': 'description2':
'Az összes navigáció úgy van kialakítva, hogy maximálisan kényelmes és gyors legyen az alkalmazással való interakció.', 'Az összes navigáció úgy van kialakítva, hogy maximálisan kényelmes és gyors legyen az alkalmazással való interakció.',
'description3': 'description3':
'Ha bármilyen problémája adódik, kérjük, lépjen kapcsolatba velünk e-mailben vagy az alkalmazás értékeléseiben.', 'Ha bármilyen problémája adódik, kérjük, lépjen kapcsolatba velünk e-mailben vagy az alkalmazás értékeléseiben.',
'next': 'Tovább', 'next': 'Tovább',
'search': 'Keresés...', 'search': 'Keresés...',
'loading': 'Betöltés...', 'loading': 'Betöltés...',
'searchCity': 'Keresse meg a városát', 'searchCity': 'Keresse meg a városát',
'humidity': 'Páratartalom', 'humidity': 'Páratartalom',
'wind': 'Szél', 'wind': 'Szél',
'visibility': 'Láthatóság', 'visibility': 'Láthatóság',
'feels': 'Hőérzet', 'feels': 'Hőérzet',
'evaporation': 'Párolgás', 'evaporation': 'Párolgás',
'precipitation': 'Csapadék', 'precipitation': 'Csapadék',
'direction': 'Irány', 'direction': 'Irány',
'pressure': 'Nyomás', 'pressure': 'Nyomás',
'rain': 'Eső', 'rain': 'Eső',
'clear_sky': 'Tiszta ég', 'clear_sky': 'Tiszta ég',
'cloudy': 'Felhős', 'cloudy': 'Felhős',
'overcast': 'Borult', 'overcast': 'Borult',
'fog': 'Köd', 'fog': 'Köd',
'drizzle': 'Szitálás', 'drizzle': 'Szitálás',
'drizzling_rain': 'Fagyos szitálás', 'drizzling_rain': 'Fagyos szitálás',
'freezing_rain': 'Fagyos eső', 'freezing_rain': 'Fagyos eső',
'heavy_rains': 'Zivataros záporok', 'heavy_rains': 'Zivataros záporok',
'snow': '', 'snow': '',
'thunderstorm': 'Zivatar', 'thunderstorm': 'Zivatar',
'kph': 'km/óra', 'kph': 'km/óra',
'mph': 'mph', 'mph': 'mph',
'm/s': 'm/s', 'm/s': 'm/s',
'mmHg': 'mmHg', 'mmHg': 'mmHg',
'mi': 'mérföld', 'mi': 'mérföld',
'km': 'km', 'km': 'km',
'inch': 'hüvelyk', 'inch': 'hüvelyk',
'mm': 'mm', 'mm': 'mm',
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Beállítások', 'settings': 'Beállítások',
'no_inter': 'Nincs internet', 'no_inter': 'Nincs internet',
'on_inter': 'on_inter': 'Kapcsolja be az internetet az időjárási adatok lekéréséhez.',
'Kapcsolja be az internetet az időjárási adatok lekéréséhez.', 'location': 'Hely',
'location': 'Hely', 'no_location':
'no_location': 'Engedélyezze a helyszolgáltatást az aktuális hely időjárásadatainak megszerzéséhez.',
'Engedélyezze a helyszolgáltatást az aktuális hely időjárásadatainak megszerzéséhez.', 'theme': 'Téma',
'theme': 'Téma', 'low': 'Alacsony',
'low': 'Alacsony', 'high': 'Magas',
'high': 'Magas', 'normal': 'Normál',
'normal': 'Normál', 'lat': 'Szélesség',
'lat': 'Szélesség', 'lon': 'Hosszúság',
'lon': 'Hosszúság', 'create': 'Létrehozás',
'create': 'Létrehozás', 'city': 'Város',
'city': 'Város', 'district': 'Kerület',
'district': 'Kerület', 'noWeatherCard': 'Adjon hozzá egy várost',
'noWeatherCard': 'Adjon hozzá egy várost', 'deletedCardWeather': 'Város törlése',
'deletedCardWeather': 'Város törlése', 'deletedCardWeatherQuery': 'Biztosan törölni szeretné a várost?',
'deletedCardWeatherQuery': 'Biztosan törölni szeretné a várost?', 'delete': 'Törlés',
'delete': 'Törlés', 'cancel': 'Mégse',
'cancel': 'Mégse', 'time': 'Idő a városban',
'time': 'Idő a városban', 'validateName': 'Kérjük, adja meg a nevet',
'validateName': 'Kérjük, adja meg a nevet', 'measurements': 'Mérési rendszer',
'measurements': 'Mérési rendszer', 'degrees': 'Fok',
'degrees': 'Fok', 'celsius': 'Celsius',
'celsius': 'Celsius', 'fahrenheit': 'Fahrenheit',
'fahrenheit': 'Fahrenheit', 'imperial': 'Angol mértékegység',
'imperial': 'Angol mértékegység', 'metric': 'Metrikus mértékegység',
'metric': 'Metrikus mértékegység', 'validateValue': 'Kérjük, adjon meg egy értéket',
'validateValue': 'Kérjük, adjon meg egy értéket', 'validateNumber': 'Kérjük, adjon meg érvényes számot',
'validateNumber': 'Kérjük, adjon meg érvényes számot', 'validate90': 'Az érték -90 és 90 közötti kell legyen',
'validate90': 'Az érték -90 és 90 közötti kell legyen', 'validate180': 'Az érték -180 és 180 közötti kell legyen',
'validate180': 'Az érték -180 és 180 közötti kell legyen', 'notifications': 'Értesítések',
'notifications': 'Értesítések', 'sunrise': 'Napkelte',
'sunrise': 'Napkelte', 'sunset': 'Napnyugta',
'sunset': 'Napnyugta', 'timeformat': 'Időformátum',
'timeformat': 'Időformátum', '12': '12 órás',
'12': '12 órás', '24': '24 órás',
'24': '24 órás', 'cloudcover': 'Felhőzet',
'cloudcover': 'Felhőzet', 'uvIndex': 'UV-index',
'uvIndex': 'UV-index', 'materialColor': 'Dinamikus színek',
'materialColor': 'Dinamikus színek', 'uvLow': 'Alacsony',
'uvLow': 'Alacsony', 'uvAverage': 'Mérsékelt',
'uvAverage': 'Mérsékelt', 'uvHigh': 'Magas',
'uvHigh': 'Magas', 'uvVeryHigh': 'Nagyon magas',
'uvVeryHigh': 'Nagyon magas', 'uvExtreme': 'Extrém',
'uvExtreme': 'Extrém', 'weatherMore': '12 napos időjárás előrejelzés',
'weatherMore': '12 napos időjárás előrejelzés', 'windgusts': 'Szélrohamok',
'windgusts': 'Szélrohamok', 'north': 'Észak',
'north': 'Észak', 'northeast': 'Északkelet',
'northeast': 'Északkelet', 'east': 'Kelet',
'east': 'Kelet', 'southeast': 'Délkelet',
'southeast': 'Délkelet', 'south': 'Dél',
'south': 'Dél', 'southwest': 'Délkelet',
'southwest': 'Délkelet', 'west': 'Nyugat',
'west': 'Nyugat', 'northwest': 'Északnyugat',
'northwest': 'Északnyugat', 'project': 'Projekt',
'project': 'Projekt', 'version': 'Alkalmazás verzió',
'version': 'Alkalmazás verzió', 'precipitationProbability': 'Csapadék valószínűsége',
'precipitationProbability': 'Csapadék valószínűsége', 'apparentTemperatureMin': 'Minimális látszólagos hőmérséklet',
'apparentTemperatureMin': 'Minimális látszólagos hőmérséklet', 'apparentTemperatureMax': 'Maximális látszólagos hőmérséklet',
'apparentTemperatureMax': 'Maximális látszólagos hőmérséklet', 'amoledTheme': 'AMOLED téma',
'amoledTheme': 'AMOLED téma', 'appearance': 'Megjelenés',
'appearance': 'Megjelenés', 'functions': 'Funkciók',
'functions': 'Funkciók', 'data': 'Adatok',
'data': 'Adatok', 'language': 'Nyelv',
'language': 'Nyelv', 'timeRange': 'Gyakoriság (órákban)',
'timeRange': 'Gyakoriság (órákban)', 'timeStart': 'Kezdési idő',
'timeStart': 'Kezdési idő', 'timeEnd': 'Befejezési idő',
'timeEnd': 'Befejezési idő', 'support': 'Támogatás',
'support': 'Támogatás', 'system': 'Rendszer',
'system': 'Rendszer', 'dark': 'Sötét',
'dark': 'Sötét', 'light': 'Világos',
'light': 'Világos', 'license': 'Licenc',
'license': 'Licenc', 'widget': 'Widget',
'widget': 'Widget', 'widgetBackground': 'Widget háttér',
'widgetBackground': 'Widget háttér', 'widgetText': 'Widget szöveg',
'widgetText': 'Widget szöveg', 'dewpoint': 'Harmatpont',
'dewpoint': 'Harmatpont', 'shortwaveRadiation': 'Rövidhullámú sugárzás',
'shortwaveRadiation': 'Rövidhullámú sugárzás', 'W/m2': 'W/m2',
'W/m2': 'W/m2', 'roundDegree': 'Fokok Kerekítése',
'roundDegree': 'Fokok Kerekítése', 'settings_full': 'Beállítások',
'settings_full': 'Beállítások', 'cities': 'Városok',
'cities': 'Városok', 'searchMethod': 'Használja a keresést vagy a földrajzi helyet',
'searchMethod': 'Használja a keresést vagy a földrajzi helyet', 'done': 'Kész',
'done': 'Kész', 'groups': 'Csoportjaink',
'groups': 'Csoportjaink', 'openMeteo': 'Adatok az Open-Meteo-tól (CC-BY 4.0)',
'openMeteo': 'Adatok az Open-Meteo-tól (CC-BY 4.0)', 'hourlyVariables': 'Óránkénti időjárási változók',
'hourlyVariables': 'Óránkénti időjárási változók', 'dailyVariables': 'Napi időjárási változók',
'dailyVariables': 'Napi időjárási változók', 'largeElement': 'Nagy méretű időjárás megjelenítése',
'largeElement': 'Nagy méretű időjárás megjelenítése', 'map': 'Térkép',
'map': 'Térkép', 'clearCacheStore': 'Gyorsítótár törlése',
'clearCacheStore': 'Gyorsítótár törlése', 'deletedCacheStore': 'Gyorsítótár törlése folyamatban',
'deletedCacheStore': 'Gyorsítótár törlése folyamatban', 'deletedCacheStoreQuery': 'Biztosan törölni szeretné a gyorsítótárat?',
'deletedCacheStoreQuery': 'Biztosan törölni szeretné a gyorsítótárat?', 'addWidget': 'Widget hozzáadása',
'addWidget': 'Widget hozzáadása', 'hideMap': 'Térkép elrejtése',
'hideMap': 'Térkép elrejtése', };
};
} }

View file

@ -1,143 +1,141 @@
class ItIt { class ItIt {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'Clicca per iniziare', 'start': 'Clicca per iniziare',
'description': 'description':
'Applicazione meteo con una previsione aggiornata per ogni ora, giorno e settimana per qualsiasi luogo.', 'Applicazione meteo con una previsione aggiornata per ogni ora, giorno e settimana per qualsiasi luogo.',
'name': 'Meteo', 'name': 'Meteo',
'name2': 'Design comodo', 'name2': 'Design comodo',
'name3': 'Contattaci', 'name3': 'Contattaci',
'description2': 'description2':
'Tutta la navigazione è progettata per interagire con l\'applicazione nel modo più comodo e veloce possibile.', 'Tutta la navigazione è progettata per interagire con l\'applicazione nel modo più comodo e veloce possibile.',
'description3': 'description3':
'Se incontri problemi, contattaci via email o nelle recensioni dell\'applicazione.', 'Se incontri problemi, contattaci via email o nelle recensioni dell\'applicazione.',
'next': 'Avanti', 'next': 'Avanti',
'search': 'Cerca...', 'search': 'Cerca...',
'loading': 'Caricamento...', 'loading': 'Caricamento...',
'searchCity': 'Trova la tua città', 'searchCity': 'Trova la tua città',
'humidity': 'Umidità', 'humidity': 'Umidità',
'wind': 'Vento', 'wind': 'Vento',
'visibility': 'Visibilità', 'visibility': 'Visibilità',
'feels': 'Percepiti', 'feels': 'Percepiti',
'evaporation': 'Evaporazione', 'evaporation': 'Evaporazione',
'precipitation': 'Precipitazione', 'precipitation': 'Precipitazione',
'direction': 'Direzione', 'direction': 'Direzione',
'pressure': 'Pressione', 'pressure': 'Pressione',
'rain': 'Pioggia', 'rain': 'Pioggia',
'clear_sky': 'Sereno', 'clear_sky': 'Sereno',
'cloudy': 'Nuvoloso', 'cloudy': 'Nuvoloso',
'overcast': 'Coperto', 'overcast': 'Coperto',
'fog': 'Nebbia', 'fog': 'Nebbia',
'drizzle': 'Pioggerella', 'drizzle': 'Pioggerella',
'drizzling_rain': 'Pioggerella Gelata', 'drizzling_rain': 'Pioggerella Gelata',
'freezing_rain': 'Pioggia Gelata', 'freezing_rain': 'Pioggia Gelata',
'heavy_rains': 'Acquazzone', 'heavy_rains': 'Acquazzone',
'snow': 'Neve', 'snow': 'Neve',
'thunderstorm': 'Temporale', 'thunderstorm': 'Temporale',
'kph': 'km/h', 'kph': 'km/h',
'mph': 'mph', 'mph': 'mph',
'm/s': 'm/s', 'm/s': 'm/s',
'mmHg': 'mmHg', 'mmHg': 'mmHg',
'mi': 'mi', 'mi': 'mi',
'km': 'km', 'km': 'km',
'inch': 'inch', 'inch': 'inch',
'mm': 'mm', 'mm': 'mm',
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Imposta.', 'settings': 'Imposta.',
'no_inter': 'Non c\'è connessione Internet', 'no_inter': 'Non c\'è connessione Internet',
'on_inter': 'on_inter': 'Attiva la connessione Internet per avere dati meteorologici.',
'Attiva la connessione Internet per avere dati meteorologici.', 'location': 'Posizione',
'location': 'Posizione', 'no_location':
'no_location': 'Abilita il servizio di localizzazione per ottenere i dati meteo per la posizione corrente.',
'Abilita il servizio di localizzazione per ottenere i dati meteo per la posizione corrente.', 'theme': 'Tema',
'theme': 'Tema', 'low': 'Basso',
'low': 'Basso', 'high': 'Alto',
'high': 'Alto', 'normal': 'Normale',
'normal': 'Normale', 'lat': 'Latitudine',
'lat': 'Latitudine', 'lon': 'Longitudine',
'lon': 'Longitudine', 'create': 'Creare',
'create': 'Creare', 'city': 'Città',
'city': 'Città', 'district': 'Regione',
'district': 'Regione', 'noWeatherCard': 'Aggiungi una città',
'noWeatherCard': 'Aggiungi una città', 'deletedCardWeather': 'Rimozione della città',
'deletedCardWeather': 'Rimozione della città', 'deletedCardWeatherQuery': 'Sei sicuro di voler rimuovere questa città?',
'deletedCardWeatherQuery': 'delete': 'Elimina',
'Sei sicuro di voler rimuovere questa città?', 'cancel': 'Annulla',
'delete': 'Elimina', 'time': 'Orario locale',
'cancel': 'Annulla', 'validateName': 'Si prega di inserire il nome',
'time': 'Orario locale', 'measurements': 'Sistema di misure',
'validateName': 'Si prega di inserire il nome', 'degrees': 'Gradi',
'measurements': 'Sistema di misure', 'celsius': 'Celsius',
'degrees': 'Gradi', 'fahrenheit': 'Fahrenheit',
'celsius': 'Celsius', 'imperial': 'Imperiale',
'fahrenheit': 'Fahrenheit', 'metric': 'Metrico',
'imperial': 'Imperiale', 'validateValue': 'Si prega di inserire il valore',
'metric': 'Metrico', 'validateNumber': 'Si prega di inserire il numero',
'validateValue': 'Si prega di inserire il valore', 'validate90': 'Il valore deve essere compreso tra -90 e 90',
'validateNumber': 'Si prega di inserire il numero', 'validate180': 'Il valore deve essere compreso tra -180 e 180',
'validate90': 'Il valore deve essere compreso tra -90 e 90', 'notifications': 'Notifiche',
'validate180': 'Il valore deve essere compreso tra -180 e 180', 'sunrise': 'Alba',
'notifications': 'Notifiche', 'sunset': 'Tramonto',
'sunrise': 'Alba', 'timeformat': 'Formato ora',
'sunset': 'Tramonto', '12': '12 ore',
'timeformat': 'Formato ora', '24': '24 ore',
'12': '12 ore', 'cloudcover': 'Copertura nuvolosa',
'24': '24 ore', 'uvIndex': 'Indice UV',
'cloudcover': 'Copertura nuvolosa', 'materialColor': 'Colori Dinamici',
'uvIndex': 'Indice UV', 'uvLow': 'Basso',
'materialColor': 'Colori Dinamici', 'uvAverage': 'Moderato',
'uvLow': 'Basso', 'uvHigh': 'Alto',
'uvAverage': 'Moderato', 'uvVeryHigh': 'Molto alto',
'uvHigh': 'Alto', 'uvExtreme': 'Estremo',
'uvVeryHigh': 'Molto alto', 'weatherMore': 'Previsioni del tempo per 12 giorni',
'uvExtreme': 'Estremo', 'windgusts': 'Raffica',
'weatherMore': 'Previsioni del tempo per 12 giorni', 'north': 'Nord',
'windgusts': 'Raffica', 'northeast': 'Nord-est',
'north': 'Nord', 'east': 'Est',
'northeast': 'Nord-est', 'southeast': 'Sud-est',
'east': 'Est', 'south': 'Sud',
'southeast': 'Sud-est', 'southwest': 'Sud-ovest',
'south': 'Sud', 'west': 'Ovest',
'southwest': 'Sud-ovest', 'northwest': 'Nord-ovest',
'west': 'Ovest', 'project': 'Progetto su',
'northwest': 'Nord-ovest', 'version': 'Versione dell\'applicazione',
'project': 'Progetto su', 'precipitationProbability': 'Probabilità di precipitazione',
'version': 'Versione dell\'applicazione', 'apparentTemperatureMin': 'Temperatura minima percepita',
'precipitationProbability': 'Probabilità di precipitazione', 'apparentTemperatureMax': 'Temperatura massima percepita',
'apparentTemperatureMin': 'Temperatura minima percepita', 'amoledTheme': 'AMOLED-tema',
'apparentTemperatureMax': 'Temperatura massima percepita', 'appearance': 'Aspetto',
'amoledTheme': 'AMOLED-tema', 'functions': 'Funzioni',
'appearance': 'Aspetto', 'data': 'Dati',
'functions': 'Funzioni', 'language': 'Lingua',
'data': 'Dati', 'timeRange': 'Frequenza (in ore)',
'language': 'Lingua', 'timeStart': 'Ora di inizio',
'timeRange': 'Frequenza (in ore)', 'timeEnd': 'Ora di fine',
'timeStart': 'Ora di inizio', 'support': 'Supporto',
'timeEnd': 'Ora di fine', 'system': 'Sistema',
'support': 'Supporto', 'dark': 'Scuro',
'system': 'Sistema', 'light': 'Chiaro',
'dark': 'Scuro', 'license': 'Licenze',
'light': 'Chiaro', 'widget': 'Widget',
'license': 'Licenze', 'widgetBackground': 'Sfondo del widget',
'widget': 'Widget', 'widgetText': 'Testo del widget',
'widgetBackground': 'Sfondo del widget', 'dewpoint': 'Punto di rugiada',
'widgetText': 'Testo del widget', 'shortwaveRadiation': 'Radiazione a onde corte',
'dewpoint': 'Punto di rugiada', 'roundDegree': 'Arrotonda i gradi',
'shortwaveRadiation': 'Radiazione a onde corte', 'settings_full': 'Impostazioni',
'roundDegree': 'Arrotonda i gradi', 'cities': 'Città',
'settings_full': 'Impostazioni', 'searchMethod': 'Utilizza la ricerca o la geolocalizzazione',
'cities': 'Città', 'done': 'Fatto',
'searchMethod': 'Utilizza la ricerca o la geolocalizzazione', 'groups': 'I nostri gruppi',
'done': 'Fatto', 'openMeteo': 'Dati da Open-Meteo (CC-BY 4.0)',
'groups': 'I nostri gruppi', 'hourlyVariables': 'Variabili meteorologiche orarie',
'openMeteo': 'Dati da Open-Meteo (CC-BY 4.0)', 'dailyVariables': 'Variabili meteorologiche giornaliere',
'hourlyVariables': 'Variabili meteorologiche orarie', 'largeElement': 'Visualizzazione grande elemento meteo',
'dailyVariables': 'Variabili meteorologiche giornaliere', 'map': 'Mappa',
'largeElement': 'Visualizzazione grande elemento meteo', 'clearCacheStore': 'Cancella cache',
'map': 'Mappa', 'deletedCacheStore': 'Cancellazione della cache',
'clearCacheStore': 'Cancella cache', 'deletedCacheStoreQuery': 'Sei sicuro di voler cancellare la cache?',
'deletedCacheStore': 'Cancellazione della cache', 'addWidget': 'Aggiungi widget',
'deletedCacheStoreQuery': 'Sei sicuro di voler cancellare la cache?', 'hideMap': 'Nascondi mappa',
'addWidget': 'Aggiungi widget', };
'hideMap': 'Nascondi mappa',
};
} }

View file

@ -1,143 +1,141 @@
class KaGe { class KaGe {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'დაიწყე', 'start': 'დაიწყე',
'description': 'description':
'აპლიკაცია ამჟამად პროგნოზით ყოველ საათზე, დღეზე და კვირაზე ნებისმიერ ადგილისთვის.', 'აპლიკაცია ამჟამად პროგნოზით ყოველ საათზე, დღეზე და კვირაზე ნებისმიერ ადგილისთვის.',
'name': 'ამინდი', 'name': 'ამინდი',
'name2': 'მართვის კომფორტი', 'name2': 'მართვის კომფორტი',
'name3': 'შეგვეხმიანე', 'name3': 'შეგვეხმიანე',
'description2': 'description2':
'ყველა ნავიგაცია შექმნილია ისე, რომ შეგიძლიათ მაქსიმალურად კომფორტულად და სწრაფად იქონოთ აპლიკაციით.', 'ყველა ნავიგაცია შექმნილია ისე, რომ შეგიძლიათ მაქსიმალურად კომფორტულად და სწრაფად იქონოთ აპლიკაციით.',
'description3': 'description3':
'თუ გექნებათ ნებისმიერი პრობლემა, გთხოვთ, დაგვეკონტაქტოთ ელ-ფოსტით ან აპლიკაციის მიმოხილვის გვერდზე.', 'თუ გექნებათ ნებისმიერი პრობლემა, გთხოვთ, დაგვეკონტაქტოთ ელ-ფოსტით ან აპლიკაციის მიმოხილვის გვერდზე.',
'next': 'შემდეგ', 'next': 'შემდეგ',
'search': 'ძიება...', 'search': 'ძიება...',
'loading': 'დატვირთვა...', 'loading': 'დატვირთვა...',
'searchCity': 'იპოვეთ თქვენი ქალაქი', 'searchCity': 'იპოვეთ თქვენი ქალაქი',
'humidity': 'ტენიანობა', 'humidity': 'ტენიანობა',
'wind': 'ქარი', 'wind': 'ქარი',
'visibility': 'ხილვადობა', 'visibility': 'ხილვადობა',
'feels': 'გრძნობს', 'feels': 'გრძნობს',
'evaporation': 'აორთქლება', 'evaporation': 'აორთქლება',
'precipitation': 'ნალექი', 'precipitation': 'ნალექი',
'direction': 'მიმართულება', 'direction': 'მიმართულება',
'pressure': 'წნევა', 'pressure': 'წნევა',
'rain': 'წვიმა', 'rain': 'წვიმა',
'clear_sky': 'წმინდა ცა', 'clear_sky': 'წმინდა ცა',
'cloudy': 'მოღრუბლული', 'cloudy': 'მოღრუბლული',
'overcast': 'მოსაწყენი', 'overcast': 'მოსაწყენი',
'fog': 'ნისლი', 'fog': 'ნისლი',
'drizzle': 'წვიმა', 'drizzle': 'წვიმა',
'drizzling_rain': 'დრიზლინგი წვიმა', 'drizzling_rain': 'დრიზლინგი წვიმა',
'freezing_rain': 'გაყინვის წვიმა', 'freezing_rain': 'გაყინვის წვიმა',
'heavy_rains': 'ძლიერი წვიმები', 'heavy_rains': 'ძლიერი წვიმები',
'snow': 'თოვლი', 'snow': 'თოვლი',
'thunderstorm': 'ჭექა-ქუხილი', 'thunderstorm': 'ჭექა-ქუხილი',
'kph': 'კმ/სთ', 'kph': 'კმ/სთ',
'mph': 'მილი/სთ', 'mph': 'მილი/სთ',
'm/s': 'მ/წმ', 'm/s': 'მ/წმ',
'mmHg': 'მმHg', 'mmHg': 'მმHg',
'mi': 'მილი', 'mi': 'მილი',
'km': 'კმ', 'km': 'კმ',
'inch': 'ინჩი', 'inch': 'ინჩი',
'mm': 'მმ', 'mm': 'მმ',
'hPa': 'ჰპა', 'hPa': 'ჰპა',
'settings': 'პარამ.', 'settings': 'პარამ.',
'no_inter': 'ინტერნეტი არ არის', 'no_inter': 'ინტერნეტი არ არის',
'on_inter': 'ჩართეთ ინტერნეტი მეტეოროლოგიური მონაცემების მისაღებად.', 'on_inter': 'ჩართეთ ინტერნეტი მეტეოროლოგიური მონაცემების მისაღებად.',
'location': 'ადგილმდებარეობა', 'location': 'ადგილმდებარეობა',
'no_location': 'no_location':
'ჩართეთ მდებარეობის სერვისი, რომ მიიღოთ ამინდის მონაცემები მიმდინარე ადგილმდებარეობისთვის.', 'ჩართეთ მდებარეობის სერვისი, რომ მიიღოთ ამინდის მონაცემები მიმდინარე ადგილმდებარეობისთვის.',
'theme': 'თემა', 'theme': 'თემა',
'low': 'დაბალი', 'low': 'დაბალი',
'high': 'მაღალი', 'high': 'მაღალი',
'normal': 'ნორმალური', 'normal': 'ნორმალური',
'lat': 'სიგანე', 'lat': 'სიგანე',
'lon': 'გრძედი', 'lon': 'გრძედი',
'create': 'შექმნა', 'create': 'შექმნა',
'city': 'ქალაქი', 'city': 'ქალაქი',
'district': 'რაიონი', 'district': 'რაიონი',
'noWeatherCard': 'დაამატეთ ქალაქი', 'noWeatherCard': 'დაამატეთ ქალაქი',
'deletedCardWeather': 'ქალაქის წაშლა', 'deletedCardWeather': 'ქალაქის წაშლა',
'deletedCardWeatherQuery': 'deletedCardWeatherQuery': 'დარწმუნებული ხართ, რომ გსურთ ქალაქის წაშლა?',
'დარწმუნებული ხართ, რომ გსურთ ქალაქის წაშლა?', 'delete': 'ამოღება',
'delete': 'ამოღება', 'cancel': 'გაუქმება',
'cancel': 'გაუქმება', 'time': 'დრო ქალაქში',
'time': 'დრო ქალაქში', 'validateName': 'გთხოვთ შეიყვანოთ სახელი',
'validateName': 'გთხოვთ შეიყვანოთ სახელი', 'measurements': 'საზომი სისტემა',
'measurements': 'საზომი სისტემა', 'degrees': 'გრადუსი',
'degrees': 'გრადუსი', 'celsius': 'ცელსიუსი',
'celsius': 'ცელსიუსი', 'fahrenheit': 'ფარენჰაიტი',
'fahrenheit': 'ფარენჰაიტი', 'imperial': 'იმპერიული',
'imperial': 'იმპერიული', 'metric': 'მეტრული',
'metric': 'მეტრული', 'validateValue': 'გთხოვთ შეიყვანოთ მნიშვნელობა',
'validateValue': 'გთხოვთ შეიყვანოთ მნიშვნელობა', 'validateNumber': 'გთხოვთ შეიყვანოთ ნომერი',
'validateNumber': 'გთხოვთ შეიყვანოთ ნომერი', 'validate90': 'მნიშვნელობა უნდა იყოს -90-დან 90-მდე',
'validate90': 'მნიშვნელობა უნდა იყოს -90-დან 90-მდე', 'validate180': 'მნიშვნელობა უნდა იყოს -180-დან 180-მდე',
'validate180': 'მნიშვნელობა უნდა იყოს -180-დან 180-მდე', 'notifications': 'შეტყობინებები',
'notifications': 'შეტყობინებები', 'sunrise': 'მზის ამოსვლა',
'sunrise': 'მზის ამოსვლა', 'sunset': 'მზის ჩასვლა',
'sunset': 'მზის ჩასვლა', 'timeformat': 'დროის ფორმატი',
'timeformat': 'დროის ფორმატი', '12': '12-საათი',
'12': '12-საათი', '24': '24-საათი',
'24': '24-საათი', 'cloudcover': 'ღრუბლის საფარი',
'cloudcover': 'ღრუბლის საფარი', 'uvIndex': 'UV-ინდექსი',
'uvIndex': 'UV-ინდექსი', 'materialColor': 'დინამიური ფერები',
'materialColor': 'დინამიური ფერები', 'uvLow': 'დაბალი',
'uvLow': 'დაბალი', 'uvAverage': 'ზომიერი',
'uvAverage': 'ზომიერი', 'uvHigh': 'მაღალი',
'uvHigh': 'მაღალი', 'uvVeryHigh': 'ძალიან მაღალი',
'uvVeryHigh': 'ძალიან მაღალი', 'uvExtreme': 'ძლევა ზედა',
'uvExtreme': 'ძლევა ზედა', 'weatherMore': '12-დღიანი ამინდის პროგნოზი',
'weatherMore': '12-დღიანი ამინდის პროგნოზი', 'windgusts': 'ნაკადი',
'windgusts': 'ნაკადი', 'north': 'ჩრდილოეთი',
'north': 'ჩრდილოეთი', 'northeast': 'ჩრდილო-აღმოსავლეთი',
'northeast': 'ჩრდილო-აღმოსავლეთი', 'east': 'აღმოსავლეთი',
'east': 'აღმოსავლეთი', 'southeast': 'სამხრეთ-აღმოსავლეთი',
'southeast': 'სამხრეთ-აღმოსავლეთი', 'south': 'სამხრეთი',
'south': 'სამხრეთი', 'southwest': 'სამხრეთ-დასავლეთი',
'southwest': 'სამხრეთ-დასავლეთი', 'west': 'დასავლეთი',
'west': 'დასავლეთი', 'northwest': 'ჩრდილო-დასავლეთი',
'northwest': 'ჩრდილო-დასავლეთი', 'project': 'პროექტი ჩართულია',
'project': 'პროექტი ჩართულია', 'version': 'განაცხადის ვერსია',
'version': 'განაცხადის ვერსია', 'precipitationProbability': 'ნალექების ალბათობა',
'precipitationProbability': 'ნალექების ალბათობა', 'apparentTemperatureMin': 'მინიმალური აშკარა ტემპერატურა',
'apparentTemperatureMin': 'მინიმალური აშკარა ტემპერატურა', 'apparentTemperatureMax': 'მაქსიმალური აშკარა ტემპერატურა',
'apparentTemperatureMax': 'მაქსიმალური აშკარა ტემპერატურა', 'amoledTheme': 'AMOLED-თემა',
'amoledTheme': 'AMOLED-თემა', 'appearance': 'გარეგნობა',
'appearance': 'გარეგნობა', 'functions': 'ფუნქციები',
'functions': 'ფუნქციები', 'data': 'მონაცემები',
'data': 'მონაცემები', 'language': 'ენა',
'language': 'ენა', 'timeRange': 'სიხშირე (საათებში)',
'timeRange': 'სიხშირე (საათებში)', 'timeStart': 'დაწყების დრო',
'timeStart': 'დაწყების დრო', 'timeEnd': 'დასრულების დრო',
'timeEnd': 'დასრულების დრო', 'support': 'მხარდაჭერა',
'support': 'მხარდაჭერა', 'system': 'სისტემა',
'system': 'სისტემა', 'dark': 'ბნელი',
'dark': 'ბნელი', 'light': 'სინათლე',
'light': 'სინათლე', 'license': 'ლიცენზიები',
'license': 'ლიცენზიები', 'widget': 'ვიჯეტი',
'widget': 'ვიჯეტი', 'widgetBackground': 'ვიჯეტის ფონი',
'widgetBackground': 'ვიჯეტის ფონი', 'widgetText': 'ვიჯეტის ტექსტი',
'widgetText': 'ვიჯეტის ტექსტი', 'dewpoint': 'დევპოინტი',
'dewpoint': 'დევპოინტი', 'shortwaveRadiation': 'მოკლე ტალღის გამოსხივება',
'shortwaveRadiation': 'მოკლე ტალღის გამოსხივება', 'roundDegree': 'ხარისხი მიჯნურობა',
'roundDegree': 'ხარისხი მიჯნურობა', 'settings_full': 'პარამეტრები',
'settings_full': 'პარამეტრები', 'cities': 'ქალაქები',
'cities': 'ქალაქები', 'searchMethod': 'გამოიყენეთ ძებნა ან გეოლოკაცია',
'searchMethod': 'გამოიყენეთ ძებნა ან გეოლოკაცია', 'done': 'დასრულებულია',
'done': 'დასრულებულია', 'groups': 'ჩვენი ჯგუფები',
'groups': 'ჩვენი ჯგუფები', 'openMeteo': 'მონაცემები Open-Meteo-დან (CC-BY 4.0)',
'openMeteo': 'მონაცემები Open-Meteo-დან (CC-BY 4.0)', 'hourlyVariables': 'საათობრივი ამინდის ცვლადები',
'hourlyVariables': 'საათობრივი ამინდის ცვლადები', 'dailyVariables': 'ყოველდღიური ამინდის ცვლადები',
'dailyVariables': 'ყოველდღიური ამინდის ცვლადები', 'largeElement': 'გადიდი ამინდის გამოჩენა',
'largeElement': 'გადიდი ამინდის გამოჩენა', 'map': 'რუკა',
'map': 'რუკა', 'clearCacheStore': 'ქეშის გასუფთავება',
'clearCacheStore': 'ქეშის გასუფთავება', 'deletedCacheStore': 'ქეშის გასუფთავება მიმდინარეობს',
'deletedCacheStore': 'ქეშის გასუფთავება მიმდინარეობს', 'deletedCacheStoreQuery': 'დარწმუნებული ხართ, რომ გსურთ ქეშის გასუფთავება?',
'deletedCacheStoreQuery': 'addWidget': 'ვიდჯეტის დამატება',
'დარწმუნებული ხართ, რომ გსურთ ქეშის გასუფთავება?', 'hideMap': 'რუკის დამალვა',
'addWidget': 'ვიდჯეტის დამატება', };
'hideMap': 'რუკის დამალვა',
};
} }

View file

@ -1,138 +1,138 @@
class KoKr { class KoKr {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': '시작하기', 'start': '시작하기',
'description': '어떤 곳이든, 어느 순간이든, 날씨를 확인하세요.', 'description': '어떤 곳이든, 어느 순간이든, 날씨를 확인하세요.',
'name': '날씨', 'name': '날씨',
'name2': '편리한 디자인', 'name2': '편리한 디자인',
'name3': '문의하기', 'name3': '문의하기',
'description2': '모든 내비게이션은 가능한 한 편리하고 빠르게 애플리케이션과 상호 작용하도록 설계되었습니다.', 'description2': '모든 내비게이션은 가능한 한 편리하고 빠르게 애플리케이션과 상호 작용하도록 설계되었습니다.',
'description3': '어떤 오류가 발생했다면, 이메일 또는 앱 리뷰로 문의해주세요.', 'description3': '어떤 오류가 발생했다면, 이메일 또는 앱 리뷰로 문의해주세요.',
'next': '다음', 'next': '다음',
'search': '검색...', 'search': '검색...',
'loading': '로딩 중...', 'loading': '로딩 중...',
'searchCity': '도시를 찾아보세요', 'searchCity': '도시를 찾아보세요',
'humidity': '습도', 'humidity': '습도',
'wind': '풍속', 'wind': '풍속',
'visibility': '가시거리', 'visibility': '가시거리',
'feels': '체감 온도', 'feels': '체감 온도',
'evaporation': '증발량', 'evaporation': '증발량',
'precipitation': '강수량', 'precipitation': '강수량',
'direction': '풍향', 'direction': '풍향',
'pressure': '기압', 'pressure': '기압',
'rain': '', 'rain': '',
'clear_sky': '맑음', 'clear_sky': '맑음',
'cloudy': '구름 조금', 'cloudy': '구름 조금',
'overcast': '구름 많음', 'overcast': '구름 많음',
'fog': '안개', 'fog': '안개',
'drizzle': '이슬비', 'drizzle': '이슬비',
'drizzling_rain': '얼어붙은 이슬비', 'drizzling_rain': '얼어붙은 이슬비',
'freezing_rain': '얼어붙는 비', 'freezing_rain': '얼어붙는 비',
'heavy_rains': '폭우', 'heavy_rains': '폭우',
'snow': '', 'snow': '',
'thunderstorm': '천둥번개', 'thunderstorm': '천둥번개',
'kph': 'km/h', 'kph': 'km/h',
'mph': 'mph', 'mph': 'mph',
'm/s': '미터/초', 'm/s': '미터/초',
'mmHg': '밀리미터 수은주', 'mmHg': '밀리미터 수은주',
'mi': 'mi', 'mi': 'mi',
'km': 'km', 'km': 'km',
'inch': '인치', 'inch': '인치',
'mm': 'mm', 'mm': 'mm',
'hPa': 'hPa', 'hPa': 'hPa',
'settings': '설정', 'settings': '설정',
'no_inter': '인터넷 없음', 'no_inter': '인터넷 없음',
'on_inter': '현재 위치에 대한 정보를 얻기 위해서는 인터넷이 필요합니다.', 'on_inter': '현재 위치에 대한 정보를 얻기 위해서는 인터넷이 필요합니다.',
'location': '위치', 'location': '위치',
'no_location': '현재 위치에 대한 정보를 얻기 위해서는 위치 서비스를 활성화해야 합니다.', 'no_location': '현재 위치에 대한 정보를 얻기 위해서는 위치 서비스를 활성화해야 합니다.',
'theme': '테마', 'theme': '테마',
'low': '낮음', 'low': '낮음',
'high': '높음', 'high': '높음',
'normal': '보통', 'normal': '보통',
'lat': '위도', 'lat': '위도',
'lon': '경도', 'lon': '경도',
'create': '만들기', 'create': '만들기',
'city': '도시', 'city': '도시',
'district': '지역', 'district': '지역',
'noWeatherCard': '도시를 추가하세요', 'noWeatherCard': '도시를 추가하세요',
'deletedCardWeather': '도시 삭제하기', 'deletedCardWeather': '도시 삭제하기',
'deletedCardWeatherQuery': '정말로 이 도시를 삭제하시겠나요?', 'deletedCardWeatherQuery': '정말로 이 도시를 삭제하시겠나요?',
'delete': '삭제', 'delete': '삭제',
'cancel': '취소', 'cancel': '취소',
'time': '도시 시간', 'time': '도시 시간',
'validateName': '이름을 입력해주세요', 'validateName': '이름을 입력해주세요',
'measurements': '표시 방식', 'measurements': '표시 방식',
'degrees': '', 'degrees': '',
'celsius': '섭씨', 'celsius': '섭씨',
'fahrenheit': '화씨', 'fahrenheit': '화씨',
'imperial': '인치', 'imperial': '인치',
'metric': '미터', 'metric': '미터',
'validateValue': '값을 입력해주세요', 'validateValue': '값을 입력해주세요',
'validateNumber': '올바른 숫자를 입력해주세요', 'validateNumber': '올바른 숫자를 입력해주세요',
'validate90': '-90과 90 사이의 값만 가능합니다', 'validate90': '-90과 90 사이의 값만 가능합니다',
'validate180': '-180과 180 사이의 값만 가능합니다', 'validate180': '-180과 180 사이의 값만 가능합니다',
'notifications': '알림', 'notifications': '알림',
'sunrise': '일출', 'sunrise': '일출',
'sunset': '일몰', 'sunset': '일몰',
'timeformat': '시간 형식', 'timeformat': '시간 형식',
'12': '12시간', '12': '12시간',
'24': '24시간', '24': '24시간',
'cloudcover': '구름', 'cloudcover': '구름',
'uvIndex': 'UV 정도', 'uvIndex': 'UV 정도',
'materialColor': '동적 색상', 'materialColor': '동적 색상',
'uvLow': '낮음', 'uvLow': '낮음',
'uvAverage': '보통', 'uvAverage': '보통',
'uvHigh': '높은', 'uvHigh': '높은',
'uvVeryHigh': '매우 높음', 'uvVeryHigh': '매우 높음',
'uvExtreme': '엄청남!', 'uvExtreme': '엄청남!',
'weatherMore': '12일 일기 예보', 'weatherMore': '12일 일기 예보',
'windgusts': '돌풍', 'windgusts': '돌풍',
'north': '', 'north': '',
'northeast': '북동', 'northeast': '북동',
'east': '', 'east': '',
'southeast': '남동', 'southeast': '남동',
'south': '', 'south': '',
'southwest': '남서', 'southwest': '남서',
'west': '', 'west': '',
'northwest': '북서', 'northwest': '북서',
'project': '프로젝트 위치:', 'project': '프로젝트 위치:',
'version': '버전', 'version': '버전',
'precipitationProbability': '깅수 확률', 'precipitationProbability': '깅수 확률',
'apparentTemperatureMin': '최저 기온', 'apparentTemperatureMin': '최저 기온',
'apparentTemperatureMax': '최고 기온', 'apparentTemperatureMax': '최고 기온',
'amoledTheme': 'AMOLED-테마', 'amoledTheme': 'AMOLED-테마',
'appearance': '디자인', 'appearance': '디자인',
'functions': '기능', 'functions': '기능',
'data': '데이터', 'data': '데이터',
'language': '언어', 'language': '언어',
'timeRange': '빈도 (시간 단위)', 'timeRange': '빈도 (시간 단위)',
'timeStart': '시작 시간', 'timeStart': '시작 시간',
'timeEnd': '종료 시간', 'timeEnd': '종료 시간',
'support': '후원하기', 'support': '후원하기',
'system': '시스템', 'system': '시스템',
'dark': '어두운', 'dark': '어두운',
'light': '밝은', 'light': '밝은',
'license': '라이선스', 'license': '라이선스',
'widget': '위젯', 'widget': '위젯',
'widgetBackground': '위젯 배경', 'widgetBackground': '위젯 배경',
'widgetText': '위젯 텍스트', 'widgetText': '위젯 텍스트',
'dewpoint': '이슬점', 'dewpoint': '이슬점',
'shortwaveRadiation': '단파 복사', 'shortwaveRadiation': '단파 복사',
'W/m2': 'W/m2', 'W/m2': 'W/m2',
'roundDegree': '온도 반올림', 'roundDegree': '온도 반올림',
'settings_full': '설정', 'settings_full': '설정',
'cities': '도시', 'cities': '도시',
'searchMethod': '검색 또는 지리적 위치를 사용하세요', 'searchMethod': '검색 또는 지리적 위치를 사용하세요',
'done': '완료', 'done': '완료',
'groups': '우리 그룹', 'groups': '우리 그룹',
'openMeteo': 'Open-Meteo의 데이터 (CC-BY 4.0)', 'openMeteo': 'Open-Meteo의 데이터 (CC-BY 4.0)',
'hourlyVariables': '시간별 날씨 변수', 'hourlyVariables': '시간별 날씨 변수',
'dailyVariables': '일별 날씨 변수', 'dailyVariables': '일별 날씨 변수',
'largeElement': '큰 날씨 표시', 'largeElement': '큰 날씨 표시',
'map': '지도', 'map': '지도',
'clearCacheStore': '캐시 지우기', 'clearCacheStore': '캐시 지우기',
'deletedCacheStore': '캐시 삭제 중', 'deletedCacheStore': '캐시 삭제 중',
'deletedCacheStoreQuery': '캐시를 정말로 지우시겠습니까?', 'deletedCacheStoreQuery': '캐시를 정말로 지우시겠습니까?',
'addWidget': '위젯 추가', 'addWidget': '위젯 추가',
'hideMap': '지도를 숨기기', 'hideMap': '지도를 숨기기',
}; };
} }

View file

@ -1,143 +1,141 @@
class NlNl { class NlNl {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'Beginnen', 'start': 'Beginnen',
'description': 'description':
'Weer-applicatie met een actuele prognose voor elk uur, dag en week voor elke locatie.', 'Weer-applicatie met een actuele prognose voor elk uur, dag en week voor elke locatie.',
'name': 'Weer', 'name': 'Weer',
'name2': 'Handig Ontwerp', 'name2': 'Handig Ontwerp',
'name3': 'Neem contact met ons op', 'name3': 'Neem contact met ons op',
'description2': 'description2':
'Alle navigatie is ontworpen om zo gemakkelijk en snel mogelijk met de applicatie te kunnen communiceren.', 'Alle navigatie is ontworpen om zo gemakkelijk en snel mogelijk met de applicatie te kunnen communiceren.',
'description3': 'description3':
'Als u problemen ondervindt, neem dan contact met ons op via e-mail of in de recensies van de applicatie.', 'Als u problemen ondervindt, neem dan contact met ons op via e-mail of in de recensies van de applicatie.',
'next': 'Volgende', 'next': 'Volgende',
'search': 'Zoeken...', 'search': 'Zoeken...',
'loading': 'Laden...', 'loading': 'Laden...',
'searchCity': 'Vind jouw stad', 'searchCity': 'Vind jouw stad',
'humidity': 'Luchtvochtigheid', 'humidity': 'Luchtvochtigheid',
'wind': 'Wind', 'wind': 'Wind',
'visibility': 'Zichtbaarheid', 'visibility': 'Zichtbaarheid',
'feels': 'Voelt', 'feels': 'Voelt',
'evaporation': 'Verdamping', 'evaporation': 'Verdamping',
'precipitation': 'Neerslag', 'precipitation': 'Neerslag',
'direction': 'Richting', 'direction': 'Richting',
'pressure': 'Druk', 'pressure': 'Druk',
'rain': 'Regen', 'rain': 'Regen',
'clear_sky': 'Heldere lucht', 'clear_sky': 'Heldere lucht',
'cloudy': 'Bewolkt', 'cloudy': 'Bewolkt',
'overcast': 'Betrokken', 'overcast': 'Betrokken',
'fog': 'Mist', 'fog': 'Mist',
'drizzle': 'Motregen', 'drizzle': 'Motregen',
'drizzling_rain': 'Ijskoude motregen', 'drizzling_rain': 'Ijskoude motregen',
'freezing_rain': 'Ijskoude regen', 'freezing_rain': 'Ijskoude regen',
'heavy_rains': 'Regendouche', 'heavy_rains': 'Regendouche',
'snow': 'Sneeuw', 'snow': 'Sneeuw',
'thunderstorm': 'Onweersbui', 'thunderstorm': 'Onweersbui',
'kph': 'km/h', 'kph': 'km/h',
'mph': 'mph', 'mph': 'mph',
'm/s': 'm/s', 'm/s': 'm/s',
'mmHg': 'mmHg', 'mmHg': 'mmHg',
'mi': 'mi', 'mi': 'mi',
'km': 'km', 'km': 'km',
'inch': 'inch', 'inch': 'inch',
'mm': 'mm', 'mm': 'mm',
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Instellingen.', 'settings': 'Instellingen.',
'no_inter': 'Geen Internet', 'no_inter': 'Geen Internet',
'on_inter': 'on_inter': 'Schakel Internet in om meteorologische gegevens te ontvangen.',
'Schakel Internet in om meteorologische gegevens te ontvangen.', 'location': 'Locatie',
'location': 'Locatie', 'no_location':
'no_location': 'Schakel de locatiedienst in om weer gegevens voor de huidige locatie te ontvangen.',
'Schakel de locatiedienst in om weer gegevens voor de huidige locatie te ontvangen.', 'theme': 'Thema',
'theme': 'Thema', 'low': 'Laag',
'low': 'Laag', 'high': 'Hoog',
'high': 'Hoog', 'normal': 'Normaal',
'normal': 'Normaal', 'lat': 'Breedtegraad',
'lat': 'Breedtegraad', 'lon': 'Lengtegraad',
'lon': 'Lengtegraad', 'create': 'Creëer',
'create': 'Creëer', 'city': 'Stad',
'city': 'Stad', 'district': 'District',
'district': 'District', 'noWeatherCard': 'Voeg een stad toe',
'noWeatherCard': 'Voeg een stad toe', 'deletedCardWeather': 'Verwijder een city',
'deletedCardWeather': 'Verwijder een city', 'deletedCardWeatherQuery': 'Weet je zeker dat je de stad wilt verwijderen?',
'deletedCardWeatherQuery': 'delete': 'Verwijder',
'Weet je zeker dat je de stad wilt verwijderen?', 'cancel': 'Annuleer',
'delete': 'Verwijder', 'time': 'Tijd in de stad',
'cancel': 'Annuleer', 'validateName': 'Vul de naam in',
'time': 'Tijd in de stad', 'measurements': 'Meetsysteem',
'validateName': 'Vul de naam in', 'degrees': 'Graden',
'measurements': 'Meetsysteem', 'celsius': 'Celsius',
'degrees': 'Graden', 'fahrenheit': 'Fahrenheit',
'celsius': 'Celsius', 'imperial': 'Imperiaal',
'fahrenheit': 'Fahrenheit', 'metric': 'Metrisch',
'imperial': 'Imperiaal', 'validateValue': 'Vul een waarde in',
'metric': 'Metrisch', 'validateNumber': 'Vul een geldig nummer in',
'validateValue': 'Vul een waarde in', 'validate90': 'Waarde moet tussen -90 and 90 zijn',
'validateNumber': 'Vul een geldig nummer in', 'validate180': 'Waarde moet tussen -180 and 180 zijn',
'validate90': 'Waarde moet tussen -90 and 90 zijn', 'notifications': 'Notificaties',
'validate180': 'Waarde moet tussen -180 and 180 zijn', 'sunrise': 'Zonsopkomst',
'notifications': 'Notificaties', 'sunset': 'Zonsondergang',
'sunrise': 'Zonsopkomst', 'timeformat': 'Tijdnotatie',
'sunset': 'Zonsondergang', '12': '12-uur',
'timeformat': 'Tijdnotatie', '24': '24-uur',
'12': '12-uur', 'cloudcover': 'Bewolking',
'24': '24-uur', 'uvIndex': 'UV-index',
'cloudcover': 'Bewolking', 'materialColor': 'Dynamische Kleuren',
'uvIndex': 'UV-index', 'uvLow': 'Laag',
'materialColor': 'Dynamische Kleuren', 'uvAverage': 'Matig',
'uvLow': 'Laag', 'uvHigh': 'Hoog',
'uvAverage': 'Matig', 'uvVeryHigh': 'Erg hoog',
'uvHigh': 'Hoog', 'uvExtreme': 'Extreem',
'uvVeryHigh': 'Erg hoog', 'weatherMore': '12-daagse weersverwachting',
'uvExtreme': 'Extreem', 'windgusts': 'Windstoten',
'weatherMore': '12-daagse weersverwachting', 'north': 'Noord',
'windgusts': 'Windstoten', 'northeast': 'Noordoost',
'north': 'Noord', 'east': 'Oost',
'northeast': 'Noordoost', 'southeast': 'Zuidoost',
'east': 'Oost', 'south': 'Zuid',
'southeast': 'Zuidoost', 'southwest': 'Zuidwest',
'south': 'Zuid', 'west': 'West',
'southwest': 'Zuidwest', 'northwest': 'Noordwest',
'west': 'West', 'project': 'Project op',
'northwest': 'Noordwest', 'version': 'Applicatieversie',
'project': 'Project op', 'precipitationProbability': 'Kans op neerslag',
'version': 'Applicatieversie', 'apparentTemperatureMin': 'Minimum schijnbare temperatuur',
'precipitationProbability': 'Kans op neerslag', 'apparentTemperatureMax': 'Maximale schijnbare temperatuur',
'apparentTemperatureMin': 'Minimum schijnbare temperatuur', 'amoledTheme': 'AMOLED-thema',
'apparentTemperatureMax': 'Maximale schijnbare temperatuur', 'appearance': 'Uiterlijk',
'amoledTheme': 'AMOLED-thema', 'functions': 'Functies',
'appearance': 'Uiterlijk', 'data': 'Gegevens',
'functions': 'Functies', 'language': 'Taal',
'data': 'Gegevens', 'timeRange': 'Frequentie (in uren)',
'language': 'Taal', 'timeStart': 'Begintijd',
'timeRange': 'Frequentie (in uren)', 'timeEnd': 'Eindtijd',
'timeStart': 'Begintijd', 'support': 'Ondersteuning',
'timeEnd': 'Eindtijd', 'system': 'Systeem',
'support': 'Ondersteuning', 'dark': 'Donker',
'system': 'Systeem', 'light': 'Licht',
'dark': 'Donker', 'license': 'Licenties',
'light': 'Licht', 'widget': 'Widget',
'license': 'Licenties', 'widgetBackground': 'Widget-achtergrond',
'widget': 'Widget', 'widgetText': 'Tekst van widget',
'widgetBackground': 'Widget-achtergrond', 'dewpoint': 'Dauwpunt',
'widgetText': 'Tekst van widget', 'shortwaveRadiation': 'Korte golfstraling',
'dewpoint': 'Dauwpunt', 'roundDegree': 'Rond graden af',
'shortwaveRadiation': 'Korte golfstraling', 'settings_full': 'Instellingen',
'roundDegree': 'Rond graden af', 'cities': 'Steden',
'settings_full': 'Instellingen', 'searchMethod': 'Gebruik zoeken of geolocatie',
'cities': 'Steden', 'done': 'Klaar',
'searchMethod': 'Gebruik zoeken of geolocatie', 'groups': 'Onze groepen',
'done': 'Klaar', 'openMeteo': 'Gegevens van Open-Meteo (CC-BY 4.0)',
'groups': 'Onze groepen', 'hourlyVariables': 'Uurlijkse weervariabelen',
'openMeteo': 'Gegevens van Open-Meteo (CC-BY 4.0)', 'dailyVariables': 'Dagelijkse weervariabelen',
'hourlyVariables': 'Uurlijkse weervariabelen', 'largeElement': 'Groot weerbericht weergeven',
'dailyVariables': 'Dagelijkse weervariabelen', 'map': 'Kaart',
'largeElement': 'Groot weerbericht weergeven', 'clearCacheStore': 'Cache wissen',
'map': 'Kaart', 'deletedCacheStore': 'Cache wissen',
'clearCacheStore': 'Cache wissen', 'deletedCacheStoreQuery': 'Weet je zeker dat je de cache wilt wissen?',
'deletedCacheStore': 'Cache wissen', 'addWidget': 'Widget toevoegen',
'deletedCacheStoreQuery': 'Weet je zeker dat je de cache wilt wissen?', 'hideMap': 'Kaart verbergen',
'addWidget': 'Widget toevoegen', };
'hideMap': 'Kaart verbergen',
};
} }

View file

@ -1,142 +1,141 @@
class PlPl { class PlPl {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'Rozpocznij', 'start': 'Rozpocznij',
'description': 'description':
'Aplikacja pogodowa z aktualną prognozą na każdą godzinę, dzień i tydzień dla dowolnego miejsca.', 'Aplikacja pogodowa z aktualną prognozą na każdą godzinę, dzień i tydzień dla dowolnego miejsca.',
'name': 'Pogoda', 'name': 'Pogoda',
'name2': 'Wygodny design', 'name2': 'Wygodny design',
'name3': 'Skontaktuj się z nami', 'name3': 'Skontaktuj się z nami',
'description2': 'description2':
'Cała nawigacja jest zaprojektowana tak, aby można było jak najwygodniej i najszybciej współdziałać z aplikacją.', 'Cała nawigacja jest zaprojektowana tak, aby można było jak najwygodniej i najszybciej współdziałać z aplikacją.',
'description3': 'description3':
'Jeśli napotkasz jakiekolwiek problemy, skontaktuj się z nami drogą e-mailową lub w recenzjach aplikacji.', 'Jeśli napotkasz jakiekolwiek problemy, skontaktuj się z nami drogą e-mailową lub w recenzjach aplikacji.',
'next': 'Dalej', 'next': 'Dalej',
'search': 'Szukaj...', 'search': 'Szukaj...',
'loading': 'Ładowanie...', 'loading': 'Ładowanie...',
'searchCity': 'Znajdź swoje miasto', 'searchCity': 'Znajdź swoje miasto',
'humidity': 'Wilgoć', 'humidity': 'Wilgoć',
'wind': 'Wiatr', 'wind': 'Wiatr',
'visibility': 'Widoczność', 'visibility': 'Widoczność',
'feels': 'Odczuwalna', 'feels': 'Odczuwalna',
'evaporation': 'Parowanie', 'evaporation': 'Parowanie',
'precipitation': 'Opad atmosferyczny', 'precipitation': 'Opad atmosferyczny',
'direction': 'Kierunek', 'direction': 'Kierunek',
'pressure': 'Ciśnienie', 'pressure': 'Ciśnienie',
'rain': 'Deszcz', 'rain': 'Deszcz',
'clear_sky': 'Czyste niebo', 'clear_sky': 'Czyste niebo',
'cloudy': 'Pochmurno', 'cloudy': 'Pochmurno',
'overcast': 'Pochmurnie', 'overcast': 'Pochmurnie',
'fog': 'Mgła', 'fog': 'Mgła',
'drizzle': 'Mżawka', 'drizzle': 'Mżawka',
'drizzling_rain': 'Mroźna Mżawka', 'drizzling_rain': 'Mroźna Mżawka',
'freezing_rain': 'Mroźny deszcz', 'freezing_rain': 'Mroźny deszcz',
'heavy_rains': 'Przelotne opady deszczu', 'heavy_rains': 'Przelotne opady deszczu',
'snow': 'Śnieg', 'snow': 'Śnieg',
'thunderstorm': 'Burza z piorunami', 'thunderstorm': 'Burza z piorunami',
'kph': 'km/h', 'kph': 'km/h',
'mph': 'mph', 'mph': 'mph',
'm/s': 'm/s', 'm/s': 'm/s',
'mmHg': 'mmHg', 'mmHg': 'mmHg',
'mi': 'mi', 'mi': 'mi',
'km': 'km', 'km': 'km',
'inch': 'inch', 'inch': 'inch',
'mm': 'mm', 'mm': 'mm',
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Ustaw.', 'settings': 'Ustaw.',
'no_inter': 'Brak internetu', 'no_inter': 'Brak internetu',
'on_inter': 'Włącz Internet, aby uzyskać dane meteorologiczne.', 'on_inter': 'Włącz Internet, aby uzyskać dane meteorologiczne.',
'location': 'Lokalizacja', 'location': 'Lokalizacja',
'no_location': 'no_location':
'Włącz usługę lokalizacyjną, aby uzyskać dane pogodowe dla bieżącej lokalizacji.', 'Włącz usługę lokalizacyjną, aby uzyskać dane pogodowe dla bieżącej lokalizacji.',
'theme': 'Motyw', 'theme': 'Motyw',
'low': 'Niski', 'low': 'Niski',
'high': 'Wysoki', 'high': 'Wysoki',
'normal': 'Normalny', 'normal': 'Normalny',
'lat': 'Latitude', 'lat': 'Latitude',
'lon': 'Longitude', 'lon': 'Longitude',
'create': 'Stwórz', 'create': 'Stwórz',
'city': 'Miasto', 'city': 'Miasto',
'district': 'Dzielnica', 'district': 'Dzielnica',
'noWeatherCard': 'Dodaj miasto', 'noWeatherCard': 'Dodaj miasto',
'deletedCardWeather': 'Usuwanie miasta', 'deletedCardWeather': 'Usuwanie miasta',
'deletedCardWeatherQuery': 'Czy na pewno chcesz usunąć miasto?', 'deletedCardWeatherQuery': 'Czy na pewno chcesz usunąć miasto?',
'delete': 'Usuń', 'delete': 'Usuń',
'cancel': 'Anuluj', 'cancel': 'Anuluj',
'time': 'Czas w mieście', 'time': 'Czas w mieście',
'validateName': 'Wprowadź nazwę', 'validateName': 'Wprowadź nazwę',
'measurements': 'System środków', 'measurements': 'System środków',
'degrees': 'Stopni', 'degrees': 'Stopni',
'celsius': 'Celsjusz', 'celsius': 'Celsjusz',
'fahrenheit': 'Fahrenheita', 'fahrenheit': 'Fahrenheita',
'imperial': 'Imperial', 'imperial': 'Imperial',
'metric': 'Metric', 'metric': 'Metric',
'validateValue': 'Proszę wprowadzić wartość', 'validateValue': 'Proszę wprowadzić wartość',
'validateNumber': 'Proszę wprowadzić poprawny numer', 'validateNumber': 'Proszę wprowadzić poprawny numer',
'validate90': 'Wartość musi mieścić się w zakresie od -90 do 90', 'validate90': 'Wartość musi mieścić się w zakresie od -90 do 90',
'validate180': 'Wartość musi mieścić się w przedziale od -180 do 180', 'validate180': 'Wartość musi mieścić się w przedziale od -180 do 180',
'notifications': 'Powiadomienia', 'notifications': 'Powiadomienia',
'sunrise': 'Wschód słońca', 'sunrise': 'Wschód słońca',
'sunset': 'Zachód słońca', 'sunset': 'Zachód słońca',
'timeformat': 'Format czasu', 'timeformat': 'Format czasu',
'12': '12-hour', '12': '12-hour',
'24': '24-hour', '24': '24-hour',
'cloudcover': 'Zachmurzenie', 'cloudcover': 'Zachmurzenie',
'uvIndex': 'Indeks UV', 'uvIndex': 'Indeks UV',
'materialColor': 'Dynamiczne kolory', 'materialColor': 'Dynamiczne kolory',
'uvLow': 'Niski', 'uvLow': 'Niski',
'uvAverage': 'Umiarkowany', 'uvAverage': 'Umiarkowany',
'uvHigh': 'Wysoki', 'uvHigh': 'Wysoki',
'uvVeryHigh': 'Bardzo wysoki', 'uvVeryHigh': 'Bardzo wysoki',
'uvExtreme': 'Extremalny', 'uvExtreme': 'Extremalny',
'weatherMore': 'Prognoza pogody na 12 dni', 'weatherMore': 'Prognoza pogody na 12 dni',
'windgusts': 'Porywy wiatru', 'windgusts': 'Porywy wiatru',
'north': 'Północ', 'north': 'Północ',
'northeast': 'Północny wschód', 'northeast': 'Północny wschód',
'east': 'Wschód', 'east': 'Wschód',
'southeast': 'południowy wschód', 'southeast': 'południowy wschód',
'south': 'Południe', 'south': 'Południe',
'southwest': 'Południowy zachód', 'southwest': 'Południowy zachód',
'west': 'Zachód', 'west': 'Zachód',
'northwest': 'Północny zachód', 'northwest': 'Północny zachód',
'project': 'Project on', 'project': 'Project on',
'version': 'Wersja aplikacji', 'version': 'Wersja aplikacji',
'precipitationProbability': 'Prawdopodobieństwo opadów', 'precipitationProbability': 'Prawdopodobieństwo opadów',
'apparentTemperatureMin': 'Minimalna temperatura pozorna', 'apparentTemperatureMin': 'Minimalna temperatura pozorna',
'apparentTemperatureMax': 'Maksymalna pozorna temperatura', 'apparentTemperatureMax': 'Maksymalna pozorna temperatura',
'amoledTheme': 'AMOLED-theme', 'amoledTheme': 'AMOLED-theme',
'appearance': 'Wygląd', 'appearance': 'Wygląd',
'functions': 'Funkcje', 'functions': 'Funkcje',
'data': 'Data', 'data': 'Data',
'language': 'Język', 'language': 'Język',
'timeRange': 'Częstotliwość (w godzinach)', 'timeRange': 'Częstotliwość (w godzinach)',
'timeStart': 'Czas rozpoczęcia', 'timeStart': 'Czas rozpoczęcia',
'timeEnd': 'Czas zakończenia', 'timeEnd': 'Czas zakończenia',
'support': 'Wsparcie', 'support': 'Wsparcie',
'system': 'System', 'system': 'System',
'dark': 'Ciemny', 'dark': 'Ciemny',
'light': 'Jasny', 'light': 'Jasny',
'license': 'Licencje', 'license': 'Licencje',
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Tło widżetu', 'widgetBackground': 'Tło widżetu',
'widgetText': 'Tekst widżetu', 'widgetText': 'Tekst widżetu',
'dewpoint': 'Punkt rosy', 'dewpoint': 'Punkt rosy',
'shortwaveRadiation': 'Promieniowanie krótkofalowe', 'shortwaveRadiation': 'Promieniowanie krótkofalowe',
'roundDegree': 'Zaokrąglaj stopnie', 'roundDegree': 'Zaokrąglaj stopnie',
'settings_full': 'Ustawienia', 'settings_full': 'Ustawienia',
'cities': 'Miasta', 'cities': 'Miasta',
'searchMethod': 'Użyj wyszukiwania lub geolokalizacji', 'searchMethod': 'Użyj wyszukiwania lub geolokalizacji',
'done': 'Gotowe', 'done': 'Gotowe',
'groups': 'Nasze grupy', 'groups': 'Nasze grupy',
'openMeteo': 'Dane z Open-Meteo (CC-BY 4.0)', 'openMeteo': 'Dane z Open-Meteo (CC-BY 4.0)',
'hourlyVariables': 'Godzinowe zmienne pogodowe', 'hourlyVariables': 'Godzinowe zmienne pogodowe',
'dailyVariables': 'Dzienne zmienne pogodowe', 'dailyVariables': 'Dzienne zmienne pogodowe',
'largeElement': 'Duże wyświetlanie pogody', 'largeElement': 'Duże wyświetlanie pogody',
'map': 'Mapa', 'map': 'Mapa',
'clearCacheStore': 'Wyczyść pamięć podręczną', 'clearCacheStore': 'Wyczyść pamięć podręczną',
'deletedCacheStore': 'Czyszczenie pamięci podręcznej', 'deletedCacheStore': 'Czyszczenie pamięci podręcznej',
'deletedCacheStoreQuery': 'deletedCacheStoreQuery': 'Czy na pewno chcesz wyczyścić pamięć podręczną?',
'Czy na pewno chcesz wyczyścić pamięć podręczną?', 'addWidget': 'Dodaj widget',
'addWidget': 'Dodaj widget', 'hideMap': 'Ukryj mapę',
'hideMap': 'Ukryj mapę', };
};
} }

View file

@ -1,142 +1,142 @@
class PtBr { class PtBr {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'Iniciar', 'start': 'Iniciar',
'description': 'description':
'Aplicativo de previsão do tempo com previsão atualizada para cada hora, dia e semana para qualquer local.', 'Aplicativo de previsão do tempo com previsão atualizada para cada hora, dia e semana para qualquer local.',
'name': 'Clima', 'name': 'Clima',
'name2': 'Design Conveniente', 'name2': 'Design Conveniente',
'name3': 'Entre em Contato Conosco', 'name3': 'Entre em Contato Conosco',
'description2': 'description2':
'Toda a navegação é projetada para interagir com o aplicativo da maneira mais conveniente e rápida possível.', 'Toda a navegação é projetada para interagir com o aplicativo da maneira mais conveniente e rápida possível.',
'description3': 'description3':
'Se você encontrar algum problema, entre em contato conosco por e-mail ou nas avaliações do aplicativo.', 'Se você encontrar algum problema, entre em contato conosco por e-mail ou nas avaliações do aplicativo.',
'next': 'Próximo', 'next': 'Próximo',
'search': 'Pesquisar...', 'search': 'Pesquisar...',
'loading': 'Carregando...', 'loading': 'Carregando...',
'searchCity': 'Procure sua cidade', 'searchCity': 'Procure sua cidade',
'humidity': 'Umidade', 'humidity': 'Umidade',
'wind': 'Vento', 'wind': 'Vento',
'visibility': 'Visibilidade', 'visibility': 'Visibilidade',
'feels': 'Sensação', 'feels': 'Sensação',
'evaporation': 'Evapotranspirações', 'evaporation': 'Evapotranspirações',
'precipitation': 'Precipitação', 'precipitation': 'Precipitação',
'direction': 'Direção', 'direction': 'Direção',
'pressure': 'Pressão', 'pressure': 'Pressão',
'rain': 'Chuva', 'rain': 'Chuva',
'clear_sky': 'Céu limpo', 'clear_sky': 'Céu limpo',
'cloudy': 'Nublado', 'cloudy': 'Nublado',
'overcast': 'Encoberto', 'overcast': 'Encoberto',
'fog': 'Névoa', 'fog': 'Névoa',
'drizzle': 'Garoa', 'drizzle': 'Garoa',
'drizzling_rain': 'Chuva fraca', 'drizzling_rain': 'Chuva fraca',
'freezing_rain': 'Chuva congelante', 'freezing_rain': 'Chuva congelante',
'heavy_rains': 'Chuva pesada', 'heavy_rains': 'Chuva pesada',
'snow': 'Neve', 'snow': 'Neve',
'thunderstorm': 'Tempestade', 'thunderstorm': 'Tempestade',
'kph': 'km/h', 'kph': 'km/h',
'mph': 'mph', 'mph': 'mph',
'm/s': 'm/s', 'm/s': 'm/s',
'mmHg': 'mmHg', 'mmHg': 'mmHg',
'mi': 'mi', 'mi': 'mi',
'km': 'km', 'km': 'km',
'inch': 'inch', 'inch': 'inch',
'mm': 'mm', 'mm': 'mm',
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Configurações.', 'settings': 'Configurações.',
'no_inter': 'Sem conexão', 'no_inter': 'Sem conexão',
'on_inter': 'Conecte-se a internet para atualizar os dados de clima.', 'on_inter': 'Conecte-se a internet para atualizar os dados de clima.',
'location': 'Localização', 'location': 'Localização',
'no_location': 'no_location':
'Habilite a localização para obter dados de clima do local atual.', 'Habilite a localização para obter dados de clima do local atual.',
'theme': 'Tema', 'theme': 'Tema',
'low': 'Baixo', 'low': 'Baixo',
'high': 'Alto', 'high': 'Alto',
'normal': 'Normal', 'normal': 'Normal',
'lat': 'Latitude', 'lat': 'Latitude',
'lon': 'Longitude', 'lon': 'Longitude',
'create': 'Criar', 'create': 'Criar',
'city': 'Cidade', 'city': 'Cidade',
'district': 'Distrito', 'district': 'Distrito',
'noWeatherCard': 'Adicione uma cidade', 'noWeatherCard': 'Adicione uma cidade',
'deletedCardWeather': 'Deletando a cidade', 'deletedCardWeather': 'Deletando a cidade',
'deletedCardWeatherQuery': 'deletedCardWeatherQuery':
'Você tem certeza que deseja remover esta cidade?', 'Você tem certeza que deseja remover esta cidade?',
'delete': 'Deletar', 'delete': 'Deletar',
'cancel': 'Cancelar', 'cancel': 'Cancelar',
'time': 'Clima na cidade', 'time': 'Clima na cidade',
'validateName': 'Por favor escreva um nome', 'validateName': 'Por favor escreva um nome',
'measurements': 'Sistema de medidas', 'measurements': 'Sistema de medidas',
'degrees': 'Graus', 'degrees': 'Graus',
'celsius': 'Celsius', 'celsius': 'Celsius',
'fahrenheit': 'Fahrenheit', 'fahrenheit': 'Fahrenheit',
'imperial': 'Imperial', 'imperial': 'Imperial',
'metric': 'Métrico', 'metric': 'Métrico',
'validateValue': 'Por favor escreva um valor', 'validateValue': 'Por favor escreva um valor',
'validateNumber': 'Por favor escreva um número válido', 'validateNumber': 'Por favor escreva um número válido',
'validate90': 'Valor deve estar entre -90 and 90', 'validate90': 'Valor deve estar entre -90 and 90',
'validate180': 'Valor deve estar entre -180 and 180', 'validate180': 'Valor deve estar entre -180 and 180',
'notifications': 'Notificações', 'notifications': 'Notificações',
'sunrise': 'Nascer do sol', 'sunrise': 'Nascer do sol',
'sunset': 'Pôr do sol', 'sunset': 'Pôr do sol',
'timeformat': 'Formato de hora', 'timeformat': 'Formato de hora',
'12': '12 horas', '12': '12 horas',
'24': '24 horas', '24': '24 horas',
'cloudcover': 'Сobertura de nuvens', 'cloudcover': 'Сobertura de nuvens',
'uvIndex': 'UV-índice', 'uvIndex': 'UV-índice',
'materialColor': 'Cores Dinâmicas', 'materialColor': 'Cores Dinâmicas',
'uvLow': 'Baixo', 'uvLow': 'Baixo',
'uvAverage': 'Moderado', 'uvAverage': 'Moderado',
'uvHigh': 'Alto', 'uvHigh': 'Alto',
'uvVeryHigh': 'Muito alto', 'uvVeryHigh': 'Muito alto',
'uvExtreme': 'Extremo', 'uvExtreme': 'Extremo',
'weatherMore': 'Previsão do tempo para 12 dias', 'weatherMore': 'Previsão do tempo para 12 dias',
'windgusts': 'Rajadas', 'windgusts': 'Rajadas',
'north': 'Norte', 'north': 'Norte',
'northeast': 'Nordeste', 'northeast': 'Nordeste',
'east': 'Leste', 'east': 'Leste',
'southeast': 'Sudeste', 'southeast': 'Sudeste',
'south': 'Sul', 'south': 'Sul',
'southwest': 'Sudoeste', 'southwest': 'Sudoeste',
'west': 'Oeste', 'west': 'Oeste',
'northwest': 'Noroeste', 'northwest': 'Noroeste',
'project': 'Projeto em', 'project': 'Projeto em',
'version': 'Versão do aplicativo', 'version': 'Versão do aplicativo',
'precipitationProbability': 'Probabilidade de precipitação', 'precipitationProbability': 'Probabilidade de precipitação',
'apparentTemperatureMin': 'Temperatura aparente mínima', 'apparentTemperatureMin': 'Temperatura aparente mínima',
'apparentTemperatureMax': 'Temperatura aparente máxima', 'apparentTemperatureMax': 'Temperatura aparente máxima',
'amoledTheme': 'AMOLED-tema', 'amoledTheme': 'AMOLED-tema',
'appearance': 'Aparência', 'appearance': 'Aparência',
'functions': 'Funções', 'functions': 'Funções',
'data': 'Dados', 'data': 'Dados',
'language': 'Idioma', 'language': 'Idioma',
'timeRange': 'Frequência (em horas)', 'timeRange': 'Frequência (em horas)',
'timeStart': 'Hora de início', 'timeStart': 'Hora de início',
'timeEnd': 'Hora de término', 'timeEnd': 'Hora de término',
'support': 'Suporte', 'support': 'Suporte',
'system': 'Sistema', 'system': 'Sistema',
'dark': 'Escuro', 'dark': 'Escuro',
'light': 'Claro', 'light': 'Claro',
'license': 'Licenças', 'license': 'Licenças',
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Fundo do widget', 'widgetBackground': 'Fundo do widget',
'widgetText': 'Texto do widget', 'widgetText': 'Texto do widget',
'dewpoint': 'Ponto de orvalho', 'dewpoint': 'Ponto de orvalho',
'shortwaveRadiation': 'Radiação de ondas curtas', 'shortwaveRadiation': 'Radiação de ondas curtas',
'roundDegree': 'Arredondar graus', 'roundDegree': 'Arredondar graus',
'settings_full': 'Configurações', 'settings_full': 'Configurações',
'cities': 'Cidades', 'cities': 'Cidades',
'searchMethod': 'Use a pesquisa ou a geolocalização', 'searchMethod': 'Use a pesquisa ou a geolocalização',
'done': 'Concluído', 'done': 'Concluído',
'groups': 'Nossos grupos', 'groups': 'Nossos grupos',
'openMeteo': 'Dados do Open-Meteo (CC-BY 4.0)', 'openMeteo': 'Dados do Open-Meteo (CC-BY 4.0)',
'hourlyVariables': 'Variáveis meteorológicas horárias', 'hourlyVariables': 'Variáveis meteorológicas horárias',
'dailyVariables': 'Variáveis meteorológicas diárias', 'dailyVariables': 'Variáveis meteorológicas diárias',
'largeElement': 'Exibição grande do clima', 'largeElement': 'Exibição grande do clima',
'map': 'Mapa', 'map': 'Mapa',
'clearCacheStore': 'Limpar cache', 'clearCacheStore': 'Limpar cache',
'deletedCacheStore': 'Limpando cache', 'deletedCacheStore': 'Limpando cache',
'deletedCacheStoreQuery': 'Tem certeza de que deseja limpar o cache?', 'deletedCacheStoreQuery': 'Tem certeza de que deseja limpar o cache?',
'addWidget': 'Adicionar widget', 'addWidget': 'Adicionar widget',
'hideMap': 'Ocultar mapa', 'hideMap': 'Ocultar mapa',
}; };
} }

View file

@ -1,141 +1,141 @@
class RoRo { class RoRo {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'Începe', 'start': 'Începe',
'description': 'description':
'Aplicație meteo cu o prognoză actualizată pentru fiecare oră, zi și săptămână pentru orice loc.', 'Aplicație meteo cu o prognoză actualizată pentru fiecare oră, zi și săptămână pentru orice loc.',
'name': 'Vremea', 'name': 'Vremea',
'name2': 'Design Convenabil', 'name2': 'Design Convenabil',
'name3': 'Contactați-ne', 'name3': 'Contactați-ne',
'description2': 'description2':
'Toată navigarea este concepută pentru a interacționa cu aplicația în cel mai comod și rapid mod posibil.', 'Toată navigarea este concepută pentru a interacționa cu aplicația în cel mai comod și rapid mod posibil.',
'description3': 'description3':
'Dacă întâmpinați orice probleme, vă rugăm să ne contactați prin e-mail sau în recenziile aplicației.', 'Dacă întâmpinați orice probleme, vă rugăm să ne contactați prin e-mail sau în recenziile aplicației.',
'next': 'Următorul', 'next': 'Următorul',
'search': 'Caută...', 'search': 'Caută...',
'loading': 'Încărcare...', 'loading': 'Încărcare...',
'searchCity': 'Caută oraș', 'searchCity': 'Caută oraș',
'humidity': 'Umiditate', 'humidity': 'Umiditate',
'wind': 'Vânt', 'wind': 'Vânt',
'visibility': 'Vizibilitate', 'visibility': 'Vizibilitate',
'feels': 'Se simt', 'feels': 'Se simt',
'evaporation': 'Evapotranspirație', 'evaporation': 'Evapotranspirație',
'precipitation': 'Precipitații', 'precipitation': 'Precipitații',
'direction': 'Direcție', 'direction': 'Direcție',
'pressure': 'Presiune', 'pressure': 'Presiune',
'rain': 'Ploaie', 'rain': 'Ploaie',
'clear_sky': 'Senin', 'clear_sky': 'Senin',
'cloudy': 'Înnorat', 'cloudy': 'Înnorat',
'overcast': 'Cer acoperit de nori', 'overcast': 'Cer acoperit de nori',
'fog': 'Ceață', 'fog': 'Ceață',
'drizzle': 'Burniță', 'drizzle': 'Burniță',
'drizzling_rain': 'Burniță înghețată', 'drizzling_rain': 'Burniță înghețată',
'freezing_rain': 'Ploaie înghețată', 'freezing_rain': 'Ploaie înghețată',
'heavy_rains': 'Ploaie torențială', 'heavy_rains': 'Ploaie torențială',
'snow': 'Ninsoare', 'snow': 'Ninsoare',
'thunderstorm': 'Furtună', 'thunderstorm': 'Furtună',
'kph': 'km/h', 'kph': 'km/h',
'mph': 'mph', 'mph': 'mph',
'm/s': 'm/s', 'm/s': 'm/s',
'mmHg': 'mmHg', 'mmHg': 'mmHg',
'mi': 'mi', 'mi': 'mi',
'km': 'km', 'km': 'km',
'inch': 'inch', 'inch': 'inch',
'mm': 'mm', 'mm': 'mm',
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Set.', 'settings': 'Set.',
'no_inter': 'Fără Internet', 'no_inter': 'Fără Internet',
'on_inter': 'Pornește Internetul pentru a obține date meteorologice.', 'on_inter': 'Pornește Internetul pentru a obține date meteorologice.',
'location': 'Locație', 'location': 'Locație',
'no_location': 'no_location':
'Activează serviciul de localizare pentru a obține date meteorologice pentru locația curentă.', 'Activează serviciul de localizare pentru a obține date meteorologice pentru locația curentă.',
'theme': 'Temă', 'theme': 'Temă',
'low': 'Scăzut', 'low': 'Scăzut',
'high': 'Ridicat', 'high': 'Ridicat',
'normal': 'Normal', 'normal': 'Normal',
'lat': 'Latitudine', 'lat': 'Latitudine',
'lon': 'Longitudine', 'lon': 'Longitudine',
'create': 'Crează', 'create': 'Crează',
'city': 'Oraș', 'city': 'Oraș',
'district': 'District', 'district': 'District',
'noWeatherCard': 'Adaugă un oraș', 'noWeatherCard': 'Adaugă un oraș',
'deletedCardWeather': 'Ștergerea orașului', 'deletedCardWeather': 'Ștergerea orașului',
'deletedCardWeatherQuery': 'Ești sigur că vrei să ștergi orașul?', 'deletedCardWeatherQuery': 'Ești sigur că vrei să ștergi orașul?',
'delete': 'Șterge', 'delete': 'Șterge',
'cancel': 'Anulează', 'cancel': 'Anulează',
'time': 'Ora în oraș', 'time': 'Ora în oraș',
'validateName': 'Introdu numele', 'validateName': 'Introdu numele',
'measurements': 'Sistemul de măsuri', 'measurements': 'Sistemul de măsuri',
'degrees': 'Grade', 'degrees': 'Grade',
'celsius': 'Celsius', 'celsius': 'Celsius',
'fahrenheit': 'Fahrenheit', 'fahrenheit': 'Fahrenheit',
'imperial': 'Imperial', 'imperial': 'Imperial',
'metric': 'Metric', 'metric': 'Metric',
'validateValue': 'Introdu o valoare', 'validateValue': 'Introdu o valoare',
'validateNumber': 'Introdu un număr valid', 'validateNumber': 'Introdu un număr valid',
'validate90': 'Valoarea trebuie să fie între -90 și 90', 'validate90': 'Valoarea trebuie să fie între -90 și 90',
'validate180': 'Valoarea trebuie să fie între -180 și 180', 'validate180': 'Valoarea trebuie să fie între -180 și 180',
'notifications': 'Notificări', 'notifications': 'Notificări',
'sunrise': 'Răsărit', 'sunrise': 'Răsărit',
'sunset': 'Apus', 'sunset': 'Apus',
'timeformat': 'Format orar', 'timeformat': 'Format orar',
'12': '12 ore', '12': '12 ore',
'24': '24 ore', '24': '24 ore',
'cloudcover': 'Acoperirea norilor', 'cloudcover': 'Acoperirea norilor',
'uvIndex': 'Index UV', 'uvIndex': 'Index UV',
'materialColor': 'Culori dinamice (Android 12+)', 'materialColor': 'Culori dinamice (Android 12+)',
'uvLow': 'Scăzut', 'uvLow': 'Scăzut',
'uvAverage': 'Moderat', 'uvAverage': 'Moderat',
'uvHigh': 'Ridicat', 'uvHigh': 'Ridicat',
'uvVeryHigh': 'Foarte ridicat', 'uvVeryHigh': 'Foarte ridicat',
'uvExtreme': 'Extrem', 'uvExtreme': 'Extrem',
'weatherMore': 'Prognoza pe 12 zile', 'weatherMore': 'Prognoza pe 12 zile',
'windgusts': 'Rafale de vânt', 'windgusts': 'Rafale de vânt',
'north': 'Nord', 'north': 'Nord',
'northeast': 'Nord-est', 'northeast': 'Nord-est',
'east': 'Est', 'east': 'Est',
'southeast': 'Sud-est', 'southeast': 'Sud-est',
'south': 'Sud', 'south': 'Sud',
'southwest': 'Sud-vest', 'southwest': 'Sud-vest',
'west': 'Vest', 'west': 'Vest',
'northwest': 'Nord-vest', 'northwest': 'Nord-vest',
'project': 'Proiectul pe', 'project': 'Proiectul pe',
'version': 'Versiunea aplicației', 'version': 'Versiunea aplicației',
'precipitationProbability': 'Probabilitatea precipitațiilor', 'precipitationProbability': 'Probabilitatea precipitațiilor',
'apparentTemperatureMin': 'Temperatura minimă aparentă', 'apparentTemperatureMin': 'Temperatura minimă aparentă',
'apparentTemperatureMax': 'Temperatura maximă aparentă', 'apparentTemperatureMax': 'Temperatura maximă aparentă',
'amoledTheme': 'Temă AMOLED', 'amoledTheme': 'Temă AMOLED',
'appearance': 'Aspect', 'appearance': 'Aspect',
'functions': 'Funcții', 'functions': 'Funcții',
'data': 'Data', 'data': 'Data',
'language': 'Limba', 'language': 'Limba',
'timeRange': 'Frecvența (în ore)', 'timeRange': 'Frecvența (în ore)',
'timeStart': 'Ora de început', 'timeStart': 'Ora de început',
'timeEnd': 'Ora de sfârșit', 'timeEnd': 'Ora de sfârșit',
'support': 'Suport', 'support': 'Suport',
'system': 'Sistem', 'system': 'Sistem',
'dark': 'Întunecat', 'dark': 'Întunecat',
'light': 'Luminos', 'light': 'Luminos',
'license': 'Licențe', 'license': 'Licențe',
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Fundal widget', 'widgetBackground': 'Fundal widget',
'widgetText': 'Text widget', 'widgetText': 'Text widget',
'dewpoint': 'Punct de rouă', 'dewpoint': 'Punct de rouă',
'shortwaveRadiation': 'Radiație cu unde scurte', 'shortwaveRadiation': 'Radiație cu unde scurte',
'roundDegree': 'Rotunjire grade', 'roundDegree': 'Rotunjire grade',
'settings_full': 'Setări', 'settings_full': 'Setări',
'cities': 'Orașe', 'cities': 'Orașe',
'searchMethod': 'Folosiți căutarea sau geolocația', 'searchMethod': 'Folosiți căutarea sau geolocația',
'done': 'Gata', 'done': 'Gata',
'groups': 'Grupurile noastre', 'groups': 'Grupurile noastre',
'openMeteo': 'Date de la Open-Meteo (CC-BY 4.0)', 'openMeteo': 'Date de la Open-Meteo (CC-BY 4.0)',
'hourlyVariables': 'Variabile meteorologice orare', 'hourlyVariables': 'Variabile meteorologice orare',
'dailyVariables': 'Variabile meteorologice zilnice', 'dailyVariables': 'Variabile meteorologice zilnice',
'largeElement': 'Afișare mare a vremii', 'largeElement': 'Afișare mare a vremii',
'map': 'Hartă', 'map': 'Hartă',
'clearCacheStore': 'Șterge cache-ul', 'clearCacheStore': 'Șterge cache-ul',
'deletedCacheStore': 'Ștergerea cache-ului', 'deletedCacheStore': 'Ștergerea cache-ului',
'deletedCacheStoreQuery': 'Ești sigur că vrei să ștergi cache-ul?', 'deletedCacheStoreQuery': 'Ești sigur că vrei să ștergi cache-ul?',
'addWidget': 'Adaugă widget', 'addWidget': 'Adaugă widget',
'hideMap': 'Ascunde harta', 'hideMap': 'Ascunde harta',
}; };
} }

View file

@ -1,142 +1,142 @@
class RuRu { class RuRu {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'Начать', 'start': 'Начать',
'description': 'description':
'Приложение погоды с актуальным прогнозом на каждый час, день и неделю для любого места.', 'Приложение погоды с актуальным прогнозом на каждый час, день и неделю для любого места.',
'name': 'Погода', 'name': 'Погода',
'name2': 'Удобный дизайн', 'name2': 'Удобный дизайн',
'name3': 'Связаться с нами', 'name3': 'Связаться с нами',
'description2': 'description2':
'Вся навигация сделана таким образом, чтобы можно было взаимодействовать с приложением максимально удобно и быстро.', 'Вся навигация сделана таким образом, чтобы можно было взаимодействовать с приложением максимально удобно и быстро.',
'description3': 'description3':
'Если у вас возникнут какие-либо проблемы, пожалуйста, свяжитесь с нами по электронной почте или в отзывах приложения.', 'Если у вас возникнут какие-либо проблемы, пожалуйста, свяжитесь с нами по электронной почте или в отзывах приложения.',
'next': 'Далее', 'next': 'Далее',
'search': 'Поиск...', 'search': 'Поиск...',
'loading': 'Загрузка...', 'loading': 'Загрузка...',
'searchCity': 'Найдите свой город', 'searchCity': 'Найдите свой город',
'humidity': 'Влажность', 'humidity': 'Влажность',
'wind': 'Ветер', 'wind': 'Ветер',
'visibility': 'Видимость', 'visibility': 'Видимость',
'feels': 'Ощущается', 'feels': 'Ощущается',
'evaporation': 'Испарения', 'evaporation': 'Испарения',
'precipitation': 'Осадки', 'precipitation': 'Осадки',
'direction': 'Направление', 'direction': 'Направление',
'pressure': 'Давление', 'pressure': 'Давление',
'rain': 'Дождь', 'rain': 'Дождь',
'clear_sky': 'Чистое небо', 'clear_sky': 'Чистое небо',
'cloudy': 'Облачно', 'cloudy': 'Облачно',
'overcast': 'Пасмурно', 'overcast': 'Пасмурно',
'fog': 'Туман', 'fog': 'Туман',
'drizzle': 'Морось', 'drizzle': 'Морось',
'drizzling_rain': 'Моросящий дождь', 'drizzling_rain': 'Моросящий дождь',
'freezing_rain': 'Ледяной дождь', 'freezing_rain': 'Ледяной дождь',
'heavy_rains': 'Ливневые дожди', 'heavy_rains': 'Ливневые дожди',
'snow': 'Снег', 'snow': 'Снег',
'thunderstorm': 'Гроза', 'thunderstorm': 'Гроза',
'kph': 'км/ч', 'kph': 'км/ч',
'm/s': 'м/с', 'm/s': 'м/с',
'mmHg': 'мм рт. ст.', 'mmHg': 'мм рт. ст.',
'mph': 'миль/ч', 'mph': 'миль/ч',
'mi': 'миль', 'mi': 'миль',
'km': 'км', 'km': 'км',
'inch': 'дюйм', 'inch': 'дюйм',
'mm': 'мм', 'mm': 'мм',
'hPa': 'гПа', 'hPa': 'гПа',
'settings': 'Настр.', 'settings': 'Настр.',
'no_inter': 'Нет интернета', 'no_inter': 'Нет интернета',
'on_inter': 'Включите интернет для получения метеорологических данных.', 'on_inter': 'Включите интернет для получения метеорологических данных.',
'location': 'Местоположение', 'location': 'Местоположение',
'no_location': 'no_location':
'Включите службу определения местоположения для получения метеорологических данных для текущего местоположения.', 'Включите службу определения местоположения для получения метеорологических данных для текущего местоположения.',
'theme': 'Тема', 'theme': 'Тема',
'low': 'Низкое', 'low': 'Низкое',
'high': 'Высокое', 'high': 'Высокое',
'normal': 'Нормальное', 'normal': 'Нормальное',
'lat': 'Широта', 'lat': 'Широта',
'lon': 'Долгота', 'lon': 'Долгота',
'create': 'Создание', 'create': 'Создание',
'city': 'Город', 'city': 'Город',
'district': 'Район', 'district': 'Район',
'noWeatherCard': 'Добавьте город', 'noWeatherCard': 'Добавьте город',
'deletedCardWeather': 'Удаление города', 'deletedCardWeather': 'Удаление города',
'deletedCardWeatherQuery': 'Вы уверены, что хотите удалить город?', 'deletedCardWeatherQuery': 'Вы уверены, что хотите удалить город?',
'delete': 'Удалить', 'delete': 'Удалить',
'cancel': 'Отмена', 'cancel': 'Отмена',
'time': 'Время в городе', 'time': 'Время в городе',
'validateName': 'Пожалуйста, введите название', 'validateName': 'Пожалуйста, введите название',
'measurements': 'Система мер', 'measurements': 'Система мер',
'degrees': 'Градусы', 'degrees': 'Градусы',
'celsius': 'Цельсия', 'celsius': 'Цельсия',
'fahrenheit': 'Фаренгейта', 'fahrenheit': 'Фаренгейта',
'imperial': 'Имперская', 'imperial': 'Имперская',
'metric': 'Метрическая', 'metric': 'Метрическая',
'validateValue': 'Пожалуйста, введите значение', 'validateValue': 'Пожалуйста, введите значение',
'validateNumber': 'Пожалуйста, введите число', 'validateNumber': 'Пожалуйста, введите число',
'validate90': 'Значение должно быть в диапазоне от -90 до 90', 'validate90': 'Значение должно быть в диапазоне от -90 до 90',
'validate180': 'Значение должно быть в диапазоне от -180 до 180', 'validate180': 'Значение должно быть в диапазоне от -180 до 180',
'notifications': 'Уведомления', 'notifications': 'Уведомления',
'sunrise': 'Рассвет', 'sunrise': 'Рассвет',
'sunset': 'Закат', 'sunset': 'Закат',
'timeformat': 'Формат времени', 'timeformat': 'Формат времени',
'12': '12-часовой', '12': '12-часовой',
'24': '24-часовой', '24': '24-часовой',
'cloudcover': 'Облачный покров', 'cloudcover': 'Облачный покров',
'uvIndex': 'УФ-индекс', 'uvIndex': 'УФ-индекс',
'materialColor': 'Динамические цвета', 'materialColor': 'Динамические цвета',
'uvLow': 'Низкий', 'uvLow': 'Низкий',
'uvAverage': 'Умеренный', 'uvAverage': 'Умеренный',
'uvHigh': 'Высокий', 'uvHigh': 'Высокий',
'uvVeryHigh': 'Очень высокий', 'uvVeryHigh': 'Очень высокий',
'uvExtreme': 'Экстремальный', 'uvExtreme': 'Экстремальный',
'weatherMore': 'Прогноз погоды на 12 дней', 'weatherMore': 'Прогноз погоды на 12 дней',
'windgusts': 'Шквал', 'windgusts': 'Шквал',
'north': 'Север', 'north': 'Север',
'northeast': 'Северо-восток', 'northeast': 'Северо-восток',
'east': 'Восток', 'east': 'Восток',
'southeast': 'Юго-восток', 'southeast': 'Юго-восток',
'south': 'Юг', 'south': 'Юг',
'southwest': 'Юго-запад', 'southwest': 'Юго-запад',
'west': 'Запад', 'west': 'Запад',
'northwest': 'Северо-запад', 'northwest': 'Северо-запад',
'project': 'Проект на', 'project': 'Проект на',
'version': 'Версия приложения', 'version': 'Версия приложения',
'precipitationProbability': 'Вероятность выпадения осадков', 'precipitationProbability': 'Вероятность выпадения осадков',
'apparentTemperatureMin': 'Минимальная ощущаемая температура', 'apparentTemperatureMin': 'Минимальная ощущаемая температура',
'apparentTemperatureMax': 'Максимальная ощущаемая температура', 'apparentTemperatureMax': 'Максимальная ощущаемая температура',
'amoledTheme': 'AMOLED-тема', 'amoledTheme': 'AMOLED-тема',
'appearance': 'Внешний вид', 'appearance': 'Внешний вид',
'functions': 'Функции', 'functions': 'Функции',
'data': 'Данные', 'data': 'Данные',
'language': 'Язык', 'language': 'Язык',
'timeRange': 'Периодичность (в часах)', 'timeRange': 'Периодичность (в часах)',
'timeStart': 'Время начала', 'timeStart': 'Время начала',
'timeEnd': 'Время окончания', 'timeEnd': 'Время окончания',
'support': 'Поддержка', 'support': 'Поддержка',
'system': 'Системная', 'system': 'Системная',
'dark': 'Тёмная', 'dark': 'Тёмная',
'light': 'Светлая', 'light': 'Светлая',
'license': 'Лицензии', 'license': 'Лицензии',
'widget': 'Виджет', 'widget': 'Виджет',
'widgetBackground': 'Фон виджета', 'widgetBackground': 'Фон виджета',
'widgetText': 'Текст виджета', 'widgetText': 'Текст виджета',
'dewpoint': 'Точка росы', 'dewpoint': 'Точка росы',
'shortwaveRadiation': 'Коротковолновое излучение', 'shortwaveRadiation': 'Коротковолновое излучение',
'W/m2': 'Вт/м2', 'W/m2': 'Вт/м2',
'roundDegree': 'Округлить градусы', 'roundDegree': 'Округлить градусы',
'settings_full': 'Настройки', 'settings_full': 'Настройки',
'cities': 'Города', 'cities': 'Города',
'searchMethod': 'Воспользуйтесь поиском или геолокацией', 'searchMethod': 'Воспользуйтесь поиском или геолокацией',
'done': 'Готово', 'done': 'Готово',
'groups': 'Наши группы', 'groups': 'Наши группы',
'openMeteo': 'Данные от Open-Meteo (CC-BY 4.0)', 'openMeteo': 'Данные от Open-Meteo (CC-BY 4.0)',
'hourlyVariables': 'Почасовые погодные условия', 'hourlyVariables': 'Почасовые погодные условия',
'dailyVariables': 'Ежедневные погодные условия', 'dailyVariables': 'Ежедневные погодные условия',
'largeElement': 'Отображение погоды большим элементом', 'largeElement': 'Отображение погоды большим элементом',
'map': 'Карта', 'map': 'Карта',
'clearCacheStore': 'Очистить кэш', 'clearCacheStore': 'Очистить кэш',
'deletedCacheStore': 'Очистка кэша', 'deletedCacheStore': 'Очистка кэша',
'deletedCacheStoreQuery': 'Вы уверены, что хотите очистить кэш?', 'deletedCacheStoreQuery': 'Вы уверены, что хотите очистить кэш?',
'addWidget': 'Добавить виджет', 'addWidget': 'Добавить виджет',
'hideMap': 'Скрыть карту', 'hideMap': 'Скрыть карту',
}; };
} }

View file

@ -1,142 +1,142 @@
class SkSk { class SkSk {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'Začať', 'start': 'Začať',
'description': 'description':
'Aplikácia počasia s aktuálnym predpoveďou pre každú hodinu, deň a týždeň pre akékoľvek miesto.', 'Aplikácia počasia s aktuálnym predpoveďou pre každú hodinu, deň a týždeň pre akékoľvek miesto.',
'name': 'Počasie', 'name': 'Počasie',
'name2': 'Pohodlný dizajn', 'name2': 'Pohodlný dizajn',
'name3': 'Kontaktujte nás', 'name3': 'Kontaktujte nás',
'description2': 'description2':
'Celá navigácia je navrhnutá tak, aby sa s aplikáciou dalo interagovať čo najpohodlnejšie a najrýchlejšie.', 'Celá navigácia je navrhnutá tak, aby sa s aplikáciou dalo interagovať čo najpohodlnejšie a najrýchlejšie.',
'description3': 'description3':
'Ak sa vyskytnú nejaké problémy, kontaktujte nás prosím e-mailom alebo v recenziách aplikácie.', 'Ak sa vyskytnú nejaké problémy, kontaktujte nás prosím e-mailom alebo v recenziách aplikácie.',
'next': 'Ďalej', 'next': 'Ďalej',
'search': 'Hľadať...', 'search': 'Hľadať...',
'loading': 'Načítava sa...', 'loading': 'Načítava sa...',
'searchCity': 'Nájdite svoje miesto', 'searchCity': 'Nájdite svoje miesto',
'humidity': 'Vlhkosť', 'humidity': 'Vlhkosť',
'wind': 'Vietor', 'wind': 'Vietor',
'visibility': 'Viditeľnosť', 'visibility': 'Viditeľnosť',
'feels': 'Pocitová teplota', 'feels': 'Pocitová teplota',
'evaporation': 'Evapotranspirácia', 'evaporation': 'Evapotranspirácia',
'precipitation': 'Zrážky', 'precipitation': 'Zrážky',
'direction': 'Smer', 'direction': 'Smer',
'pressure': 'Tlak', 'pressure': 'Tlak',
'rain': 'Dážď', 'rain': 'Dážď',
'clear_sky': 'Jasno', 'clear_sky': 'Jasno',
'cloudy': 'Oblačno', 'cloudy': 'Oblačno',
'overcast': 'Zamračené', 'overcast': 'Zamračené',
'fog': 'Hmla', 'fog': 'Hmla',
'drizzle': 'Mrholenie', 'drizzle': 'Mrholenie',
'drizzling_rain': 'Mrznúce mrholenie', 'drizzling_rain': 'Mrznúce mrholenie',
'freezing_rain': 'Mrazivý dážď', 'freezing_rain': 'Mrazivý dážď',
'heavy_rains': 'Prehánky', 'heavy_rains': 'Prehánky',
'snow': 'Sneh', 'snow': 'Sneh',
'thunderstorm': 'Búrka', 'thunderstorm': 'Búrka',
'kph': 'km/h', 'kph': 'km/h',
'mph': 'mph', 'mph': 'mph',
'm/s': 'm/s', 'm/s': 'm/s',
'mmHg': 'mmHg', 'mmHg': 'mmHg',
'mi': 'mi', 'mi': 'mi',
'km': 'km', 'km': 'km',
'inch': 'inch', 'inch': 'inch',
'mm': 'mm', 'mm': 'mm',
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Nast.', 'settings': 'Nast.',
'no_inter': 'Žiadny internet', 'no_inter': 'Žiadny internet',
'on_inter': 'Pripojte sa na internet a získajte meteorologické údaje.', 'on_inter': 'Pripojte sa na internet a získajte meteorologické údaje.',
'location': 'Poloha', 'location': 'Poloha',
'no_location': 'no_location':
'Ak chcete získať údaje o počasí pre aktuálnu polohu, povoľte službu určovania polohy.', 'Ak chcete získať údaje o počasí pre aktuálnu polohu, povoľte službu určovania polohy.',
'theme': 'Téma', 'theme': 'Téma',
'low': 'Nízky', 'low': 'Nízky',
'high': 'Vysoký', 'high': 'Vysoký',
'normal': 'Normálny', 'normal': 'Normálny',
'lat': 'Zemepisná šírka', 'lat': 'Zemepisná šírka',
'lon': 'Zemepisná dĺžka', 'lon': 'Zemepisná dĺžka',
'create': 'Vytvoriť', 'create': 'Vytvoriť',
'city': 'Miesto', 'city': 'Miesto',
'district': 'Okres', 'district': 'Okres',
'noWeatherCard': 'Pridať mesto', 'noWeatherCard': 'Pridať mesto',
'deletedCardWeather': 'Vymazať mesto', 'deletedCardWeather': 'Vymazať mesto',
'deletedCardWeatherQuery': 'Naozaj chcete odstrániť mesto?', 'deletedCardWeatherQuery': 'Naozaj chcete odstrániť mesto?',
'delete': 'Odstrániť', 'delete': 'Odstrániť',
'cancel': 'Zrušiť', 'cancel': 'Zrušiť',
'time': 'Čas v meste', 'time': 'Čas v meste',
'validateName': 'Prosím zadajte názov', 'validateName': 'Prosím zadajte názov',
'measurements': 'Jednotky merania', 'measurements': 'Jednotky merania',
'degrees': 'Stupňe', 'degrees': 'Stupňe',
'celsius': 'Celzius', 'celsius': 'Celzius',
'fahrenheit': 'Fahrenheit', 'fahrenheit': 'Fahrenheit',
'imperial': 'Imperiálne', 'imperial': 'Imperiálne',
'metric': 'Metrické', 'metric': 'Metrické',
'validateValue': 'Zadajte hodnotu', 'validateValue': 'Zadajte hodnotu',
'validateNumber': 'Zadajte platné číslo', 'validateNumber': 'Zadajte platné číslo',
'validate90': 'Hodnota musí byť medzi -90 a 90', 'validate90': 'Hodnota musí byť medzi -90 a 90',
'validate180': 'Hodnota musí byť medzi -180 a 180', 'validate180': 'Hodnota musí byť medzi -180 a 180',
'notifications': 'Notifikácie', 'notifications': 'Notifikácie',
'sunrise': 'Východ slnka', 'sunrise': 'Východ slnka',
'sunset': 'Západ slnka', 'sunset': 'Západ slnka',
'timeformat': 'Formát času', 'timeformat': 'Formát času',
'12': '12-hodinový', '12': '12-hodinový',
'24': '24-hodinový', '24': '24-hodinový',
'cloudcover': 'Oblačnosť', 'cloudcover': 'Oblačnosť',
'uvIndex': 'UV-index', 'uvIndex': 'UV-index',
'materialColor': 'Dynamické Farby', 'materialColor': 'Dynamické Farby',
'uvLow': 'Nízky', 'uvLow': 'Nízky',
'uvAverage': 'Mierny', 'uvAverage': 'Mierny',
'uvHigh': 'Vysoký', 'uvHigh': 'Vysoký',
'uvVeryHigh': 'Veľmi vysoký', 'uvVeryHigh': 'Veľmi vysoký',
'uvExtreme': 'Extrémny', 'uvExtreme': 'Extrémny',
'weatherMore': 'Predpoveď počasia na 12 dní', 'weatherMore': 'Predpoveď počasia na 12 dní',
'windgusts': 'Nárazy vetra', 'windgusts': 'Nárazy vetra',
'north': 'Sever', 'north': 'Sever',
'northeast': 'Severo-Východ', 'northeast': 'Severo-Východ',
'east': 'Východ', 'east': 'Východ',
'southeast': 'Juhovýchod', 'southeast': 'Juhovýchod',
'south': 'Juž', 'south': 'Juž',
'southwest': 'Juhozápad', 'southwest': 'Juhozápad',
'west': 'Západ', 'west': 'Západ',
'northwest': 'Severo-Západ', 'northwest': 'Severo-Západ',
'project': 'Projekt na', 'project': 'Projekt na',
'version': 'Verzia aplikácie', 'version': 'Verzia aplikácie',
'precipitationProbability': 'Pravdepodobnosť zrážok', 'precipitationProbability': 'Pravdepodobnosť zrážok',
'apparentTemperatureMin': 'Minimálna pocitová teplota', 'apparentTemperatureMin': 'Minimálna pocitová teplota',
'apparentTemperatureMax': 'Maximálna pocitová teplota', 'apparentTemperatureMax': 'Maximálna pocitová teplota',
'amoledTheme': 'AMOLED-téma', 'amoledTheme': 'AMOLED-téma',
'appearance': 'Vzhľad', 'appearance': 'Vzhľad',
'functions': 'Funkcie', 'functions': 'Funkcie',
'data': 'Dáta', 'data': 'Dáta',
'language': 'Jazyk', 'language': 'Jazyk',
'timeRange': 'Frekvencia (v hodinách)', 'timeRange': 'Frekvencia (v hodinách)',
'timeStart': 'Čas začiatku', 'timeStart': 'Čas začiatku',
'timeEnd': 'Čas ukončenia', 'timeEnd': 'Čas ukončenia',
'support': 'Podpora', 'support': 'Podpora',
'system': 'Systém', 'system': 'Systém',
'dark': 'Tmavá', 'dark': 'Tmavá',
'light': 'Svetlá', 'light': 'Svetlá',
'license': 'Licencie', 'license': 'Licencie',
'widget': 'Widget', 'widget': 'Widget',
'widgetBackground': 'Pozadie widgetu', 'widgetBackground': 'Pozadie widgetu',
'widgetText': 'Text widgetu', 'widgetText': 'Text widgetu',
'dewpoint': 'Rosný bod', 'dewpoint': 'Rosný bod',
'shortwaveRadiation': 'Krátka vlnová radiácia', 'shortwaveRadiation': 'Krátka vlnová radiácia',
'roundDegree': 'Zaokrúhliť stupne', 'roundDegree': 'Zaokrúhliť stupne',
'settings_full': 'Nastavenia', 'settings_full': 'Nastavenia',
'cities': 'Mestá', 'cities': 'Mestá',
'searchMethod': 'Použite vyhľadávanie alebo geolokáciu', 'searchMethod': 'Použite vyhľadávanie alebo geolokáciu',
'done': 'Hotovo', 'done': 'Hotovo',
'groups': 'Naše skupiny', 'groups': 'Naše skupiny',
'openMeteo': 'Údaje od Open-Meteo (CC-BY 4.0)', 'openMeteo': 'Údaje od Open-Meteo (CC-BY 4.0)',
'hourlyVariables': 'Hodinové meteorologické premenné', 'hourlyVariables': 'Hodinové meteorologické premenné',
'dailyVariables': 'Denné meteorologické premenné', 'dailyVariables': 'Denné meteorologické premenné',
'largeElement': 'Veľké zobrazenie počasia', 'largeElement': 'Veľké zobrazenie počasia',
'map': 'Mapa', 'map': 'Mapa',
'clearCacheStore': 'Vymazať vyrovnávaciu pamäť', 'clearCacheStore': 'Vymazať vyrovnávaciu pamäť',
'deletedCacheStore': 'Vymazávanie vyrovnávacej pamäte', 'deletedCacheStore': 'Vymazávanie vyrovnávacej pamäte',
'deletedCacheStoreQuery': 'deletedCacheStoreQuery':
'Ste si istí, že chcete vymazať vyrovnávaciu pamäť?', 'Ste si istí, že chcete vymazať vyrovnávaciu pamäť?',
'addWidget': 'Pridať widget', 'addWidget': 'Pridať widget',
'hideMap': 'Skryť mapu', 'hideMap': 'Skryť mapu',
}; };
} }

View file

@ -1,142 +1,142 @@
class TrTr { class TrTr {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'Başlat', 'start': 'Başlat',
'description': 'description':
'Herhangi bir yer için her saat, gün ve hafta için güncel hava durumu tahmini sunan hava durumu uygulaması.', 'Herhangi bir yer için her saat, gün ve hafta için güncel hava durumu tahmini sunan hava durumu uygulaması.',
'name': 'Hava Durumu', 'name': 'Hava Durumu',
'name2': 'Pratik Tasarım', 'name2': 'Pratik Tasarım',
'name3': 'Bizimle İletişime Geçin', 'name3': 'Bizimle İletişime Geçin',
'description2': 'description2':
'Tüm gezinme, uygulama ile mümkün olduğunca rahat ve hızlı etkileşim kurmak için tasarlanmıştır.', 'Tüm gezinme, uygulama ile mümkün olduğunca rahat ve hızlı etkileşim kurmak için tasarlanmıştır.',
'description3': 'description3':
'Herhangi bir sorunla karşılaşırsanız, lütfen bize e-posta veya uygulama yorumları aracılığıyla ulaşın.', 'Herhangi bir sorunla karşılaşırsanız, lütfen bize e-posta veya uygulama yorumları aracılığıyla ulaşın.',
'next': 'Devam', 'next': 'Devam',
'search': 'Arayış...', 'search': 'Arayış...',
'loading': 'Yükleniyor...', 'loading': 'Yükleniyor...',
'searchCity': 'Şehrinizi bulun', 'searchCity': 'Şehrinizi bulun',
'humidity': 'Nem', 'humidity': 'Nem',
'wind': 'Rüzgar', 'wind': 'Rüzgar',
'visibility': 'Görüş', 'visibility': 'Görüş',
'feels': 'Hissedilen', 'feels': 'Hissedilen',
'evaporation': 'Buharlaşma', 'evaporation': 'Buharlaşma',
'precipitation': 'Yağış', 'precipitation': 'Yağış',
'direction': 'Yön', 'direction': 'Yön',
'pressure': 'Bası', 'pressure': 'Bası',
'rain': 'Yağmur', 'rain': 'Yağmur',
'clear_sky': 'ık gökyüzü', 'clear_sky': 'ık gökyüzü',
'cloudy': 'Bulutlu', 'cloudy': 'Bulutlu',
'overcast': 'Kapalı', 'overcast': 'Kapalı',
'fog': 'Sis', 'fog': 'Sis',
'drizzle': 'Çiseleme', 'drizzle': 'Çiseleme',
'drizzling_rain': 'Çiseleyen Yağmur', 'drizzling_rain': 'Çiseleyen Yağmur',
'freezing_rain': 'Dondurucu Yağmur', 'freezing_rain': 'Dondurucu Yağmur',
'heavy_rains': 'ırı Yağmurlar', 'heavy_rains': 'ırı Yağmurlar',
'snow': 'Kar', 'snow': 'Kar',
'thunderstorm': 'Gök Gürültülü Fırtına', 'thunderstorm': 'Gök Gürültülü Fırtına',
'kph': 'km/sa', 'kph': 'km/sa',
'mph': 'mil/sa', 'mph': 'mil/sa',
'm/s': 'm/s', 'm/s': 'm/s',
'mmHg': 'mmHg', 'mmHg': 'mmHg',
'mi': 'mil', 'mi': 'mil',
'km': 'km', 'km': 'km',
'inch': 'inç', 'inch': 'inç',
'mm': 'mm', 'mm': 'mm',
'hPa': 'hPa', 'hPa': 'hPa',
'settings': 'Ayarlar', 'settings': 'Ayarlar',
'no_inter': 'İnternet yok', 'no_inter': 'İnternet yok',
'on_inter': 'Hava durumu verilerini almak için interneti açın.', 'on_inter': 'Hava durumu verilerini almak için interneti açın.',
'location': 'Konum', 'location': 'Konum',
'no_location': 'no_location':
'Mevcut konumun hava durumu verilerini almak için konum servisini açın.', 'Mevcut konumun hava durumu verilerini almak için konum servisini açın.',
'theme': 'Tema', 'theme': 'Tema',
'low': 'Düşük', 'low': 'Düşük',
'high': 'Yüksek', 'high': 'Yüksek',
'normal': 'Normal', 'normal': 'Normal',
'lat': 'Enlem', 'lat': 'Enlem',
'lon': 'Boylam', 'lon': 'Boylam',
'create': 'Oluştur', 'create': 'Oluştur',
'city': 'Şehir', 'city': 'Şehir',
'district': 'İlçe', 'district': 'İlçe',
'noWeatherCard': 'Şehri ekle', 'noWeatherCard': 'Şehri ekle',
'deletedCardWeather': 'Şehir silme', 'deletedCardWeather': 'Şehir silme',
'deletedCardWeatherQuery': 'Şehri silmek istediğinizden emin misiniz?', 'deletedCardWeatherQuery': 'Şehri silmek istediğinizden emin misiniz?',
'delete': 'Sil', 'delete': 'Sil',
'cancel': 'İptal', 'cancel': 'İptal',
'time': 'Şehirde Saat', 'time': 'Şehirde Saat',
'validateName': 'Lütfen bir isim girin', 'validateName': 'Lütfen bir isim girin',
'measurements': 'Ölçüm sistemi', 'measurements': 'Ölçüm sistemi',
'degrees': 'Dereceler', 'degrees': 'Dereceler',
'celsius': 'Celsius', 'celsius': 'Celsius',
'fahrenheit': 'Fahrenheit', 'fahrenheit': 'Fahrenheit',
'imperial': 'İmparatorluk', 'imperial': 'İmparatorluk',
'metric': 'Metrik', 'metric': 'Metrik',
'validateValue': 'Lütfen bir değer girin', 'validateValue': 'Lütfen bir değer girin',
'validateNumber': 'Lütfen bir sayı girin', 'validateNumber': 'Lütfen bir sayı girin',
'validate90': 'Değer -90 ile 90 arasında olmalıdır', 'validate90': 'Değer -90 ile 90 arasında olmalıdır',
'validate180': 'Değer -180 ile 180 arasında olmalıdır', 'validate180': 'Değer -180 ile 180 arasında olmalıdır',
'notifications': 'Bildirme', 'notifications': 'Bildirme',
'sunrise': 'Güneş doğuşu', 'sunrise': 'Güneş doğuşu',
'sunset': 'Güneş batışı', 'sunset': 'Güneş batışı',
'timeformat': 'Saat biçimi', 'timeformat': 'Saat biçimi',
'12': '12 saat', '12': '12 saat',
'24': '24 saat', '24': '24 saat',
'cloudcover': 'Bulut örtüsü', 'cloudcover': 'Bulut örtüsü',
'uvIndex': 'UV-indeksi', 'uvIndex': 'UV-indeksi',
'materialColor': 'Dinamik Renkler', 'materialColor': 'Dinamik Renkler',
'uvLow': 'Düşük', 'uvLow': 'Düşük',
'uvAverage': 'Orta', 'uvAverage': 'Orta',
'uvHigh': 'Yüksek', 'uvHigh': 'Yüksek',
'uvVeryHigh': 'Çok yüksek', 'uvVeryHigh': 'Çok yüksek',
'uvExtreme': 'ırı', 'uvExtreme': 'ırı',
'weatherMore': '12 günlük hava tahmini', 'weatherMore': '12 günlük hava tahmini',
'windgusts': 'Bir telaş', 'windgusts': 'Bir telaş',
'north': 'Kuzey', 'north': 'Kuzey',
'northeast': 'Kuzeydoğu', 'northeast': 'Kuzeydoğu',
'east': 'Doğu', 'east': 'Doğu',
'southeast': 'Güneydoğu', 'southeast': 'Güneydoğu',
'south': 'Güney', 'south': 'Güney',
'southwest': 'Güneybatı', 'southwest': 'Güneybatı',
'west': 'Batı', 'west': 'Batı',
'northwest': 'Kuzeybatı', 'northwest': 'Kuzeybatı',
'project': 'Proje üzerinde', 'project': 'Proje üzerinde',
'version': 'Uygulama sürümü', 'version': 'Uygulama sürümü',
'precipitationProbability': 'Yağış olasılığı', 'precipitationProbability': 'Yağış olasılığı',
'apparentTemperatureMin': 'Minimum hissedilen sıcaklık', 'apparentTemperatureMin': 'Minimum hissedilen sıcaklık',
'apparentTemperatureMax': 'Maksimum hissedilen sıcaklık', 'apparentTemperatureMax': 'Maksimum hissedilen sıcaklık',
'amoledTheme': 'AMOLED-teması', 'amoledTheme': 'AMOLED-teması',
'appearance': 'Görünüm', 'appearance': 'Görünüm',
'functions': 'Fonksiyonlar', 'functions': 'Fonksiyonlar',
'data': 'Veri', 'data': 'Veri',
'language': 'Dil', 'language': 'Dil',
'timeRange': 'Sıklık (saat cinsinden)', 'timeRange': 'Sıklık (saat cinsinden)',
'timeStart': 'Başlangıç zamanı', 'timeStart': 'Başlangıç zamanı',
'timeEnd': 'Bitiş zamanı', 'timeEnd': 'Bitiş zamanı',
'support': 'Destek', 'support': 'Destek',
'system': 'Sistem', 'system': 'Sistem',
'dark': 'Karanlık', 'dark': 'Karanlık',
'light': 'Aydınlık', 'light': 'Aydınlık',
'license': 'Lisanslar', 'license': 'Lisanslar',
'widget': 'Araç', 'widget': 'Araç',
'widgetBackground': 'Araç Arka Planı', 'widgetBackground': 'Araç Arka Planı',
'widgetText': 'Araç metni', 'widgetText': 'Araç metni',
'dewpoint': 'Çiğ noktası', 'dewpoint': 'Çiğ noktası',
'shortwaveRadiation': 'Kısa dalga radyasyonu', 'shortwaveRadiation': 'Kısa dalga radyasyonu',
'roundDegree': 'Dereceleri yuvarla', 'roundDegree': 'Dereceleri yuvarla',
'settings_full': 'Ayarlar', 'settings_full': 'Ayarlar',
'cities': 'Şehirler', 'cities': 'Şehirler',
'searchMethod': 'Arama veya konum belirleme kullanın', 'searchMethod': 'Arama veya konum belirleme kullanın',
'done': 'Tamam', 'done': 'Tamam',
'groups': 'Gruplarımız', 'groups': 'Gruplarımız',
'openMeteo': 'Open-Meteo\'dan veriler (CC-BY 4.0)', 'openMeteo': 'Open-Meteo\'dan veriler (CC-BY 4.0)',
'hourlyVariables': 'Saatlik hava değişkenleri', 'hourlyVariables': 'Saatlik hava değişkenleri',
'dailyVariables': 'Günlük hava değişkenleri', 'dailyVariables': 'Günlük hava değişkenleri',
'largeElement': 'Büyük hava durumu gösterimi', 'largeElement': 'Büyük hava durumu gösterimi',
'map': 'Harita', 'map': 'Harita',
'clearCacheStore': 'Önbelleği temizle', 'clearCacheStore': 'Önbelleği temizle',
'deletedCacheStore': 'Önbellek temizleniyor', 'deletedCacheStore': 'Önbellek temizleniyor',
'deletedCacheStoreQuery': 'deletedCacheStoreQuery':
'Önbelleği temizlemek istediğinizden emin misiniz?', 'Önbelleği temizlemek istediğinizden emin misiniz?',
'addWidget': 'Widget ekle', 'addWidget': 'Widget ekle',
'hideMap': 'Haritayı gizle', 'hideMap': 'Haritayı gizle',
}; };
} }

View file

@ -27,29 +27,29 @@ import 'package:rain/translation/zh_tw.dart';
class Translation extends Translations { class Translation extends Translations {
@override @override
Map<String, Map<String, String>> get keys => { Map<String, Map<String, String>> get keys => {
'ru_RU': RuRu().messages, 'ru_RU': RuRu().messages,
'en_US': EnUs().messages, 'en_US': EnUs().messages,
'fr_FR': FrFr().messages, 'fr_FR': FrFr().messages,
'fa_IR': FaIr().messages, 'fa_IR': FaIr().messages,
'it_IT': ItIt().messages, 'it_IT': ItIt().messages,
'de_DE': DeDe().messages, 'de_DE': DeDe().messages,
'tr_TR': TrTr().messages, 'tr_TR': TrTr().messages,
'pt_BR': PtBr().messages, 'pt_BR': PtBr().messages,
'es_ES': EsEs().messages, 'es_ES': EsEs().messages,
'sk_SK': SkSk().messages, 'sk_SK': SkSk().messages,
'nl_NL': NlNl().messages, 'nl_NL': NlNl().messages,
'hi_IN': HiIn().messages, 'hi_IN': HiIn().messages,
'ro_RO': RoRo().messages, 'ro_RO': RoRo().messages,
'zh_CN': ZhCh().messages, 'zh_CN': ZhCh().messages,
'zh_TW': ZhTw().messages, 'zh_TW': ZhTw().messages,
'pl_PL': PlPl().messages, 'pl_PL': PlPl().messages,
'ur_PK': UrPk().messages, 'ur_PK': UrPk().messages,
'cs_CZ': CsCz().messages, 'cs_CZ': CsCz().messages,
'ka_GE': KaGe().messages, 'ka_GE': KaGe().messages,
'bn_IN': BnIn().messages, 'bn_IN': BnIn().messages,
'ga_IE': GaIe().messages, 'ga_IE': GaIe().messages,
'hu_HU': HuHu().messages, 'hu_HU': HuHu().messages,
'da_DK': DaDk().messages, 'da_DK': DaDk().messages,
'ko_KR': KoKr().messages, 'ko_KR': KoKr().messages,
}; };
} }

View file

@ -1,142 +1,142 @@
class UrPk { class UrPk {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': 'شروع', 'start': 'شروع',
'description': 'description':
'ہر جگہ کے لیے ہر گھنٹے، ہر دن اور ہر ہفتے کے لیے مواقع پر تازہ پیشگوئیوں کے ساتھ موسم کا ایپلیکیشن۔', 'ہر جگہ کے لیے ہر گھنٹے، ہر دن اور ہر ہفتے کے لیے مواقع پر تازہ پیشگوئیوں کے ساتھ موسم کا ایپلیکیشن۔',
'name': 'موسم', 'name': 'موسم',
'name2': 'آسان ڈیزائن', 'name2': 'آسان ڈیزائن',
'name3': 'ہم سے رابطہ کریں', 'name3': 'ہم سے رابطہ کریں',
'description2': 'description2':
'تمام نیویگیشن کو ایسا ترتیب دیا گیا ہے کہ آپ ایپلیکیشن کے ساتھ سب سے زیادہ آسان اور تیزی سے تعامل کر سکیں۔', 'تمام نیویگیشن کو ایسا ترتیب دیا گیا ہے کہ آپ ایپلیکیشن کے ساتھ سب سے زیادہ آسان اور تیزی سے تعامل کر سکیں۔',
'description3': 'description3':
'اگر آپ کسی بھی مسائل کا سامنا کریں، براہ کرم ای میل یا ایپلیکیشن کے جوابات میں ہم سے رابطہ کریں۔', 'اگر آپ کسی بھی مسائل کا سامنا کریں، براہ کرم ای میل یا ایپلیکیشن کے جوابات میں ہم سے رابطہ کریں۔',
'next': 'اگلا', 'next': 'اگلا',
'search': 'تلاش کریں...', 'search': 'تلاش کریں...',
'loading': 'لوڈ ہو رہا ہے...', 'loading': 'لوڈ ہو رہا ہے...',
'searchCity': 'اپنا شہر تلاش کریں', 'searchCity': 'اپنا شہر تلاش کریں',
'humidity': 'نمائش', 'humidity': 'نمائش',
'wind': 'باد', 'wind': 'باد',
'visibility': 'دیکھنے کی صلاحیت', 'visibility': 'دیکھنے کی صلاحیت',
'feels': 'محسوس ہوتا ہے', 'feels': 'محسوس ہوتا ہے',
'evaporation': 'بخاری', 'evaporation': 'بخاری',
'precipitation': 'برسات', 'precipitation': 'برسات',
'direction': 'سمت', 'direction': 'سمت',
'pressure': 'دباؤ', 'pressure': 'دباؤ',
'rain': 'بارش', 'rain': 'بارش',
'clear_sky': 'صاف آسمان', 'clear_sky': 'صاف آسمان',
'cloudy': 'بادلوں سے بھرپور', 'cloudy': 'بادلوں سے بھرپور',
'overcast': 'دھندلے', 'overcast': 'دھندلے',
'fog': 'کھسک', 'fog': 'کھسک',
'drizzle': 'بوند بوند بارش', 'drizzle': 'بوند بوند بارش',
'drizzling_rain': 'چھچھوندار بارش', 'drizzling_rain': 'چھچھوندار بارش',
'freezing_rain': 'ٹھنڈی بارش', 'freezing_rain': 'ٹھنڈی بارش',
'heavy_rains': 'زوردار بارشیں', 'heavy_rains': 'زوردار بارشیں',
'snow': 'برف', 'snow': 'برف',
'thunderstorm': 'طوفانی بارش', 'thunderstorm': 'طوفانی بارش',
'kph': 'کلومیٹر فی گھنٹہ', 'kph': 'کلومیٹر فی گھنٹہ',
'mph': 'میل فی گھنٹہ', 'mph': 'میل فی گھنٹہ',
'm/s': 'میٹر/سیکنڈ', 'm/s': 'میٹر/سیکنڈ',
'mmHg': 'ملی میٹر مرکری', 'mmHg': 'ملی میٹر مرکری',
'mi': 'میل', 'mi': 'میل',
'km': 'کلومیٹر', 'km': 'کلومیٹر',
'inch': 'انچ', 'inch': 'انچ',
'mm': 'ملی میٹر', 'mm': 'ملی میٹر',
'hPa': 'ہیکٹو پاسکل', 'hPa': 'ہیکٹو پاسکل',
'settings': 'ترتیبات', 'settings': 'ترتیبات',
'no_inter': 'انٹرنیٹ نہیں ہے', 'no_inter': 'انٹرنیٹ نہیں ہے',
'on_inter': 'موسمی معلومات حاصل کرنے کے لئے انٹرنیٹ کو چالنے دیں۔', 'on_inter': 'موسمی معلومات حاصل کرنے کے لئے انٹرنیٹ کو چالنے دیں۔',
'location': 'مقام', 'location': 'مقام',
'no_location': 'no_location':
'موسمی معلومات حاصل کرنے کے لئے مقام کی تشخیص کی خدمات کو چالنے دیں۔', 'موسمی معلومات حاصل کرنے کے لئے مقام کی تشخیص کی خدمات کو چالنے دیں۔',
'theme': 'تھیم', 'theme': 'تھیم',
'low': 'کم', 'low': 'کم',
'high': 'زیادہ', 'high': 'زیادہ',
'normal': 'عام', 'normal': 'عام',
'lat': 'عرض', 'lat': 'عرض',
'lon': 'طول', 'lon': 'طول',
'create': 'تخلیق کریں', 'create': 'تخلیق کریں',
'city': 'شہر', 'city': 'شہر',
'district': 'ضلع', 'district': 'ضلع',
'noWeatherCard': 'شہر شامل کریں', 'noWeatherCard': 'شہر شامل کریں',
'deletedCardWeather': 'شہر کو حذف کر رہا ہے', 'deletedCardWeather': 'شہر کو حذف کر رہا ہے',
'deletedCardWeatherQuery': 'کیا آپ واقعی شہر کو حذف کرنا چاہتے ہیں؟', 'deletedCardWeatherQuery': 'کیا آپ واقعی شہر کو حذف کرنا چاہتے ہیں؟',
'delete': 'حذف کریں', 'delete': 'حذف کریں',
'cancel': 'منسوخ کریں', 'cancel': 'منسوخ کریں',
'time': 'شہر میں وقت', 'time': 'شہر میں وقت',
'validateName': 'براہ کرم نام درج کریں', 'validateName': 'براہ کرم نام درج کریں',
'measurements': 'پیمائش کی نظام', 'measurements': 'پیمائش کی نظام',
'degrees': 'درجہ', 'degrees': 'درجہ',
'celsius': 'سینٹی گریڈ', 'celsius': 'سینٹی گریڈ',
'fahrenheit': 'فارن ہائٹ', 'fahrenheit': 'فارن ہائٹ',
'imperial': 'امپیریل', 'imperial': 'امپیریل',
'metric': 'میٹرک', 'metric': 'میٹرک',
'validateValue': 'براہ کرم قدر درج کریں', 'validateValue': 'براہ کرم قدر درج کریں',
'validateNumber': 'براہ کرم ایک عدد درج کریں', 'validateNumber': 'براہ کرم ایک عدد درج کریں',
'validate90': 'قدر -90 سے 90 کے اندر ہونی چاہئے', 'validate90': 'قدر -90 سے 90 کے اندر ہونی چاہئے',
'validate180': 'قدر -180 سے 180 کے اندر ہونی چاہئے', 'validate180': 'قدر -180 سے 180 کے اندر ہونی چاہئے',
'notifications': 'خبریں', 'notifications': 'خبریں',
'sunrise': 'طلوع آفتاب', 'sunrise': 'طلوع آفتاب',
'sunset': 'غروب آفتاب', 'sunset': 'غروب آفتاب',
'timeformat': 'وقت کی شکل', 'timeformat': 'وقت کی شکل',
'12': '12-گھنٹے', '12': '12-گھنٹے',
'24': '24-گھنٹے', '24': '24-گھنٹے',
'cloudcover': 'ابری پردہ', 'cloudcover': 'ابری پردہ',
'uvIndex': 'یووی-انڈیکس', 'uvIndex': 'یووی-انڈیکس',
'materialColor': 'موادی رنگیں', 'materialColor': 'موادی رنگیں',
'uvLow': 'کم', 'uvLow': 'کم',
'uvAverage': 'معتدل', 'uvAverage': 'معتدل',
'uvHigh': 'زیادہ', 'uvHigh': 'زیادہ',
'uvVeryHigh': 'بہت زیادہ', 'uvVeryHigh': 'بہت زیادہ',
'uvExtreme': 'بہتی کٹھن', 'uvExtreme': 'بہتی کٹھن',
'weatherMore': '12 دنوں کی موسمی توقعات', 'weatherMore': '12 دنوں کی موسمی توقعات',
'windgusts': 'گرج', 'windgusts': 'گرج',
'north': 'شمال', 'north': 'شمال',
'northeast': 'شمال مشرق', 'northeast': 'شمال مشرق',
'east': 'مشرق', 'east': 'مشرق',
'southeast': 'جنوب مشرق', 'southeast': 'جنوب مشرق',
'south': 'جنوب', 'south': 'جنوب',
'southwest': 'جنوب مغرب', 'southwest': 'جنوب مغرب',
'west': 'مغرب', 'west': 'مغرب',
'northwest': 'شمال مغرب', 'northwest': 'شمال مغرب',
'project': 'پروجیکٹ', 'project': 'پروجیکٹ',
'version': 'ایپ کی ورژن', 'version': 'ایپ کی ورژن',
'precipitationProbability': 'برسات کی ممکنیت', 'precipitationProbability': 'برسات کی ممکنیت',
'apparentTemperatureMin': 'کم درج حرارت محسوس', 'apparentTemperatureMin': 'کم درج حرارت محسوس',
'apparentTemperatureMax': 'زیادہ درج حرارت محسوس', 'apparentTemperatureMax': 'زیادہ درج حرارت محسوس',
'amoledTheme': 'AMOLED تھیم', 'amoledTheme': 'AMOLED تھیم',
'appearance': 'ظاہریت', 'appearance': 'ظاہریت',
'functions': 'فنکشنز', 'functions': 'فنکشنز',
'data': 'ڈیٹا', 'data': 'ڈیٹا',
'language': 'زبان', 'language': 'زبان',
'timeRange': 'وقت کی مدت (گھنٹوں میں)', 'timeRange': 'وقت کی مدت (گھنٹوں میں)',
'timeStart': 'شروع کا وقت', 'timeStart': 'شروع کا وقت',
'timeEnd': 'مختتم کا وقت', 'timeEnd': 'مختتم کا وقت',
'support': 'حمایت', 'support': 'حمایت',
'system': 'سسٹم', 'system': 'سسٹم',
'dark': 'اندھیری', 'dark': 'اندھیری',
'light': 'روشن', 'light': 'روشن',
'license': 'لائسنس', 'license': 'لائسنس',
'widget': 'ویجٹ', 'widget': 'ویجٹ',
'widgetBackground': 'ویجٹ کا پس منظر', 'widgetBackground': 'ویجٹ کا پس منظر',
'widgetText': 'ویجٹ کا مواد', 'widgetText': 'ویجٹ کا مواد',
'dewpoint': 'دھوا پوائنٹ', 'dewpoint': 'دھوا پوائنٹ',
'shortwaveRadiation': 'چھوٹی موجی شعاع', 'shortwaveRadiation': 'چھوٹی موجی شعاع',
'W/m2': 'واٹ/میٹر مربع', 'W/m2': 'واٹ/میٹر مربع',
'roundDegree': 'ڈگری گھیریں', 'roundDegree': 'ڈگری گھیریں',
'settings_full': 'ترتیبات', 'settings_full': 'ترتیبات',
'cities': 'شہر', 'cities': 'شہر',
'searchMethod': 'تلاش یا جغرافیائی مقام استعمال کریں', 'searchMethod': 'تلاش یا جغرافیائی مقام استعمال کریں',
'done': 'ہوگیا', 'done': 'ہوگیا',
'groups': 'ہماری گروپس', 'groups': 'ہماری گروپس',
'openMeteo': 'Open-Meteo سے ڈیٹا (CC-BY 4.0)', 'openMeteo': 'Open-Meteo سے ڈیٹا (CC-BY 4.0)',
'hourlyVariables': 'ہر گھنٹے کے موسمی متغیرات', 'hourlyVariables': 'ہر گھنٹے کے موسمی متغیرات',
'dailyVariables': 'روزانہ کے موسمی متغیرات', 'dailyVariables': 'روزانہ کے موسمی متغیرات',
'largeElement': 'بڑے موسم کا ڈسپلے', 'largeElement': 'بڑے موسم کا ڈسپلے',
'map': 'نقشہ', 'map': 'نقشہ',
'clearCacheStore': 'کیچ صاف کریں', 'clearCacheStore': 'کیچ صاف کریں',
'deletedCacheStore': 'کیچ صاف کی جارہی ہے', 'deletedCacheStore': 'کیچ صاف کی جارہی ہے',
'deletedCacheStoreQuery': 'کیا آپ واقعی کیچ صاف کرنا چاہتے ہیں؟', 'deletedCacheStoreQuery': 'کیا آپ واقعی کیچ صاف کرنا چاہتے ہیں؟',
'addWidget': 'ویجٹ شامل کریں', 'addWidget': 'ویجٹ شامل کریں',
'hideMap': 'نقشہ چھپائیں', 'hideMap': 'نقشہ چھپائیں',
}; };
} }

View file

@ -1,137 +1,137 @@
class ZhCh { class ZhCh {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': '开始', 'start': '开始',
'description': '天气应用,提供每小时、每天和每周的实时预报,适用于任何地点。', 'description': '天气应用,提供每小时、每天和每周的实时预报,适用于任何地点。',
'name': '天气', 'name': '天气',
'name2': '方便的设计', 'name2': '方便的设计',
'name3': '联系我们', 'name3': '联系我们',
'description2': '所有导航均设计成能够尽可能方便快捷地与应用程序交互。', 'description2': '所有导航均设计成能够尽可能方便快捷地与应用程序交互。',
'description3': '如果您遇到任何问题,请通过电子邮件或应用评论与我们联系。', 'description3': '如果您遇到任何问题,请通过电子邮件或应用评论与我们联系。',
'next': '下一步', 'next': '下一步',
'search': '搜索...', 'search': '搜索...',
'loading': '加载中...', 'loading': '加载中...',
'searchCity': '查找城市', 'searchCity': '查找城市',
'humidity': '湿度', 'humidity': '湿度',
'wind': '风速', 'wind': '风速',
'visibility': '能见度', 'visibility': '能见度',
'feels': '体感温度', 'feels': '体感温度',
'evaporation': '蒸发量', 'evaporation': '蒸发量',
'precipitation': '降水量', 'precipitation': '降水量',
'direction': '风向', 'direction': '风向',
'pressure': '气压', 'pressure': '气压',
'rain': '', 'rain': '',
'clear_sky': '晴朗', 'clear_sky': '晴朗',
'cloudy': '多云', 'cloudy': '多云',
'overcast': '阴天', 'overcast': '阴天',
'fog': '', 'fog': '',
'drizzle': '毛毛雨', 'drizzle': '毛毛雨',
'drizzling_rain': '冻毛毛雨', 'drizzling_rain': '冻毛毛雨',
'freezing_rain': '冻雨', 'freezing_rain': '冻雨',
'heavy_rains': '阵雨', 'heavy_rains': '阵雨',
'snow': '', 'snow': '',
'thunderstorm': '雷暴', 'thunderstorm': '雷暴',
'kph': '千米/小时', 'kph': '千米/小时',
'mph': '英里/小时', 'mph': '英里/小时',
'm/s': '米/秒', 'm/s': '米/秒',
'mmHg': '毫米汞柱', 'mmHg': '毫米汞柱',
'mi': '英里', 'mi': '英里',
'km': '千米', 'km': '千米',
'inch': '英寸', 'inch': '英寸',
'mm': '毫米', 'mm': '毫米',
'hPa': '百帕', 'hPa': '百帕',
'settings': '设置', 'settings': '设置',
'no_inter': '无网络连接', 'no_inter': '无网络连接',
'on_inter': '打开网络连接以获取气象数据。', 'on_inter': '打开网络连接以获取气象数据。',
'location': '位置', 'location': '位置',
'no_location': '启用定位服务以获取当前位置的天气数据。', 'no_location': '启用定位服务以获取当前位置的天气数据。',
'theme': '主题', 'theme': '主题',
'low': '最低', 'low': '最低',
'high': '最高', 'high': '最高',
'normal': '正常', 'normal': '正常',
'lat': '纬度', 'lat': '纬度',
'lon': '经度', 'lon': '经度',
'create': '创建', 'create': '创建',
'city': '城市', 'city': '城市',
'district': '区域', 'district': '区域',
'noWeatherCard': '添加城市', 'noWeatherCard': '添加城市',
'deletedCardWeather': '删除城市', 'deletedCardWeather': '删除城市',
'deletedCardWeatherQuery': '确定要删除该城市吗?', 'deletedCardWeatherQuery': '确定要删除该城市吗?',
'delete': '删除', 'delete': '删除',
'cancel': '取消', 'cancel': '取消',
'time': '城市时间', 'time': '城市时间',
'validateName': '请输入名称', 'validateName': '请输入名称',
'measurements': '度量系统', 'measurements': '度量系统',
'degrees': '', 'degrees': '',
'celsius': '摄氏度', 'celsius': '摄氏度',
'fahrenheit': '华氏度', 'fahrenheit': '华氏度',
'imperial': '英制', 'imperial': '英制',
'metric': '公制', 'metric': '公制',
'validateValue': '请输入值', 'validateValue': '请输入值',
'validateNumber': '请输入有效数字', 'validateNumber': '请输入有效数字',
'validate90': '值必须介于-90和90之间', 'validate90': '值必须介于-90和90之间',
'validate180': '值必须介于-180和180之间', 'validate180': '值必须介于-180和180之间',
'notifications': '通知', 'notifications': '通知',
'sunrise': '日出', 'sunrise': '日出',
'sunset': '日落', 'sunset': '日落',
'timeformat': '时间格式', 'timeformat': '时间格式',
'12': '12小时制', '12': '12小时制',
'24': '24小时制', '24': '24小时制',
'cloudcover': '云量', 'cloudcover': '云量',
'uvIndex': '紫外线指数', 'uvIndex': '紫外线指数',
'materialColor': '动态颜色', 'materialColor': '动态颜色',
'uvLow': '', 'uvLow': '',
'uvAverage': '中等', 'uvAverage': '中等',
'uvHigh': '', 'uvHigh': '',
'uvVeryHigh': '很高', 'uvVeryHigh': '很高',
'uvExtreme': '极高', 'uvExtreme': '极高',
'weatherMore': '12天天气预报', 'weatherMore': '12天天气预报',
'windgusts': '阵风', 'windgusts': '阵风',
'north': '', 'north': '',
'northeast': '东北', 'northeast': '东北',
'east': '', 'east': '',
'southeast': '东南', 'southeast': '东南',
'south': '', 'south': '',
'southwest': '西南', 'southwest': '西南',
'west': '西', 'west': '西',
'northwest': '西北', 'northwest': '西北',
'project': '项目使用', 'project': '项目使用',
'version': '应用程序版本', 'version': '应用程序版本',
'precipitationProbability': '降水概率', 'precipitationProbability': '降水概率',
'apparentTemperatureMin': '最低体感温度', 'apparentTemperatureMin': '最低体感温度',
'apparentTemperatureMax': '最高体感温度', 'apparentTemperatureMax': '最高体感温度',
'amoledTheme': 'AMOLED主题', 'amoledTheme': 'AMOLED主题',
'appearance': '外观', 'appearance': '外观',
'functions': '功能', 'functions': '功能',
'data': '数据', 'data': '数据',
'language': '语言', 'language': '语言',
'timeRange': '频率(小时)', 'timeRange': '频率(小时)',
'timeStart': '开始时间', 'timeStart': '开始时间',
'timeEnd': '结束时间', 'timeEnd': '结束时间',
'support': '支持', 'support': '支持',
'system': '系统', 'system': '系统',
'dark': '', 'dark': '',
'light': '', 'light': '',
'license': '许可证', 'license': '许可证',
'widget': '小部件', 'widget': '小部件',
'widgetBackground': '小部件背景', 'widgetBackground': '小部件背景',
'widgetText': '小部件文本', 'widgetText': '小部件文本',
'dewpoint': '露点', 'dewpoint': '露点',
'shortwaveRadiation': '短波辐射', 'shortwaveRadiation': '短波辐射',
'roundDegree': '四舍五入度数', 'roundDegree': '四舍五入度数',
'settings_full': '设置', 'settings_full': '设置',
'cities': '城市', 'cities': '城市',
'searchMethod': '使用搜索或地理定位', 'searchMethod': '使用搜索或地理定位',
'done': '完成', 'done': '完成',
'groups': '我们的组', 'groups': '我们的组',
'openMeteo': '来自Open-Meteo的数据 (CC-BY 4.0)', 'openMeteo': '来自Open-Meteo的数据 (CC-BY 4.0)',
'hourlyVariables': '每小时天气变量', 'hourlyVariables': '每小时天气变量',
'dailyVariables': '每日天气变量', 'dailyVariables': '每日天气变量',
'largeElement': '大天气显示', 'largeElement': '大天气显示',
'map': '地图', 'map': '地图',
'clearCacheStore': '清除缓存', 'clearCacheStore': '清除缓存',
'deletedCacheStore': '正在清除缓存', 'deletedCacheStore': '正在清除缓存',
'deletedCacheStoreQuery': '您确定要清除缓存吗?', 'deletedCacheStoreQuery': '您确定要清除缓存吗?',
'addWidget': '添加小部件', 'addWidget': '添加小部件',
'hideMap': '隐藏地图', 'hideMap': '隐藏地图',
}; };
} }

View file

@ -1,138 +1,138 @@
class ZhTw { class ZhTw {
Map<String, String> get messages => { Map<String, String> get messages => {
'start': '開始使用', 'start': '開始使用',
'description': '一個提供實時天氣資訊的天氣軟體。', 'description': '一個提供實時天氣資訊的天氣軟體。',
'name': '天氣', 'name': '天氣',
'name2': '方便優雅的設計', 'name2': '方便優雅的設計',
'name3': '聯絡我們', 'name3': '聯絡我們',
'description2': '所有導覽均設計得盡可能方便交互', 'description2': '所有導覽均設計得盡可能方便交互',
'description3': '如遇到問題請透過電郵或軟體評論與我們聯絡', 'description3': '如遇到問題請透過電郵或軟體評論與我們聯絡',
'next': '下一步', 'next': '下一步',
'search': '搜尋……', 'search': '搜尋……',
'loading': '載入中……', 'loading': '載入中……',
'searchCity': '查找你的所在地', 'searchCity': '查找你的所在地',
'humidity': '濕度', 'humidity': '濕度',
'wind': '風速', 'wind': '風速',
'visibility': '可見度', 'visibility': '可見度',
'feels': '體感', 'feels': '體感',
'evaporation': '蒸發量', 'evaporation': '蒸發量',
'precipitation': '降水量', 'precipitation': '降水量',
'direction': '風向', 'direction': '風向',
'pressure': '氣壓', 'pressure': '氣壓',
'rain': '', 'rain': '',
'clear_sky': '晴朗', 'clear_sky': '晴朗',
'cloudy': '多雲', 'cloudy': '多雲',
'overcast': '陰天', 'overcast': '陰天',
'fog': '', 'fog': '',
'drizzle': '毛毛雨', 'drizzle': '毛毛雨',
'drizzling_rain': '冻雾雨', 'drizzling_rain': '冻雾雨',
'freezing_rain': '凍雨', 'freezing_rain': '凍雨',
'heavy_rains': '大雨', 'heavy_rains': '大雨',
'snow': '', 'snow': '',
'thunderstorm': '雷暴', 'thunderstorm': '雷暴',
'kph': '公里/時', 'kph': '公里/時',
'mph': '英里/時', 'mph': '英里/時',
'm/s': '米/秒', 'm/s': '米/秒',
'mmHg': '毫米汞柱', 'mmHg': '毫米汞柱',
'mi': '英里', 'mi': '英里',
'km': '公里', 'km': '公里',
'inch': '英呎', 'inch': '英呎',
'mm': '毫米', 'mm': '毫米',
'hPa': '百帕', 'hPa': '百帕',
'settings': '設定', 'settings': '設定',
'no_inter': '沒有網路連線', 'no_inter': '沒有網路連線',
'on_inter': '啟用網路以獲取氣象資料。', 'on_inter': '啟用網路以獲取氣象資料。',
'location': '位置', 'location': '位置',
'no_location': '啟用位置服務以獲取當前位置的天氣資訊。', 'no_location': '啟用位置服務以獲取當前位置的天氣資訊。',
'theme': '主題', 'theme': '主題',
'low': '', 'low': '',
'high': '', 'high': '',
'normal': '正常', 'normal': '正常',
'lat': '維度', 'lat': '維度',
'lon': '精度', 'lon': '精度',
'create': '建立', 'create': '建立',
'city': '城市', 'city': '城市',
'district': '', 'district': '',
'noWeatherCard': '新增城市', 'noWeatherCard': '新增城市',
'deletedCardWeather': '刪除城市', 'deletedCardWeather': '刪除城市',
'deletedCardWeatherQuery': '你確定要刪除這個城市嗎?', 'deletedCardWeatherQuery': '你確定要刪除這個城市嗎?',
'delete': '刪除', 'delete': '刪除',
'cancel': '取消', 'cancel': '取消',
'time': '城市時間', 'time': '城市時間',
'validateName': '請輸入名稱', 'validateName': '請輸入名稱',
'measurements': '度量單位', 'measurements': '度量單位',
'degrees': '', 'degrees': '',
'celsius': '攝氏度', 'celsius': '攝氏度',
'fahrenheit': '華氏度', 'fahrenheit': '華氏度',
'imperial': '英制', 'imperial': '英制',
'metric': '公制', 'metric': '公制',
'validateValue': '請輸入一個值', 'validateValue': '請輸入一個值',
'validateNumber': '請輸入一個有效數字', 'validateNumber': '請輸入一個有效數字',
'validate90': '數值必須在-90和90之間', 'validate90': '數值必須在-90和90之間',
'validate180': '數值必須在-180和180之間', 'validate180': '數值必須在-180和180之間',
'notifications': '通知', 'notifications': '通知',
'sunrise': '日出', 'sunrise': '日出',
'sunset': '日落', 'sunset': '日落',
'timeformat': '時間格式', 'timeformat': '時間格式',
'12': '12小時', '12': '12小時',
'24': '24小時', '24': '24小時',
'cloudcover': '雲量', 'cloudcover': '雲量',
'uvIndex': 'UV值', 'uvIndex': 'UV值',
'materialColor': '動態取色', 'materialColor': '動態取色',
'uvLow': '', 'uvLow': '',
'uvAverage': '中等', 'uvAverage': '中等',
'uvHigh': '', 'uvHigh': '',
'uvVeryHigh': '很高', 'uvVeryHigh': '很高',
'uvExtreme': '超高', 'uvExtreme': '超高',
'weatherMore': '12天天氣預報', 'weatherMore': '12天天氣預報',
'windgusts': '陣風', 'windgusts': '陣風',
'north': '', 'north': '',
'northeast': '東北', 'northeast': '東北',
'east': '', 'east': '',
'southeast': '東南', 'southeast': '東南',
'south': '', 'south': '',
'southwest': '西南', 'southwest': '西南',
'west': '西', 'west': '西',
'northwest': '西北', 'northwest': '西北',
'project': '造訪我們的', 'project': '造訪我們的',
'version': '應用版本', 'version': '應用版本',
'precipitationProbability': '降水概率', 'precipitationProbability': '降水概率',
'apparentTemperatureMin': '最低體感溫度', 'apparentTemperatureMin': '最低體感溫度',
'apparentTemperatureMax': '最高體感溫度', 'apparentTemperatureMax': '最高體感溫度',
'amoledTheme': 'AMOLED主題', 'amoledTheme': 'AMOLED主題',
'appearance': '外觀', 'appearance': '外觀',
'functions': '功能', 'functions': '功能',
'data': '資料', 'data': '資料',
'language': '語言', 'language': '語言',
'timeRange': '頻率(小時)', 'timeRange': '頻率(小時)',
'timeStart': '起始時間', 'timeStart': '起始時間',
'timeEnd': '終止時間', 'timeEnd': '終止時間',
'support': '支援', 'support': '支援',
'system': '系統', 'system': '系統',
'dark': '黑暗', 'dark': '黑暗',
'light': '明亮', 'light': '明亮',
'license': '許可證', 'license': '許可證',
'widget': '小組件', 'widget': '小組件',
'widgetBackground': '小組件背景', 'widgetBackground': '小組件背景',
'widgetText': '小組件文字', 'widgetText': '小組件文字',
'dewpoint': '露點', 'dewpoint': '露點',
'shortwaveRadiation': '短波輻射', 'shortwaveRadiation': '短波輻射',
'W/m2': '瓦/平方米', 'W/m2': '瓦/平方米',
'roundDegree': '四捨五入度數', 'roundDegree': '四捨五入度數',
'settings_full': '設定', 'settings_full': '設定',
'cities': '城市', 'cities': '城市',
'searchMethod': '使用搜尋或地理位置', 'searchMethod': '使用搜尋或地理位置',
'done': '完成', 'done': '完成',
'groups': '我們的小組', 'groups': '我們的小組',
'openMeteo': '來自Open-Meteo的數據 (CC-BY 4.0)', 'openMeteo': '來自Open-Meteo的數據 (CC-BY 4.0)',
'hourlyVariables': '每小時天氣變量', 'hourlyVariables': '每小時天氣變量',
'dailyVariables': '每日天氣變量', 'dailyVariables': '每日天氣變量',
'largeElement': '大型天氣顯示', 'largeElement': '大型天氣顯示',
'map': '地圖', 'map': '地圖',
'clearCacheStore': '清除快取', 'clearCacheStore': '清除快取',
'deletedCacheStore': '正在清除快取', 'deletedCacheStore': '正在清除快取',
'deletedCacheStoreQuery': '您確定要清除快取嗎?', 'deletedCacheStoreQuery': '您確定要清除快取嗎?',
'addWidget': '新增小工具', 'addWidget': '新增小工具',
'hideMap': '隱藏地圖', 'hideMap': '隱藏地圖',
}; };
} }

View file

@ -1385,5 +1385,5 @@ packages:
source: hosted source: hosted
version: "3.1.3" version: "3.1.3"
sdks: sdks:
dart: ">=3.7.0 <4.0.0" dart: ">=3.7.2 <4.0.0"
flutter: ">=3.27.0" flutter: ">=3.27.0"

View file

@ -6,7 +6,7 @@ publish_to: "none"
version: 1.3.8+41 version: 1.3.8+41
environment: environment:
sdk: ">=3.7.0 <4.0.0" sdk: ">=3.7.2 <4.0.0"
dependencies: dependencies:
flutter: flutter: