translate method

Future<String> translate(
  1. String fromLanguage,
  2. String toLanguage
)

開始進行翻譯

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;
}