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
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import org.robovm.store.R;
import org.robovm.store.api.RoboVMWebService;
import org.robovm.store.util.Gravatar;
import org.robovm.store.util.I18N;
import org.robovm.store.views.CircleDrawable;

public class LoginFragment extends Fragment {
Expand Down Expand Up @@ -106,15 +107,15 @@ public void setLoginSuccessListener(Runnable loginSuccessListener) {
}

private void login(String username, String password) {
ProgressDialog progressDialog = ProgressDialog.show(getActivity(), "Please wait...", "Logging in", true);
ProgressDialog progressDialog = ProgressDialog.show(getActivity(), I18N.getLocalizedString(I18N.Key.please_wait), I18N.getLocalizedString(I18N.Key.logging_in), true);
this.login.setEnabled(false);
this.password.setEnabled(false);

RoboVMWebService.getInstance().authenticate(username, password, (success) -> {
if (success && loginSuccessListener != null) {
loginSuccessListener.run();
} else {
Toast.makeText(getActivity(), "Please verify your RoboVM account credentials and try again",
Toast.makeText(getActivity(), I18N.getLocalizedString(I18N.Key.verify_credentials),
Toast.LENGTH_LONG).show();
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
import org.robovm.store.model.Country;
import org.robovm.store.model.User;
import org.robovm.store.util.Countries;
import org.robovm.store.util.I18N;

import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -150,7 +151,7 @@ private void placeOrder() {
user.setCountry(selectedCountry.getCode());
}

ProgressDialog progressDialog = ProgressDialog.show(getActivity(), "Please wait...", "Placing Order", true);
ProgressDialog progressDialog = ProgressDialog.show(getActivity(), I18N.getLocalizedString(I18N.Key.please_wait), I18N.getLocalizedString(I18N.Key.placing_order), true);

RoboVMWebService.getInstance().placeOrder(user, (response) -> {
progressDialog.hide();
Expand All @@ -162,51 +163,14 @@ private void placeOrder() {
if (response.isSuccess()) {
RoboVMWebService.getInstance().getBasket().clear();

Toast.makeText(getActivity(), "Your order has been placed!", Toast.LENGTH_LONG).show();
Toast.makeText(getActivity(), I18N.getLocalizedString(I18N.Key.order_placed), Toast.LENGTH_LONG).show();

if (orderPlacedListener != null) {
orderPlacedListener.run();
}
} else {
List<ValidationError> errors = response.getErrors();
String alertMessage = "An unexpected error occurred! Please try again later!";

if (errors != null) { // We handle only the first error.
ValidationError error = errors.get(0);

String message = error.getMessage();
String field = error.getField();
if (field == null) {
alertMessage = message;
} else {
switch (field) {
case "firstName":
alertMessage = "First name is required";
break;
case "lastName":
alertMessage = "Last name is required";
break;
case "address1":
alertMessage = "Address is required";
break;
case "city":
alertMessage = "City is required";
break;
case "zipCode":
alertMessage = "ZIP code is required";
break;
case "phone":
alertMessage = "Phone number is required";
break;
case "country":
alertMessage = "Country is required";
break;
default:
alertMessage = message;
break;
}
}
}
String alertMessage = ValidationError.getValidationAlertMessage(errors);
Toast.makeText(getActivity(), alertMessage, Toast.LENGTH_LONG).show();
}
});
Expand Down
47 changes: 47 additions & 0 deletions core/src/main/java/org/robovm/store/api/ValidationError.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@
*/
package org.robovm.store.api;

import org.robovm.store.util.I18N;

import java.util.List;

public class ValidationError {
private String field;
private String message;
Expand All @@ -31,4 +35,47 @@ public String getMessage() {
public String toString() {
return field != null ? message + ": " + field : message;
}

public static String getValidationAlertMessage(List<ValidationError> errors) {
String alertMessage = I18N.getLocalizedString(I18N.Key.unexpected_error);

if (errors != null) { // We handle only the first error.
ValidationError error = errors.get(0);

String message = error.getMessage();
String field = error.getField();
if (field == null) {
alertMessage = message;
} else {
switch (field) {
case "firstName":
alertMessage = I18N.getLocalizedString(I18N.Key.first_name_required);
break;
case "lastName":
alertMessage = I18N.getLocalizedString(I18N.Key.last_name_required);
break;
case "address1":
alertMessage = I18N.getLocalizedString(I18N.Key.address_required);
break;
case "city":
alertMessage = I18N.getLocalizedString(I18N.Key.city_required);
break;
case "zipCode":
alertMessage = I18N.getLocalizedString(I18N.Key.zip_code_required);
break;
case "phone":
alertMessage = I18N.getLocalizedString(I18N.Key.phone_number_required);
break;
case "country":
alertMessage = I18N.getLocalizedString(I18N.Key.country_required);
break;
default:
alertMessage = message;
break;
}
}
}

return alertMessage;
}
}
4 changes: 3 additions & 1 deletion core/src/main/java/org/robovm/store/model/Product.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@
*/
package org.robovm.store.model;

import org.robovm.store.util.I18N;

import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -49,7 +51,7 @@ public double getPrice() {
}

public String getPriceDescription() {
return price < 0.01 ? "Free" : NumberFormat.getCurrencyInstance().format(price);
return price < 0.01 ? I18N.getLocalizedString(I18N.Key.free) : NumberFormat.getCurrencyInstance().format(price);
}

public ProductType getType() {
Expand Down
17 changes: 17 additions & 0 deletions core/src/main/java/org/robovm/store/util/I18N.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package org.robovm.store.util;

import java.util.ResourceBundle;

public class I18N {
public enum Key {
checkout, brag_twitter, done, order_complete, order_received, processing_order, try_again, tweet_text, error, order_placed, unexpected_error, first_name_required, last_name_required, address_required, city_required, zip_code_required, phone_number_required, country_required, ok, processing_title, could_not_log_in, verify_credentials, logging_in, log_in_title, please_wait, placing_order, add_to_basket, size, color, free, products_list_title, shipping_title, first_name, last_name, phone_number, address, city, postal_code, country, state, select_country, select_state, place_order, your_basket_title
}

public static String getLocalizedString(Key key) {
ResourceBundle stringsBundle = ResourceBundle.getBundle("StringsBundle");
if (stringsBundle.containsKey(key.name())) {
return stringsBundle.getString(key.name());
}
return key.name();
}
}
44 changes: 44 additions & 0 deletions core/src/main/resources/StringsBundle.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
log_in_title = Log In
logging_in = Logging in...
could_not_log_in = Could not log in!
verify_credentials = Please verify your RoboVM account credentials and try again
ok = OK
your_basket_title = Your Basket
checkout = Checkout
processing_title = Processing
order_placed = Your order has been placed!
unexpected_error = An unexpected error occurred! Please try again later!
first_name_required = First name is required
last_name_required = Last name is required
address_required = Address is required
city_required = City is required
zip_code_required = ZIP code is required
phone_number_required = Phone number is required
country_required = Country is required
error = Error
tweet_text = I just built a native iOS app with Java using #RoboVM and all I got was this free T-shirt!
try_again = Try Again
processing_order = Processing Order...
order_complete = Order Complete
order_received = We've received your order and we'll email you as soon as your items ship.
brag_twitter = Brag on Twitter
done = Done
please_wait = Please wait...
placing_order = Placing Order
add_to_basket = Add to Basket
size = Size
color = Color
free = Free
products_list_title = RoboVM Store
shipping_title = Shipping
first_name = First Name
last_name = Last Name
phone_number = Phone Number
address = Address
city = City
postal_code = Postal Code
country = Country
select_country = Select your Country
state = State
select_state = Select your state
place_order = Place Order
44 changes: 44 additions & 0 deletions core/src/main/resources/StringsBundle_en.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
log_in_title = Log In
logging_in = Logging in...
could_not_log_in = Could not log in!
verify_credentials = Please verify your RoboVM account credentials and try again
ok = OK
your_basket_title = Your Basket
checkout = Checkout
processing_title = Processing
order_placed = Your order has been placed!
unexpected_error = An unexpected error occurred! Please try again later!
first_name_required = First name is required
last_name_required = Last name is required
address_required = Address is required
city_required = City is required
zip_code_required = ZIP code is required
phone_number_required = Phone number is required
country_required = Country is required
error = Error
tweet_text = I just built a native iOS app with Java using #RoboVM and all I got was this free T-shirt!
try_again = Try Again
processing_order = Processing Order...
order_complete = Order Complete
order_received = We've received your order and we'll email you as soon as your items ship.
brag_twitter = Brag on Twitter
done = Done
please_wait = Please wait...
placing_order = Placing Order
add_to_basket = Add to Basket
size = Size
color = Color
free = Free
products_list_title = RoboVM Store
shipping_title = Shipping
first_name = First Name
last_name = Last Name
phone_number = Phone Number
address = Address
city = City
postal_code = Postal Code
country = Country
select_country = Select your Country
state = State
select_state = Select your state
place_order = Place Order
44 changes: 44 additions & 0 deletions core/src/main/resources/StringsBundle_he.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
log_in_title = התחברות
logging_in = מתחבר...
could_not_log_in = לא הצלחנו להתחבר!
verify_credentials = אנא וודא את פרטי ההתחברות שלך ונסה שנית
ok = אישור
your_basket_title = הסל שלך
checkout = סיום קנייה
processing_title = עיבוד הנתונים
order_placed = ההזמנה שלך התקבלה!
unexpected_error = אירעה שגיאה בלתי צפויה! אנא נסה שנית מאוחר יותר!
first_name_required = נדרש להזין שם פרטי
last_name_required = נדרש להזין שם משפחה
address_required = נדרש להזין כתובת
city_required = נדרש להזין עיר
zip_code_required = נדרש להזין מיקוד
phone_number_required = נדרש להזין מספר טלפון
country_required = נדרש להזין מדינה
error = שגיאה
tweet_text = כרגע בניתי אפליקציית iOS נייטיבית בJava באמצעות #RoboVM וכל מה שקיבלתי זה החולצה החינמית הזו!
try_again = נסה שוב
processing_order = מעבד את ההזמנה...
order_complete = ההזמנה הסתיימה
order_received = קיבלנו את ההזמנה שלך ונשלח לך מייל כאשר הפריטים שלך יישלחו.
brag_twitter = השווץ בטוויטר
done = סיום
please_wait = אנא המתן...
placing_order = מבצע הזמנה
add_to_basket = הוסף לסל
size = מידה
color = צבע
free = חינם
products_list_title = חנות RoboVM
shipping_title = פרטי משלוח
first_name = שם פרטי
last_name = שם משפחה
phone_number = מספר טלפון
address = כתובת
city = עיר
postal_code = מיקוד
country = ארץ
select_country = בחר את הארץ שלך
state = מדינה
select_state = בחר את המדינה שלך
place_order = בצע הזמנה
44 changes: 44 additions & 0 deletions core/src/main/resources/StringsBundle_iw.properties
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
log_in_title = התחברות
logging_in = מתחבר...
could_not_log_in = לא הצלחנו להתחבר!
verify_credentials = אנא וודא את פרטי ההתחברות שלך ונסה שנית
ok = אישור
your_basket_title = הסל שלך
checkout = סיום קנייה
processing_title = עיבוד הנתונים
order_placed = ההזמנה שלך התקבלה!
unexpected_error = אירעה שגיאה בלתי צפויה! אנא נסה שנית מאוחר יותר!
first_name_required = נדרש להזין שם פרטי
last_name_required = נדרש להזין שם משפחה
address_required = נדרש להזין כתובת
city_required = נדרש להזין עיר
zip_code_required = נדרש להזין מיקוד
phone_number_required = נדרש להזין מספר טלפון
country_required = נדרש להזין מדינה
error = שגיאה
tweet_text = כרגע בניתי אפליקציית iOS נייטיבית בJava באמצעות #RoboVM וכל מה שקיבלתי זה החולצה החינמית הזו!
try_again = נסה שוב
processing_order = מעבד את ההזמנה...
order_complete = ההזמנה הסתיימה
order_received = קיבלנו את ההזמנה שלך ונשלח לך מייל כאשר הפריטים שלך יישלחו.
brag_twitter = השווץ בטוויטר
done = סיום
please_wait = אנא המתן...
placing_order = מבצע הזמנה
add_to_basket = הוסף לסל
size = מידה
color = צבע
free = חינם
products_list_title = חנות RoboVM
shipping_title = פרטי משלוח
first_name = שם פרטי
last_name = שם משפחה
phone_number = מספר טלפון
address = כתובת
city = עיר
postal_code = מיקוד
country = ארץ
select_country = בחר את הארץ שלך
state = מדינה
select_state = בחר את המדינה שלך
place_order = בצע הזמנה
Loading