Skip to content

Commit

Permalink
Removed hardcoded output file path, added execution shell script
Browse files Browse the repository at this point in the history
  • Loading branch information
samuelowino committed Jun 19, 2022
1 parent 69a002e commit f9c4725
Show file tree
Hide file tree
Showing 11 changed files with 160 additions and 58 deletions.
1 change: 1 addition & 0 deletions mobile-translate.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
mvn clean install;cd target;java -jar mobile-translate-jar-with-dependencies.jar
3 changes: 2 additions & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.apluscreators</groupId>
<artifactId>Google-Translate-Labs</artifactId>
<version>2.0-BETA</version>
<version>2.0</version>
<packaging>jar</packaging>

<properties>
Expand Down Expand Up @@ -55,6 +55,7 @@
</dependencies>

<build>
<finalName>mobile-translate</finalName>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,48 +1,26 @@
package org.apluscreators.googletranslatelabs;


import org.apluscreators.googletranslatelabs.android.xml.XmlParserReader;

import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.apluscreators.googletranslatelabs.android.AndroidTranslationProcessor;
import org.apluscreators.googletranslatelabs.common.LanguagesDirectory;
import org.apluscreators.googletranslatelabs.common.RunnerInputReader;
import org.apluscreators.googletranslatelabs.enums.TargetOS;
import org.apluscreators.googletranslatelabs.ios.iOSTranslationProcessor;

