mirror of
https://git.selfprivacy.org/kherel/selfprivacy.org.app.git
synced 2024-11-17 14:19:16 +00:00
chore: Merge master' into backups-rewrite
This commit is contained in:
commit
e7ec1c1b53
|
@ -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_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ı.",
|
"extending_volume_error": "Yaddaş genişləndirilməsinə başlamaq alınmadı.",
|
||||||
"size": "Ölçüsü",
|
"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.",
|
"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_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.",
|
"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": {
|
"timer": {
|
||||||
"sec": "{} san"
|
"sec": "{} san"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -345,7 +345,6 @@
|
||||||
"extending_volume_price_info": "Кошт уключае ПДВ і ацэньваецца на аснове дадзеных аб цэнах, прадстаўленых Hetzner. Сервер будзе перагружаны падчас працэсу.",
|
"extending_volume_price_info": "Кошт уключае ПДВ і ацэньваецца на аснове дадзеных аб цэнах, прадстаўленых Hetzner. Сервер будзе перагружаны падчас працэсу.",
|
||||||
"extending_volume_error": "Не ўдалося ініцыялізаваць пашырэнне тома.",
|
"extending_volume_error": "Не ўдалося ініцыялізаваць пашырэнне тома.",
|
||||||
"size": "Памер",
|
"size": "Памер",
|
||||||
"euro": "Еўро",
|
|
||||||
"data_migration_title": "Міграцыя дадзеных",
|
"data_migration_title": "Міграцыя дадзеных",
|
||||||
"card_title": "Сховішча",
|
"card_title": "Сховішча",
|
||||||
"data_migration_notice": "Падчас міграцыі ўсе службы будуць адключаны.",
|
"data_migration_notice": "Падчас міграцыі ўсе службы будуць адключаны.",
|
||||||
|
@ -473,4 +472,4 @@
|
||||||
"email_login": "Аўтарызацыя па Email",
|
"email_login": "Аўтарызацыя па Email",
|
||||||
"no_ssh_notice": "Для гэтага карыстальніка створаны толькі SSH і Email акаўнты. Адзіная аўтарызацыя для ўсіх сэрвісаў яшчэ не рэалізавана."
|
"no_ssh_notice": "Для гэтага карыстальніка створаны толькі SSH і Email акаўнты. Адзіная аўтарызацыя для ўсіх сэрвісаў яшчэ не рэалізавана."
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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_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.",
|
"extending_volume_error": "Speichererweiterung konnte nicht initialisiert werden.",
|
||||||
"size": "Größe",
|
"size": "Größe",
|
||||||
"euro": "Euro",
|
|
||||||
"data_migration_title": "Datenmigration",
|
"data_migration_title": "Datenmigration",
|
||||||
"data_migration_notice": "Während der Migration werden alle Dienste ausgeschaltet.",
|
"data_migration_notice": "Während der Migration werden alle Dienste ausgeschaltet.",
|
||||||
"start_migration_button": "Migration starten",
|
"start_migration_button": "Migration starten",
|
||||||
|
@ -473,4 +472,4 @@
|
||||||
"timer": {
|
"timer": {
|
||||||
"sec": "{} Sek"
|
"sec": "{} Sek"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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_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.",
|
"extending_volume_error": "Couldn't initialize volume extending.",
|
||||||
"size": "Size",
|
"size": "Size",
|
||||||
"euro": "Euro",
|
|
||||||
"data_migration_title": "Data migration",
|
"data_migration_title": "Data migration",
|
||||||
"data_migration_notice": "During migration all services will be turned off.",
|
"data_migration_notice": "During migration all services will be turned off.",
|
||||||
"start_migration_button": "Start migration",
|
"start_migration_button": "Start migration",
|
||||||
|
@ -515,4 +514,4 @@
|
||||||
"reset_onboarding_description": "Reset onboarding switch to show onboarding screen again",
|
"reset_onboarding_description": "Reset onboarding switch to show onboarding screen again",
|
||||||
"cubit_statuses": "Cubit loading statuses"
|
"cubit_statuses": "Cubit loading statuses"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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_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.",
|
"extending_volume_error": "Pas possible d'initialiser l'extension du volume.",
|
||||||
"size": "Taille",
|
"size": "Taille",
|
||||||
"euro": "Euro",
|
|
||||||
"data_migration_title": "Migration de données",
|
"data_migration_title": "Migration de données",
|
||||||
"data_migration_notice": "Durant la migration, tous les services ne seront plus accessibles.",
|
"data_migration_notice": "Durant la migration, tous les services ne seront plus accessibles.",
|
||||||
"start_migration_button": "Démarrer la migration",
|
"start_migration_button": "Démarrer la migration",
|
||||||
|
@ -286,4 +285,4 @@
|
||||||
"title": "Serveur VPN",
|
"title": "Serveur VPN",
|
||||||
"subtitle": "Serveur VPN privé"
|
"subtitle": "Serveur VPN privé"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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_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.",
|
"extending_volume_error": "Nie można rozpocząć rozszerzenia repozytorium.",
|
||||||
"size": "Rozmiar",
|
"size": "Rozmiar",
|
||||||
"euro": "Euro",
|
|
||||||
"data_migration_title": "Migracja danych",
|
"data_migration_title": "Migracja danych",
|
||||||
"data_migration_notice": "Na czas migracji danych wszystkie usługi zostaną wyłączone.",
|
"data_migration_notice": "Na czas migracji danych wszystkie usługi zostaną wyłączone.",
|
||||||
"start_migration_button": "Rozpocznij migrację",
|
"start_migration_button": "Rozpocznij migrację",
|
||||||
|
@ -473,4 +472,4 @@
|
||||||
"get_new_key": "Uzyskaj nowy klucz"
|
"get_new_key": "Uzyskaj nowy klucz"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -189,7 +189,6 @@
|
||||||
"extending_volume_price_info": "Цена включает НДС и рассчитана на основе данных о ценах, предоставленных Hetzner. Сервер будет перезагружен во время процесса.",
|
"extending_volume_price_info": "Цена включает НДС и рассчитана на основе данных о ценах, предоставленных Hetzner. Сервер будет перезагружен во время процесса.",
|
||||||
"extending_volume_error": "Не удалось начать расширение хранилища.",
|
"extending_volume_error": "Не удалось начать расширение хранилища.",
|
||||||
"size": "Размер",
|
"size": "Размер",
|
||||||
"euro": "Евро",
|
|
||||||
"data_migration_title": "Миграция данных",
|
"data_migration_title": "Миграция данных",
|
||||||
"data_migration_notice": "На время миграции данных все сервисы будут выключены.",
|
"data_migration_notice": "На время миграции данных все сервисы будут выключены.",
|
||||||
"start_migration_button": "Начать миграцию",
|
"start_migration_button": "Начать миграцию",
|
||||||
|
@ -478,4 +477,4 @@
|
||||||
"length_not_equal": "Длина строки [], должна быть равна {}",
|
"length_not_equal": "Длина строки [], должна быть равна {}",
|
||||||
"length_longer": "Длина строки [], должна быть меньше либо равна {}"
|
"length_longer": "Длина строки [], должна быть меньше либо равна {}"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -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_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.",
|
"extending_volume_error": "Nepodarilo sa spustiť rozšírenie úložiska.",
|
||||||
"size": "Veľkosť",
|
"size": "Veľkosť",
|
||||||
"euro": "Euro",
|
|
||||||
"data_migration_title": "Migrácia údajov",
|
"data_migration_title": "Migrácia údajov",
|
||||||
"data_migration_notice": "V čase migrácie údajov sa všetky služby vypnú.",
|
"data_migration_notice": "V čase migrácie údajov sa všetky služby vypnú.",
|
||||||
"start_migration_button": "Spustiť migráciu",
|
"start_migration_button": "Spustiť migráciu",
|
||||||
|
@ -473,4 +472,4 @@
|
||||||
"title": "Server VPN",
|
"title": "Server VPN",
|
||||||
"subtitle": "Súkromný server VPN"
|
"subtitle": "Súkromný server VPN"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -189,7 +189,6 @@
|
||||||
"extending_volume_price_info": "ราคารวมภาษีมูลค่าเพิ่มและประมาณการจากข้อมูลราคาที่จัดทำโดย Hetzner เซิร์ฟเวอร์จะรีบูตหลังจากปรับความจุ",
|
"extending_volume_price_info": "ราคารวมภาษีมูลค่าเพิ่มและประมาณการจากข้อมูลราคาที่จัดทำโดย Hetzner เซิร์ฟเวอร์จะรีบูตหลังจากปรับความจุ",
|
||||||
"extending_volume_error": "ไม่สามารถเริ่มต้นการขยายความจุได้",
|
"extending_volume_error": "ไม่สามารถเริ่มต้นการขยายความจุได้",
|
||||||
"size": "ขนาด",
|
"size": "ขนาด",
|
||||||
"euro": "ยูโร",
|
|
||||||
"data_migration_title": "การโยกย้ายข้อมูล",
|
"data_migration_title": "การโยกย้ายข้อมูล",
|
||||||
"data_migration_notice": "ระหว่างการย้ายข้อมูล ทุกเซิร์ฟเวอร์จะถูกปิด",
|
"data_migration_notice": "ระหว่างการย้ายข้อมูล ทุกเซิร์ฟเวอร์จะถูกปิด",
|
||||||
"start_migration_button": "เริ่มการย้ายข้อมูล",
|
"start_migration_button": "เริ่มการย้ายข้อมูล",
|
||||||
|
@ -294,4 +293,4 @@
|
||||||
"title": "เซิฟเวอร์ VPN",
|
"title": "เซิฟเวอร์ VPN",
|
||||||
"subtitle": "เซิฟเวอร์ VPN ส่วนตัว"
|
"subtitle": "เซิฟเวอร์ VPN ส่วนตัว"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -288,7 +288,6 @@
|
||||||
"extending_volume_price_info": "Ціна включає ПДВ і оцінюється з даних ціноутворення, наданих Hetzner. Сервер буде перезавантажений після зміни розміру.",
|
"extending_volume_price_info": "Ціна включає ПДВ і оцінюється з даних ціноутворення, наданих Hetzner. Сервер буде перезавантажений після зміни розміру.",
|
||||||
"extending_volume_error": "Не вдалося ініціалізувати розширення обсягу.",
|
"extending_volume_error": "Не вдалося ініціалізувати розширення обсягу.",
|
||||||
"size": "Розмір",
|
"size": "Розмір",
|
||||||
"euro": "Євро",
|
|
||||||
"data_migration_title": "Перенесення даних",
|
"data_migration_title": "Перенесення даних",
|
||||||
"start_migration_button": "Почати перенос",
|
"start_migration_button": "Почати перенос",
|
||||||
"migration_process": "Перенос…",
|
"migration_process": "Перенос…",
|
||||||
|
@ -473,4 +472,4 @@
|
||||||
"root_name": "Не може бути 'root'",
|
"root_name": "Не може бути 'root'",
|
||||||
"length_not_equal": "Довжина [], має бути {}"
|
"length_not_equal": "Довжина [], має бути {}"
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -4,6 +4,52 @@ class Price {
|
||||||
required this.currency,
|
required this.currency,
|
||||||
});
|
});
|
||||||
|
|
||||||
double value;
|
final double value;
|
||||||
String currency;
|
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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -46,7 +46,7 @@ class DigitalOceanServerProvider extends ServerProvider {
|
||||||
);
|
);
|
||||||
|
|
||||||
ApiAdapter _adapter;
|
ApiAdapter _adapter;
|
||||||
final String currency = 'USD';
|
final Currency currency = Currency.fromType(CurrencyType.usd);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
ServerProviderType get type => ServerProviderType.digitalOcean;
|
ServerProviderType get type => ServerProviderType.digitalOcean;
|
||||||
|
@ -400,7 +400,7 @@ class DigitalOceanServerProvider extends ServerProvider {
|
||||||
ServerMetadataEntity(
|
ServerMetadataEntity(
|
||||||
type: MetadataType.cost,
|
type: MetadataType.cost,
|
||||||
trId: 'server.monthly_cost',
|
trId: 'server.monthly_cost',
|
||||||
value: '${droplet['size']['price_monthly']} $currency',
|
value: '${droplet['size']['price_monthly']} ${currency.shortcode}',
|
||||||
),
|
),
|
||||||
ServerMetadataEntity(
|
ServerMetadataEntity(
|
||||||
type: MetadataType.location,
|
type: MetadataType.location,
|
||||||
|
|
|
@ -46,7 +46,7 @@ class HetznerServerProvider extends ServerProvider {
|
||||||
);
|
);
|
||||||
|
|
||||||
ApiAdapter _adapter;
|
ApiAdapter _adapter;
|
||||||
final String currency = 'EUR';
|
final Currency currency = Currency.fromType(CurrencyType.eur);
|
||||||
|
|
||||||
@override
|
@override
|
||||||
ServerProviderType get type => ServerProviderType.hetzner;
|
ServerProviderType get type => ServerProviderType.hetzner;
|
||||||
|
@ -260,7 +260,7 @@ class HetznerServerProvider extends ServerProvider {
|
||||||
type: MetadataType.cost,
|
type: MetadataType.cost,
|
||||||
trId: 'server.monthly_cost',
|
trId: 'server.monthly_cost',
|
||||||
value:
|
value:
|
||||||
'${server.serverType.prices[1].monthly.toStringAsFixed(2)} $currency',
|
'${server.serverType.prices[1].monthly.toStringAsFixed(2)} ${currency.shortcode}',
|
||||||
),
|
),
|
||||||
ServerMetadataEntity(
|
ServerMetadataEntity(
|
||||||
type: MetadataType.location,
|
type: MetadataType.location,
|
||||||
|
|
|
@ -43,7 +43,7 @@ class _ExtendingVolumePageState extends State<ExtendingVolumePage> {
|
||||||
bool _isError = false;
|
bool _isError = false;
|
||||||
|
|
||||||
late double _currentSliderGbValue;
|
late double _currentSliderGbValue;
|
||||||
double _euroPerGb = 1.0;
|
double _pricePerGb = 1.0;
|
||||||
|
|
||||||
final DiskSize maxSize = const DiskSize(byte: 500000000000);
|
final DiskSize maxSize = const DiskSize(byte: 500000000000);
|
||||||
late DiskSize minSize;
|
late DiskSize minSize;
|
||||||
|
@ -75,10 +75,11 @@ class _ExtendingVolumePageState extends State<ExtendingVolumePage> {
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
_euroPerGb = (snapshot.data as Price).value;
|
final price = snapshot.data as Price;
|
||||||
|
_pricePerGb = price.value;
|
||||||
_sizeController.text = _currentSliderGbValue.truncate().toString();
|
_sizeController.text = _currentSliderGbValue.truncate().toString();
|
||||||
_priceController.text =
|
_priceController.text =
|
||||||
(_euroPerGb * double.parse(_sizeController.text))
|
(_pricePerGb * double.parse(_sizeController.text))
|
||||||
.toStringAsFixed(2);
|
.toStringAsFixed(2);
|
||||||
minSize =
|
minSize =
|
||||||
widget.diskVolumeToResize.sizeTotal + DiskSize.fromGibibyte(3);
|
widget.diskVolumeToResize.sizeTotal + DiskSize.fromGibibyte(3);
|
||||||
|
@ -127,7 +128,7 @@ class _ExtendingVolumePageState extends State<ExtendingVolumePage> {
|
||||||
decoration: InputDecoration(
|
decoration: InputDecoration(
|
||||||
border: const OutlineInputBorder(),
|
border: const OutlineInputBorder(),
|
||||||
errorText: _isError ? ' ' : null,
|
errorText: _isError ? ' ' : null,
|
||||||
labelText: 'storage.euro'.tr(),
|
labelText: price.currency.shortcode,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|
Loading…
Reference in a new issue