diff --git a/assets/translations/az.json b/assets/translations/az.json index 56d67f06..1d9fb716 100644 --- a/assets/translations/az.json +++ b/assets/translations/az.json @@ -188,7 +188,6 @@ "extending_volume_price_info": "Qiymətə ƏDV daxildir və Hetzner tərəfindən təqdim edilən qiymət məlumatlarına əsaslanır. Proses zamanı server yenidən işə salınacaq.", "extending_volume_error": "Yaddaş genişləndirilməsinə başlamaq alınmadı.", "size": "Ölçüsü", - "euro": "Avro", "extending_volume_description": "Yaddaş ölçüsünün dəyişdirilməsi, serverin özünü genişləndirmədən serverinizdə daha çox məlumat saxlamağa imkan verəcəkdir. Həcmi yalnız artırmaq olar, onu azaltmaq olmaz.", "data_migration_title": "Məlumat miqrasiya", "data_migration_notice": "Məlumatların köçürülməsi zamanı bütün xidmətlər deaktiv ediləcək.", @@ -473,4 +472,4 @@ "timer": { "sec": "{} san" } -} +} \ No newline at end of file diff --git a/assets/translations/be.json b/assets/translations/be.json index e07cfc09..83f68786 100644 --- a/assets/translations/be.json +++ b/assets/translations/be.json @@ -345,7 +345,6 @@ "extending_volume_price_info": "Кошт уключае ПДВ і ацэньваецца на аснове дадзеных аб цэнах, прадстаўленых Hetzner. Сервер будзе перагружаны падчас працэсу.", "extending_volume_error": "Не ўдалося ініцыялізаваць пашырэнне тома.", "size": "Памер", - "euro": "Еўро", "data_migration_title": "Міграцыя дадзеных", "card_title": "Сховішча", "data_migration_notice": "Падчас міграцыі ўсе службы будуць адключаны.", @@ -473,4 +472,4 @@ "email_login": "Аўтарызацыя па Email", "no_ssh_notice": "Для гэтага карыстальніка створаны толькі SSH і Email акаўнты. Адзіная аўтарызацыя для ўсіх сэрвісаў яшчэ не рэалізавана." } -} +} \ No newline at end of file diff --git a/assets/translations/de.json b/assets/translations/de.json index af956aed..c2b5a6db 100644 --- a/assets/translations/de.json +++ b/assets/translations/de.json @@ -188,7 +188,6 @@ "extending_volume_description": "Durch die Speichererweiterung können Sie mehr Daten auf Ihrem Server speichern, ohne den Server selbst zu erweitern. Speicher kann nur erweitert werden, Verringerung ist nicht möglich.", "extending_volume_error": "Speichererweiterung konnte nicht initialisiert werden.", "size": "Größe", - "euro": "Euro", "data_migration_title": "Datenmigration", "data_migration_notice": "Während der Migration werden alle Dienste ausgeschaltet.", "start_migration_button": "Migration starten", @@ -473,4 +472,4 @@ "timer": { "sec": "{} Sek" } -} +} \ No newline at end of file diff --git a/assets/translations/en.json b/assets/translations/en.json index b45e6ac2..4ca6159a 100644 --- a/assets/translations/en.json +++ b/assets/translations/en.json @@ -194,7 +194,6 @@ "extending_volume_price_info": "Price includes VAT and is estimated from pricing data provided by Hetzner. Server will be rebooted after resizing.", "extending_volume_error": "Couldn't initialize volume extending.", "size": "Size", - "euro": "Euro", "data_migration_title": "Data migration", "data_migration_notice": "During migration all services will be turned off.", "start_migration_button": "Start migration", @@ -515,4 +514,4 @@ "reset_onboarding_description": "Reset onboarding switch to show onboarding screen again", "cubit_statuses": "Cubit loading statuses" } -} +} \ No newline at end of file diff --git a/assets/translations/fr.json b/assets/translations/fr.json index 0de687c9..914f3cbd 100644 --- a/assets/translations/fr.json +++ b/assets/translations/fr.json @@ -178,7 +178,6 @@ "extending_volume_price_info": "Les prix incluent la TVA et sont estimés par les données commerciales fournies par Hetzner.\nLe serveur va redémarrer après redimensionnement.", "extending_volume_error": "Pas possible d'initialiser l'extension du volume.", "size": "Taille", - "euro": "Euro", "data_migration_title": "Migration de données", "data_migration_notice": "Durant la migration, tous les services ne seront plus accessibles.", "start_migration_button": "Démarrer la migration", @@ -286,4 +285,4 @@ "title": "Serveur VPN", "subtitle": "Serveur VPN privé" } -} +} \ No newline at end of file diff --git a/assets/translations/pl.json b/assets/translations/pl.json index 21b53f62..e1f2e1d6 100644 --- a/assets/translations/pl.json +++ b/assets/translations/pl.json @@ -188,7 +188,6 @@ "extending_volume_price_info": "Cena zawiera podatek VAT i jest oparta na danych cenowych dostarczonych przez firmę Hetzner. Serwer zostanie zrestartowany w trakcie procesu.", "extending_volume_error": "Nie można rozpocząć rozszerzenia repozytorium.", "size": "Rozmiar", - "euro": "Euro", "data_migration_title": "Migracja danych", "data_migration_notice": "Na czas migracji danych wszystkie usługi zostaną wyłączone.", "start_migration_button": "Rozpocznij migrację", @@ -473,4 +472,4 @@ "get_new_key": "Uzyskaj nowy klucz" } } -} +} \ No newline at end of file diff --git a/assets/translations/ru.json b/assets/translations/ru.json index 9b0c93ad..054b2522 100644 --- a/assets/translations/ru.json +++ b/assets/translations/ru.json @@ -189,7 +189,6 @@ "extending_volume_price_info": "Цена включает НДС и рассчитана на основе данных о ценах, предоставленных Hetzner. Сервер будет перезагружен во время процесса.", "extending_volume_error": "Не удалось начать расширение хранилища.", "size": "Размер", - "euro": "Евро", "data_migration_title": "Миграция данных", "data_migration_notice": "На время миграции данных все сервисы будут выключены.", "start_migration_button": "Начать миграцию", @@ -478,4 +477,4 @@ "length_not_equal": "Длина строки [], должна быть равна {}", "length_longer": "Длина строки [], должна быть меньше либо равна {}" } -} +} \ No newline at end of file diff --git a/assets/translations/sk.json b/assets/translations/sk.json index 49538eb7..af5a7c76 100644 --- a/assets/translations/sk.json +++ b/assets/translations/sk.json @@ -254,7 +254,6 @@ "extending_volume_price_info": "Cena je vrátane DPH a vychádza z cenových údajov poskytnutých spoločnosťou Hetzner. Server sa počas procesu reštartuje.", "extending_volume_error": "Nepodarilo sa spustiť rozšírenie úložiska.", "size": "Veľkosť", - "euro": "Euro", "data_migration_title": "Migrácia údajov", "data_migration_notice": "V čase migrácie údajov sa všetky služby vypnú.", "start_migration_button": "Spustiť migráciu", @@ -473,4 +472,4 @@ "title": "Server VPN", "subtitle": "Súkromný server VPN" } -} +} \ No newline at end of file diff --git a/assets/translations/th.json b/assets/translations/th.json index db92988e..3c314087 100644 --- a/assets/translations/th.json +++ b/assets/translations/th.json @@ -189,7 +189,6 @@ "extending_volume_price_info": "ราคารวมภาษีมูลค่าเพิ่มและประมาณการจากข้อมูลราคาที่จัดทำโดย Hetzner เซิร์ฟเวอร์จะรีบูตหลังจากปรับความจุ", "extending_volume_error": "ไม่สามารถเริ่มต้นการขยายความจุได้", "size": "ขนาด", - "euro": "ยูโร", "data_migration_title": "การโยกย้ายข้อมูล", "data_migration_notice": "ระหว่างการย้ายข้อมูล ทุกเซิร์ฟเวอร์จะถูกปิด", "start_migration_button": "เริ่มการย้ายข้อมูล", @@ -294,4 +293,4 @@ "title": "เซิฟเวอร์ VPN", "subtitle": "เซิฟเวอร์ VPN ส่วนตัว" } -} +} \ No newline at end of file diff --git a/assets/translations/uk.json b/assets/translations/uk.json index 2de33241..ebbdee7a 100644 --- a/assets/translations/uk.json +++ b/assets/translations/uk.json @@ -288,7 +288,6 @@ "extending_volume_price_info": "Ціна включає ПДВ і оцінюється з даних ціноутворення, наданих Hetzner. Сервер буде перезавантажений після зміни розміру.", "extending_volume_error": "Не вдалося ініціалізувати розширення обсягу.", "size": "Розмір", - "euro": "Євро", "data_migration_title": "Перенесення даних", "start_migration_button": "Почати перенос", "migration_process": "Перенос…", @@ -473,4 +472,4 @@ "root_name": "Не може бути 'root'", "length_not_equal": "Довжина [], має бути {}" } -} +} \ No newline at end of file diff --git a/lib/logic/models/price.dart b/lib/logic/models/price.dart index 1da2677d..b60cf5bf 100644 --- a/lib/logic/models/price.dart +++ b/lib/logic/models/price.dart @@ -4,6 +4,52 @@ class Price { required this.currency, }); - double value; - String currency; + final double value; + final Currency currency; +} + +enum CurrencyType { + eur, + usd, + unkown, +} + +class Currency { + Currency({ + required this.type, + required this.shortcode, + this.fontcode, + this.symbol, + }); + + factory Currency.fromType(final CurrencyType type) { + switch (type) { + case CurrencyType.eur: + return Currency( + type: type, + shortcode: 'EUR', + fontcode: 'euro', + symbol: '€', + ); + case CurrencyType.usd: + return Currency( + type: type, + shortcode: 'USD', + fontcode: 'attach_money', + symbol: '\$', + ); + default: + return Currency( + type: type, + shortcode: '?', + fontcode: 'payments', + symbol: '?', + ); + } + } + + final CurrencyType type; + final String shortcode; + final String? fontcode; + final String? symbol; } diff --git a/lib/logic/providers/server_providers/digital_ocean.dart b/lib/logic/providers/server_providers/digital_ocean.dart index 65a7b124..93371405 100644 --- a/lib/logic/providers/server_providers/digital_ocean.dart +++ b/lib/logic/providers/server_providers/digital_ocean.dart @@ -46,7 +46,7 @@ class DigitalOceanServerProvider extends ServerProvider { ); ApiAdapter _adapter; - final String currency = 'USD'; + final Currency currency = Currency.fromType(CurrencyType.usd); @override ServerProviderType get type => ServerProviderType.digitalOcean; @@ -400,7 +400,7 @@ class DigitalOceanServerProvider extends ServerProvider { ServerMetadataEntity( type: MetadataType.cost, trId: 'server.monthly_cost', - value: '${droplet['size']['price_monthly']} $currency', + value: '${droplet['size']['price_monthly']} ${currency.shortcode}', ), ServerMetadataEntity( type: MetadataType.location, diff --git a/lib/logic/providers/server_providers/hetzner.dart b/lib/logic/providers/server_providers/hetzner.dart index 874f4f59..f7afeb3c 100644 --- a/lib/logic/providers/server_providers/hetzner.dart +++ b/lib/logic/providers/server_providers/hetzner.dart @@ -46,7 +46,7 @@ class HetznerServerProvider extends ServerProvider { ); ApiAdapter _adapter; - final String currency = 'EUR'; + final Currency currency = Currency.fromType(CurrencyType.eur); @override ServerProviderType get type => ServerProviderType.hetzner; @@ -260,7 +260,7 @@ class HetznerServerProvider extends ServerProvider { type: MetadataType.cost, trId: 'server.monthly_cost', value: - '${server.serverType.prices[1].monthly.toStringAsFixed(2)} $currency', + '${server.serverType.prices[1].monthly.toStringAsFixed(2)} ${currency.shortcode}', ), ServerMetadataEntity( type: MetadataType.location, diff --git a/lib/ui/pages/server_storage/extending_volume.dart b/lib/ui/pages/server_storage/extending_volume.dart index 41c81140..39872494 100644 --- a/lib/ui/pages/server_storage/extending_volume.dart +++ b/lib/ui/pages/server_storage/extending_volume.dart @@ -43,7 +43,7 @@ class _ExtendingVolumePageState extends State { bool _isError = false; late double _currentSliderGbValue; - double _euroPerGb = 1.0; + double _pricePerGb = 1.0; final DiskSize maxSize = const DiskSize(byte: 500000000000); late DiskSize minSize; @@ -75,10 +75,11 @@ class _ExtendingVolumePageState extends State { ], ); } - _euroPerGb = (snapshot.data as Price).value; + final price = snapshot.data as Price; + _pricePerGb = price.value; _sizeController.text = _currentSliderGbValue.truncate().toString(); _priceController.text = - (_euroPerGb * double.parse(_sizeController.text)) + (_pricePerGb * double.parse(_sizeController.text)) .toStringAsFixed(2); minSize = widget.diskVolumeToResize.sizeTotal + DiskSize.fromGibibyte(3); @@ -127,7 +128,7 @@ class _ExtendingVolumePageState extends State { decoration: InputDecoration( border: const OutlineInputBorder(), errorText: _isError ? ' ' : null, - labelText: 'storage.euro'.tr(), + labelText: price.currency.shortcode, ), ), ),