218 lines
8.4 KiB
Dart
218 lines
8.4 KiB
Dart
import 'dart:async';
|
|
import 'package:sprintf/sprintf.dart';
|
|
import 'package:xml/xml.dart' as xml;
|
|
import 'package:flutter/services.dart';
|
|
|
|
class StringsLocalization {
|
|
|
|
static String localeCode;
|
|
static Map<String, String> strings = new Map<String, String>();
|
|
|
|
static Future load(String l) async {
|
|
localeCode = l;
|
|
await rootBundle.loadString('assets/values-$localeCode/strings.xml').then((content) {
|
|
content.replaceAll('=\"', '=\\"');
|
|
content.replaceAll('\">', '\\">"');
|
|
var document = xml.parse(content);
|
|
strings.clear();
|
|
document.findAllElements('string').forEach((node) {
|
|
strings[node.attributes[0].value] = node.text.toString();
|
|
});
|
|
});
|
|
return strings;
|
|
}
|
|
|
|
static String declineCurrency(int num, int code) {
|
|
int residual = num % 100;
|
|
if (residual >= 20) {
|
|
residual %= 10;
|
|
}
|
|
|
|
List<String> strings = currencies(code);
|
|
|
|
switch (residual) {
|
|
case 1:
|
|
return strings[0];
|
|
case 2:
|
|
case 3:
|
|
case 4:
|
|
return strings[1];
|
|
default: // case 0, 5-19
|
|
return strings[2];
|
|
}
|
|
}
|
|
|
|
static List<String> currencies(int code) {
|
|
String nominative, singular, plural;
|
|
|
|
switch (code) {
|
|
case 643:
|
|
nominative = nominativeRuble();
|
|
singular = singularRuble();
|
|
plural = pluralRuble();
|
|
break;
|
|
case 840:
|
|
nominative = nominativeDollar();
|
|
singular = singularDollar();
|
|
plural = pluralDollar();
|
|
break;
|
|
case 980:
|
|
nominative = nominativeHryvna();
|
|
singular = singularHryvna();
|
|
plural = pluralHryvna();
|
|
break;
|
|
case 978:
|
|
nominative = nominativeEuro();
|
|
singular = singularEuro();
|
|
plural = pluralEuro();
|
|
break;
|
|
case 398:
|
|
nominative = nominativeTenge();
|
|
singular = singularTenge();
|
|
plural = pluralTenge();
|
|
break;
|
|
case 933:
|
|
nominative = nominativeRuble();
|
|
singular = singularRuble();
|
|
plural = pluralRuble();
|
|
break;
|
|
case 860:
|
|
nominative = nominativeSum();
|
|
singular = singularSum();
|
|
plural = pluralSum();
|
|
break;
|
|
case 944:
|
|
nominative = nominativeManat();
|
|
singular = singularManat();
|
|
plural = pluralManat();
|
|
break;
|
|
case 051:
|
|
nominative = nominativeDram();
|
|
singular = singularDram();
|
|
plural = pluralDram();
|
|
break;
|
|
case 417:
|
|
nominative = nominativeSom();
|
|
singular = singularSom();
|
|
plural = pluralSom();
|
|
break;
|
|
case 498:
|
|
nominative = nominativeLeu();
|
|
singular = singularLeu();
|
|
plural = pluralLeu();
|
|
break;
|
|
case 972:
|
|
nominative = nominativeSomoni();
|
|
singular = singularSomoni();
|
|
plural = pluralSomoni();
|
|
break;
|
|
}
|
|
|
|
return [nominative, singular, plural];
|
|
}
|
|
|
|
|
|
static String confirmPurchase(String val, int code) {
|
|
String trimmedVal = val.substring(0, val.length - 3);
|
|
return sprintf(strings['confirm_purchase'], [val, declineCurrency(int.parse(trimmedVal), code)]);
|
|
}
|
|
|
|
static String purchaseCompleted(String val, int code) {
|
|
String trimmedVal = val.substring(0, val.length - 3);
|
|
return sprintf(strings['purchase_complite'], [val, declineCurrency(int.parse(trimmedVal), code)]);
|
|
}
|
|
|
|
static String registration() => strings['registration'];
|
|
static String usage() => strings['usage'];
|
|
static String support() => strings['support'];
|
|
static String common() => strings['common'];
|
|
static String idStore() => strings['ID_Store'];
|
|
static String signUp() => strings['sign_up'];
|
|
static String specifyDinStore() => strings['specify_din_store'];
|
|
static String confirmation() => strings['confirmation'];
|
|
static String askChangeStore() => strings['ask_change_store'];
|
|
static String yes() => strings['yes'];
|
|
static String no() => strings['no'];
|
|
static String requestSentWaitActivation() => strings['request_sent_wait_activ'];
|
|
static String refreshActivationStatus() => strings['update_activ_status'];
|
|
static String appActivated() => strings['app_activ'];
|
|
static String completeRegistration() => strings['complite_activ'];
|
|
static String cardScanner() => strings['card_scaner'];
|
|
static String card() => strings['card'];
|
|
static String reward() => strings['reward'];
|
|
static String sum() => strings['sum'];
|
|
static String bonus() => strings['bonus'];
|
|
static String couponsUsed() => strings['coupons_used'];
|
|
static String selectCoupons() => strings['select_coupons'];
|
|
static String carryingPurchase() => strings['carry_purchase'];
|
|
static String completePurchase() => strings['complite_purchase'];
|
|
static String scan() => strings['scan'];
|
|
static String buyer() => strings['buyer'];
|
|
static String bonusHint() => strings['bonus_hint'];
|
|
static String bonusExplanation() => strings['bonus_explanation'];
|
|
static String discountRate() => strings['discount_rate'];
|
|
static String discountSum() => strings['discount_sum'];
|
|
static String bonusPlus() => strings['bonus_plus'];
|
|
static String bonusMinus() => strings['bonus_minus'];
|
|
static String idNotFound() => strings['ID_not_found'];
|
|
static String settings() => strings['settings'];
|
|
static String help() => strings['help'];
|
|
static String exit() => strings['exit'];
|
|
static String logout() => strings['logout'];
|
|
static String currency() => strings['currency'];
|
|
static String locale() => strings['locale'];
|
|
static String rfruble() => strings['rf_ruble'];
|
|
static String usadollas() => strings['usa_dollas'];
|
|
static String euro() => strings['euro'];
|
|
static String ukhryvnia() => strings['uk_hryvnia'];
|
|
static String kztenge() => strings['kz_tenge'];
|
|
static String beruble() => strings['be_ruble'];
|
|
static String uzbsum() => strings['uz_sum'];
|
|
static String azbman() => strings['az_manat'];
|
|
static String armdram() => strings['ar_dram'];
|
|
static String kgssom() => strings['kg_som'];
|
|
static String mdlleu() => strings['md_leu'];
|
|
static String tjssomoni() => strings['tj_somoni'];
|
|
static String nominativeRuble() => strings['nominative_ruble'];
|
|
static String singularRuble() => strings['singular_ruble'];
|
|
static String pluralRuble() => strings['plural_ruble'];
|
|
static String nominativeEuro() => strings['nominative_euro'];
|
|
static String singularEuro() => strings['singular_euro'];
|
|
static String pluralEuro() => strings['plural_euro'];
|
|
static String nominativeDollar() => strings['nominative_dollar'];
|
|
static String singularDollar() => strings['singular_dollar'];
|
|
static String pluralDollar() => strings['plural_dollar'];
|
|
static String nominativeHryvna() => strings['nominative_hryvna'];
|
|
static String singularHryvna() => strings['singular_hryvna'];
|
|
static String pluralHryvna() => strings['plural_hryvna'];
|
|
static String nominativeTenge() => strings['nominative_tenge'];
|
|
static String singularTenge() => strings['singular_tenge'];
|
|
static String pluralTenge() => strings['plural_tenge'];
|
|
static String nominativeSum() => strings['nominative_sum'];
|
|
static String singularSum() => strings['singular_sum'];
|
|
static String pluralSum() => strings['plural_sum'];
|
|
static String nominativeManat() => strings['nominative_manat'];
|
|
static String singularManat() => strings['singular_manat'];
|
|
static String pluralManat() => strings['plural_manat'];
|
|
static String nominativeDram() => strings['nominative_dram'];
|
|
static String singularDram() => strings['singular_dram'];
|
|
static String pluralDram() => strings['plural_dram'];
|
|
static String nominativeSom() => strings['nominative_som'];
|
|
static String singularSom() => strings['singular_som'];
|
|
static String pluralSom() => strings['plural_som'];
|
|
static String nominativeLeu() => strings['nominative_leu'];
|
|
static String singularLeu() => strings['singular_leu'];
|
|
static String pluralLeu() => strings['plural_leu'];
|
|
static String nominativeSomoni() => strings['nominative_somoni'];
|
|
static String singularSomoni() => strings['singular_somoni'];
|
|
static String pluralSomoni() => strings['plural_somoni'];
|
|
static String registrationGuide() => strings['registration_guide'];
|
|
static String usageGuide() => strings['usage_guide'];
|
|
static String commonGuide() => strings['common_guide'].replaceAll('\n', "\n");
|
|
static String supportGuide(String phone, String url) => sprintf(strings['support_guide'], [phone, url]);
|
|
static String joys() => strings['joys'];
|
|
static String joysMinus() => strings['joys_minus'];
|
|
static String joysHint() => strings['joys_hint'];
|
|
static String phone() => strings['phone'];
|
|
}
|