Skip to content

Commit

Permalink
Change translate library from Google Translate to OpenCC (OpenCC4j)
Browse files Browse the repository at this point in the history
  • Loading branch information
jackychu0830 committed Aug 11, 2021
1 parent 8752558 commit 317ab08
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 55 deletions.
15 changes: 5 additions & 10 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -110,21 +110,16 @@
<version>1.18.20</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>app.jackychu</groupId>
<artifactId>simple.google.translate.api</artifactId>
<version>1.1.0</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-text</artifactId>
<version>1.9</version>
</dependency>
<!-- <dependency>-->
<!-- <groupId>javaxt</groupId>-->
<!-- <artifactId>javaxt-core</artifactId>-->
<!-- <version>1.10.6</version>-->
<!-- </dependency>-->
<dependency>
<groupId>com.github.houbb</groupId>
<artifactId>opencc4j</artifactId>
<version>1.6.2</version>
</dependency>
</dependencies>

<profiles>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,25 +1,19 @@
package app.jackychu.jysrttools.ui;

import app.jackychu.api.simplegoogletranslate.Language;
import app.jackychu.api.simplegoogletranslate.SimpleGoogleTranslate;
import app.jackychu.jysrttools.JyDraft;
import app.jackychu.jysrttools.JyUtils;
import app.jackychu.jysrttools.exception.JySrtToolsException;
import com.github.houbb.opencc4j.util.ZhConverterUtil;

import javax.swing.*;
import java.awt.*;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class TranslateProgressDialog extends JDialog {
private final JFrame parent;
private final JProgressBar progressBar;
private final JLabel label;
private final JButton btnOk;
private final SimpleGoogleTranslate translate = new SimpleGoogleTranslate();

public TranslateProgressDialog(JFrame parent, boolean modal) {
super(parent, modal);
Expand Down Expand Up @@ -56,50 +50,19 @@ public void doTranslate(JyDraft draft) {
@Override
protected Void doInBackground() {
int i = 0;
int limit = 100;
int percentage;

try {
Map<String, String> texts = draft.getDraftTexts();

// Split large texts and every 100 texts concat into one string with delimiter |||
List<String> str = new ArrayList<>();
StringBuilder sb = new StringBuilder();
int start = 0;
for (String text : texts.values()) {
if (start < limit - 1) {
sb.append(text).append("|||");
start++;
} else {
start = 0;
sb.append(text);
str.add(sb.toString());
sb = new StringBuilder();
}
}
str.add(sb.toString());

// Translate new text string and split it out back to normal text string
List<String> newStr = new ArrayList<>();
for (String s : str) {
String ns = translate.doTranslate(Language.zh_cn, Language.zh_tw, s);
// mysterious issue. Sometime the delimiter ||| will becomes | || after translated
ns = ns.replaceAll("\\|\\s\\|\\|", "\\|\\|\\|");
ns = ns.replaceAll("\\|\\|\\s\\|", "\\|\\|\\|");
for (String ss : ns.split("\\|\\|\\|")) {
percentage = (int) ((++i * 1.0) / texts.size() * 100);
progressBar.setValue(percentage);
label.setText(String.format("翻譯中… %d%%", percentage));
newStr.add(ss);
}
}

// Mapping new string with origin text id
label.setText("翻譯完成,處理中...");
Map<String, String> newTexts = new HashMap<>();
i = 0;

for (String txtId : texts.keySet()) {
newTexts.put(txtId, newStr.get(i++));
percentage = (int) ((++i * 1.0) / texts.size() * 100);
progressBar.setValue(percentage);
label.setText(String.format("翻譯中… %d%%", percentage));

String newStr = ZhConverterUtil.toTraditional(texts.get(txtId));
newTexts.put(txtId, newStr);
}

// Save translated texts back to Jy draft
Expand Down

0 comments on commit 317ab08

Please sign in to comment.