diff --git a/.idea/CodeBusters.iml b/.idea/CodeBusters.iml
new file mode 100644
index 0000000..d6ebd48
--- /dev/null
+++ b/.idea/CodeBusters.iml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml
new file mode 100644
index 0000000..b9d18bf
--- /dev/null
+++ b/.idea/codeStyles/codeStyleConfig.xml
@@ -0,0 +1,5 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/encodings.xml b/.idea/encodings.xml
new file mode 100644
index 0000000..15a15b2
--- /dev/null
+++ b/.idea/encodings.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..caf51dd
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..61e6741
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
new file mode 100644
index 0000000..9dc53b8
--- /dev/null
+++ b/.idea/workspace.xml
@@ -0,0 +1,452 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ buildMessageDiv
+ fetch
+ buildUI
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 1551233434483
+
+
+ 1551233434483
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 8073b38..4cff9a3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -61,6 +61,12 @@ limitations under the License.
1.52.0
+
+ com.google.cloud
+ google-cloud-translate
+ 1.55.0
+
+
diff --git a/src/main/java/com/google/codeu/data/Message.java b/src/main/java/com/google/codeu/data/Message.java
index 099bff1..2e0f396 100644
--- a/src/main/java/com/google/codeu/data/Message.java
+++ b/src/main/java/com/google/codeu/data/Message.java
@@ -62,4 +62,8 @@ public long getTimestamp() {
public String getRecipient() {
return recipient;
}
+
+ public void setText(String translatedText) {
+ this.text = translatedText;
+ }
}
diff --git a/src/main/java/com/google/codeu/servlets/MessageServlet.java b/src/main/java/com/google/codeu/servlets/MessageServlet.java
index 3b5269b..5d8d379 100644
--- a/src/main/java/com/google/codeu/servlets/MessageServlet.java
+++ b/src/main/java/com/google/codeu/servlets/MessageServlet.java
@@ -18,6 +18,10 @@
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;
+import com.google.cloud.translate.Translate;
+import com.google.cloud.translate.Translate.TranslateOption;
+import com.google.cloud.translate.TranslateOptions;
+import com.google.cloud.translate.Translation;
import com.google.codeu.data.Datastore;
import com.google.codeu.data.Message;
import com.google.gson.Gson;
@@ -41,6 +45,20 @@ public void init() {
datastore = new Datastore();
}
+ private void translateMessages(List messages, String targetLanguageCode) {
+ Translate translate = TranslateOptions.getDefaultInstance().getService();
+
+ for (Message message : messages) {
+ String originalText = message.getText();
+
+ Translation translation =
+ translate.translate(originalText, TranslateOption.targetLanguage(targetLanguageCode));
+ String translatedText = translation.getTranslatedText();
+
+ message.setText(translatedText);
+ }
+ }
+
/**
* Responds with a JSON representation of {@link Message} data for a specific user. Responds with
* an empty array if the user is not provided.
@@ -59,6 +77,13 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro
}
List messages = datastore.getMessages(user);
+
+ String targetLanguageCode = request.getParameter("language");
+
+ if (targetLanguageCode != null) {
+ translateMessages(messages, targetLanguageCode);
+ }
+
Gson gson = new Gson();
String json = gson.toJson(messages);
diff --git a/src/main/webapp/js/user-page-loader.js b/src/main/webapp/js/user-page-loader.js
index 2758b86..849efbc 100644
--- a/src/main/webapp/js/user-page-loader.js
+++ b/src/main/webapp/js/user-page-loader.js
@@ -50,7 +50,14 @@ function showMessageFormIfLoggedIn() {
/** Fetches messages and add them to the page. */
function fetchMessages() {
- const url = '/messages?user=' + parameterUsername;
+// const url = '/messages?user=' + parameterUsername;
+
+ const parameterLanguage = urlParams.get('language');
+ let url = '/messages?user=' + parameterUsername;
+ if(parameterLanguage) {
+ url += '&language=' + parameterLanguage;
+ }
+
fetch(url)
.then((response) => {
return response.json();
@@ -98,6 +105,7 @@ function buildUI() {
showMessageFormIfLoggedIn();
fetchMessages();
fetchAboutMe();
+ buildLanguageLinks();
}
function fetchAboutMe(){
@@ -114,4 +122,25 @@ function fetchAboutMe(){
document.getElementById('about-me-form').classList.remove('hidden');
});
+}
+
+function buildLanguageLinks(){
+ console.log("entered the build language link function");
+ const userPageUrl = '/user-page.html?user=' + parameterUsername;
+ const languagesListElement = document.getElementById('languages');
+ languagesListElement.appendChild(createListItem(createLink(
+ userPageUrl + '&language=en', 'English')));
+ console.log("added link to english");
+ languagesListElement.appendChild(createListItem(createLink(
+ userPageUrl + '&language=zh', 'Chinese')));
+ console.log("added link to chinese");
+ languagesListElement.appendChild(createListItem(createLink(
+ userPageUrl + '&language=hi', 'Hindi')));
+ console.log("added link to hindi");
+ languagesListElement.appendChild(createListItem(createLink(
+ userPageUrl + '&language=es', 'Spanish')));
+ console.log("added link to spanish");
+ languagesListElement.appendChild(createListItem(createLink(
+ userPageUrl + '&language=ar', 'Arabic')));
+ console.log("added link to arabic");
}
\ No newline at end of file
diff --git a/src/main/webapp/user-page.html b/src/main/webapp/user-page.html
index 8e3a1c1..3109b12 100644
--- a/src/main/webapp/user-page.html
+++ b/src/main/webapp/user-page.html
@@ -28,6 +28,7 @@
+
User Page