translate method
開始進行翻譯
Implementation
Future<String> translate(String fromLanguage, String toLanguage) async {
if (_parseData == null) {
throw '沒有可供翻譯的資料, 請先執行JsonValueParser.parse()';
}
final googleTranslator = GoogleTranslator();
final splitSource = _splitTranslateText(
_parseData!.toTranslateSource(),
500,
);
// print('翻譯文本: ${splitSource}');
final splitTranslate = <String>[];
// google翻譯有上限, 需要針對文字作分段
for (final source in splitSource) {
try {
final translateValue = await googleTranslator.translate(
source,
from: fromLanguage,
to: toLanguage,
);
// print('翻譯文字: ${translateValue.text}');
splitTranslate.add(translateValue.text);
Future.delayed(Duration(seconds: 1));
} catch (e) {
print('翻譯出現錯誤: $e');
splitTranslate.add(source);
}
}
// final translateValue = await googleTranslator.translate(
// aa,
// from: fromLanguage,
// to: toLanguage,
// );
// print('分割量: ${splitTranslate.length}');
// for (var s in splitTranslate) {
// print(s);
// }
// print('組合後: ${splitTranslate.join(TranslateMap.splitPattern)}');
// print('翻譯結果 to en');
// print('========');
// print(splitTranslate);
_parseData!.bindTranslateValue(
toLanguage,
splitTranslate.join(TranslateMap.splitPattern),
);
final data = JsonEncoder.withIndent(' ')
.convert(_parseData!.exportJson(toLanguage));
// print('打印翻譯後的json');
// print('========');
// print(data);
return data;
}