Files
hash-wallet/tool/utils/translation/translation_utils.dart
T
cyanandGitHub d8a6766090 feat: zashi zkool sweep, and minor fixes (#2838)
feat: restore from keys zcash
fix: don't display empty keys
2026-02-06 02:39:19 +01:00

51 lines
1.5 KiB
Dart

import 'package:translator/translator.dart';
import '../../print_verbose_dummy.dart';
import 'arb_file_utils.dart';
import 'translation_constants.dart';
final translator = GoogleTranslator();
Future<void> appendTranslation(String lang, String key, String text) async {
final fileName = getArbFileName(lang);
final translation = await getTranslation(text, lang);
appendStringToArbFile(fileName, key, translation);
}
Future<void> appendTranslations(String lang, Map<String, String> defaults) async {
final fileName = getArbFileName(lang);
final translations = <String, String>{};
for (var key in defaults.keys) {
final value = defaults[key]!;
final translation = await getTranslation(value, lang);
translations[key] = translation;
}
appendStringsToArbFile(fileName, translations);
}
Future<String> getTranslation(String text, String lang) async {
if (lang == defaultLang) return text;
final regExp = RegExp(r'{(.*?)}');
final placeholder =
regExp.allMatches(text).map((e) => text.substring(e.start, e.end)).toList().asMap();
String translation = text;
try {
translation = (await translator.translate(text, from: defaultLang, to: lang)).text;
} catch (e) {
printV("$lang, $text, $e");
}
placeholder.forEach((index, value) {
final translatedPlaceholder = regExp.allMatches(translation).toList()[index];
translation =
translation.replaceRange(translatedPlaceholder.start, translatedPlaceholder.end, value);
});
return translation;
}