Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions .idea/CodeBusters.iml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions .idea/codeStyles/codeStyleConfig.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions .idea/encodings.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/misc.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 8 additions & 0 deletions .idea/modules.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 6 additions & 0 deletions .idea/vcs.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

452 changes: 452 additions & 0 deletions .idea/workspace.xml

Large diffs are not rendered by default.

6 changes: 6 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,12 @@ limitations under the License.
<version>1.52.0</version>
</dependency>

<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-translate</artifactId>
<version>1.55.0</version>
</dependency>

</dependencies>

<build>
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/com/google/codeu/data/Message.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,4 +62,8 @@ public long getTimestamp() {
public String getRecipient() {
return recipient;
}

public void setText(String translatedText) {
this.text = translatedText;
}
}
25 changes: 25 additions & 0 deletions src/main/java/com/google/codeu/servlets/MessageServlet.java
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -41,6 +45,20 @@ public void init() {
datastore = new Datastore();
}

private void translateMessages(List<Message> 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.
Expand All @@ -59,6 +77,13 @@ public void doGet(HttpServletRequest request, HttpServletResponse response) thro
}

List<Message> messages = datastore.getMessages(user);

String targetLanguageCode = request.getParameter("language");

if (targetLanguageCode != null) {
translateMessages(messages, targetLanguageCode);
}

Gson gson = new Gson();
String json = gson.toJson(messages);

Expand Down
31 changes: 30 additions & 1 deletion src/main/webapp/js/user-page-loader.js
Original file line number Diff line number Diff line change
Expand Up @@ -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();
Expand Down Expand Up @@ -98,6 +105,7 @@ function buildUI() {
showMessageFormIfLoggedIn();
fetchMessages();
fetchAboutMe();
buildLanguageLinks();
}

function fetchAboutMe(){
Expand All @@ -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");
}
1 change: 1 addition & 0 deletions src/main/webapp/user-page.html
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
<ul id="navigation">
<li><a href="/">Home</a></li>
</ul>
<ul id="languages"></ul>
</nav>
<h1 id="page-title">User Page</h1>

Expand Down