public class TranslateApplication {

private static final Logger LOGGER = Logger.getLogger(TranslateApplication.class.getName());

private static final List<String> languages = Arrays.asList(
"ha", "pl", "am", "ar", "az", "be", "bg", "bn", "bs", "fr", "ga",
"ca", "cs", "da", "es", "et", "fa", "fi", "gl",
"it", "iw", "ja", "jv", "ka", "km", "ko", "ky",
"my", "nb", "ne", "nl", "nn", "no", "pa", "ro", "ru", "si", "sk", "sl", "sq", "sr",
"sv", "sw", "ta", "te", "th", "tr", "vi", "zh", "zu", "kn", "kk",
"af","de", "fil","hi","hr", "hu","hy","id","in","lo","lv","mk","ml","mn","pt","uk","ur","ms","is","el","mr"
);

private static final Set<String> uniqueLanguagesList = new HashSet<>(languages);

public static void main(String[] args) {

checkForDuplicates(languages);
var targetOS = RunnerInputReader.getTargetOSFromUser();

List<String> distinctLanguages = uniqueLanguagesList.stream()
.distinct()
.peek(System.out::println)
.collect(Collectors.toList());
var outputFile = RunnerInputReader.getOutputFileFromPrompt();

for (String language : distinctLanguages) {
XmlParserReader xmlParserReader = new XmlParserReader();
xmlParserReader.executeXmlAndTranslationParser(language);
}
var distinctLanguages = new LanguagesDirectory().findUniqueListOfLocales();

}
if (targetOS == TargetOS.ANDROID) {
new AndroidTranslationProcessor().runTranslation(outputFile, distinctLanguages);
} else if (targetOS == TargetOS.IOS) {
new iOSTranslationProcessor().runTranslation(outputFile, distinctLanguages);
}

public static void checkForDuplicates(List<String> languages) {
LOGGER.info("Original List" + languages);
LOGGER.info("Unique List " + uniqueLanguagesList);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.apluscreators.googletranslatelabs.android;

import java.io.File;
import java.util.List;
import org.apluscreators.googletranslatelabs.android.xml.XmlParserReader;
import org.apluscreators.googletranslatelabs.common.TranslationProcessor;

public class AndroidTranslationProcessor implements TranslationProcessor {
public void runTranslation(File outputFile, List<String> targetLanguages){
new XmlParserReader().executeXmlAndTranslationParser(outputFile, targetLanguages);
}
}
Original file line number Diff line number Diff line change
@@ -1,32 +1,39 @@
package org.apluscreators.googletranslatelabs.android.xml;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.List;
import java.util.logging.Logger;
import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;
import javax.xml.bind.Unmarshaller;

import org.apluscreators.googletranslatelabs.android.model.String;
import org.apluscreators.googletranslatelabs.android.model.Resources;
import org.apluscreators.googletranslatelabs.android.model.String;
import org.apluscreators.googletranslatelabs.android.translate.GoogleTranslateFactory;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;

public class XmlParserReader {

public void executeXmlAndTranslationParser(java.lang.String targetLanguage) {
private static final Logger LOGGER = Logger.getLogger(XmlParserReader.class.getSimpleName());

Resources untranslatedResources = fromXml();
public void executeXmlAndTranslationParser(File outputFile, List<java.lang.String> targetLanguages) {

GoogleTranslateFactory translateFactory = new GoogleTranslateFactory(untranslatedResources);
Resources translatedResources = translateFactory.getTranslatedResources(targetLanguage);
LOGGER.info("Translating " + targetLanguages.size() + " locales to target output file " + outputFile.getAbsolutePath());

for (String string : translatedResources.getStrings()) {
System.out.println(string);
}
for (java.lang.String targetLanguage : targetLanguages) {

Resources untranslatedResources = fromXml(outputFile);

GoogleTranslateFactory translateFactory = new GoogleTranslateFactory(untranslatedResources);
Resources translatedResources = translateFactory.getTranslatedResources(targetLanguage);

for (String string : translatedResources.getStrings()) {
LOGGER.info(string.toString());
}

toXml(translatedResources,targetLanguage + ".xml");
toXml(translatedResources,targetLanguage + ".xml");
}
}


Expand All @@ -36,23 +43,19 @@ public void toXml(Resources contentRoot,java.lang.String outputFileName) {
Marshaller marshallerObj = contextObj.createMarshaller();
marshallerObj.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
marshallerObj.marshal(contentRoot, new FileOutputStream(outputFileName));

} catch (JAXBException e) {
e.printStackTrace();
} catch (FileNotFoundException e) {
} catch (JAXBException | FileNotFoundException e) {
e.printStackTrace();
}

}

public Resources fromXml() {
public Resources fromXml(File outputFile) {
try {

File file = new File("/Users/samuelowino/Documents/projects/Google-Translate-Script/output.xml");
JAXBContext jaxbContext = JAXBContext.newInstance(Resources.class);

Unmarshaller jaxbContextUnmarshaller = jaxbContext.createUnmarshaller();
Resources resources = (Resources) jaxbContextUnmarshaller.unmarshal(file);
Resources resources = (Resources) jaxbContextUnmarshaller.unmarshal(outputFile);

System.out.println("Resources | " + resources);

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package org.apluscreators.googletranslatelabs.common;

import java.util.Arrays;
import java.util.List;
import java.util.logging.Logger;
import java.util.stream.Collectors;
import org.apluscreators.googletranslatelabs.TranslateApplication;

public class LanguagesDirectory {

public static final Logger LOGGER = Logger.getLogger(TranslateApplication.class.getSimpleName());

private final List<String> languages = Arrays.asList(
"ha", "pl", "am", "ar", "az", "be", "bg", "bn", "bs", "fr", "ga",
"ca", "cs", "da", "es", "et", "fa", "fi", "gl",
"it", "iw", "ja", "jv", "ka", "km", "ko", "ky",
"my", "nb", "ne", "nl", "nn", "no", "pa", "ro", "ru", "si", "sk", "sl", "sq", "sr",
"sv", "sw", "ta", "te", "th", "tr", "vi", "zh", "zu", "kn", "kk",
"af", "de", "fil", "hi", "hr", "hu", "hy", "id", "in", "lo", "lv", "mk", "ml", "mn", "pt", "uk", "ur", "ms", "is", "el", "mr"
);

public List<String> findUniqueListOfLocales() {

LOGGER.info("Cleaning up locales list...");

return languages.stream()
.distinct()
.peek(System.out::println)
.collect(Collectors.toList());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package org.apluscreators.googletranslatelabs.common;

import java.io.File;
import java.nio.file.Files;
import java.nio.file.LinkOption;
import java.util.Scanner;
import java.util.logging.Logger;
import org.apluscreators.googletranslatelabs.TranslateApplication;
import org.apluscreators.googletranslatelabs.enums.TargetOS;

public class RunnerInputReader {

public static final Logger LOGGER = Logger.getLogger(TranslateApplication.class.getSimpleName());

public static File getOutputFileFromPrompt(){
LOGGER.severe("Enter the output file directory for the translated text....");

var scanner = new Scanner(System.in);
var filePath = scanner.nextLine();
var outputFile = new File(filePath);

boolean fileExists = Files.exists(outputFile.toPath(), new LinkOption[]{LinkOption.NOFOLLOW_LINKS});

if (!fileExists) {
LOGGER.severe("This output file does not exist");
outputFile = getOutputFileFromPrompt();
} else {
LOGGER.info("Processing translation into output file [" + filePath + "]");
}

return outputFile;
}

public static TargetOS getTargetOSFromUser() {
LOGGER.severe("What is the target mobile operating system for this localization? type in (A) for Android or (I) for iOS...");

var scanner = new Scanner(System.in);

var option = scanner.nextLine();

switch (option){
case "A":
return TargetOS.ANDROID;
case "I":
return TargetOS.IOS;
default:
throw new AssertionError("Invalid OS option " + option);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package org.apluscreators.googletranslatelabs.common;

import java.io.File;
import java.util.List;

public interface TranslationProcessor {
void runTranslation(File outputFile, List<String> targetLanguages);
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package org.apluscreators.googletranslatelabs.enums;

public enum TargetOS {
ANDROID,
IOS
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package org.apluscreators.googletranslatelabs.ios;

import java.io.File;
import java.util.List;
import org.apluscreators.googletranslatelabs.common.TranslationProcessor;

public class iOSTranslationProcessor implements TranslationProcessor {
@Override
public void runTranslation(File outputFile, List<String> targetLanguages) {

}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@

public class LocalizableTable {
private String key;
private String translatableResouce;
private String translatableResource;
}

0 comments on commit f9c4725

Please sign in to comment.