diff --git a/src/main/java/com/smartystreets/api/international_autocomplete/Client.java b/src/main/java/com/smartystreets/api/international_autocomplete/Client.java
index ffd7602..5ab8df1 100644
--- a/src/main/java/com/smartystreets/api/international_autocomplete/Client.java
+++ b/src/main/java/com/smartystreets/api/international_autocomplete/Client.java
@@ -51,6 +51,9 @@ private Request buildRequest(Lookup lookup) {
}
request.putParameter("include_only_locality", lookup.getLocality());
request.putParameter("include_only_postal_code", lookup.getPostalCode());
+ if (lookup.getLanguage() != null) {
+ request.putParameter("language", lookup.getLanguage().getName());
+ }
return request;
}
diff --git a/src/main/java/com/smartystreets/api/international_autocomplete/LanguageMode.java b/src/main/java/com/smartystreets/api/international_autocomplete/LanguageMode.java
new file mode 100644
index 0000000..b1a2b7d
--- /dev/null
+++ b/src/main/java/com/smartystreets/api/international_autocomplete/LanguageMode.java
@@ -0,0 +1,21 @@
+package com.smartystreets.api.international_autocomplete;
+
+/**
+ * When not set, the output language will match the default for the country. When set to NATIVE the
+ * results will always be in the language of the output country whenever possible. When set to LATIN
+ * the results will always be provided using the Latin character set, with accents and other diacritics removed.
+ *
Note: For French diacritics in Canada, you must specify NATIVE.
+ */
+public enum LanguageMode {
+ NATIVE("native"), LATIN("latin");
+
+ private final String name;
+
+ LanguageMode(String name){
+ this.name = name;
+ }
+
+ public String getName(){
+ return name;
+ }
+}
diff --git a/src/main/java/com/smartystreets/api/international_autocomplete/Lookup.java b/src/main/java/com/smartystreets/api/international_autocomplete/Lookup.java
index 182dbd0..66bfe81 100644
--- a/src/main/java/com/smartystreets/api/international_autocomplete/Lookup.java
+++ b/src/main/java/com/smartystreets/api/international_autocomplete/Lookup.java
@@ -1,5 +1,6 @@
package com.smartystreets.api.international_autocomplete;
+
/**
* In addition to holding all of the input data for this lookup, this class also
* will contain the result of the lookup after it comes back from the API.
@@ -22,6 +23,7 @@ public class Lookup {
private boolean geolocation;
private String locality;
private String postalCode;
+ private LanguageMode language;
//endregion
@@ -87,6 +89,10 @@ public String getPostalCode() {
return this.postalCode;
}
+ public LanguageMode getLanguage() {
+ return this.language;
+ }
+
//endregion
//region [ Setters ]
@@ -126,5 +132,9 @@ public void setPostalCode(String postalCode) {
this.postalCode = postalCode;
}
+ public void setLanguage(LanguageMode language) {
+ this.language = language;
+ }
+
//endregion
}
diff --git a/src/main/java/examples/InternationalAutocompleteExample.java b/src/main/java/examples/InternationalAutocompleteExample.java
index 85ed4f7..23a3e96 100644
--- a/src/main/java/examples/InternationalAutocompleteExample.java
+++ b/src/main/java/examples/InternationalAutocompleteExample.java
@@ -6,6 +6,7 @@
import com.smartystreets.api.international_autocomplete.Client;
import com.smartystreets.api.international_autocomplete.Lookup;
import com.smartystreets.api.international_autocomplete.Candidate;
+import com.smartystreets.api.international_autocomplete.LanguageMode;
import java.io.IOException;
@@ -26,6 +27,7 @@ public static void main(String[] args) {
lookup.setLocality("Paris");
lookup.setMaxGroupResults(50);
lookup.setGeolocation(true);
+ lookup.setLanguage(LanguageMode.NATIVE);
client.send(lookup);
diff --git a/src/test/java/com/smartystreets/api/international_autocomplete/ClientTest.java b/src/test/java/com/smartystreets/api/international_autocomplete/ClientTest.java
index 52a1027..d38cebc 100644
--- a/src/test/java/com/smartystreets/api/international_autocomplete/ClientTest.java
+++ b/src/test/java/com/smartystreets/api/international_autocomplete/ClientTest.java
@@ -52,13 +52,14 @@ public void testSendingSingleFullyPopulatedLookup() throws Exception {
URLPrefixSender sender = new URLPrefixSender("http://localhost/", capturingSender);
FakeSerializer serializer = new FakeSerializer(new Result());
Client client = new Client(sender, serializer);
- String expectedURL = "http://localhost/?country=1&search=2&max_results=10&max_group_results=100&include_only_locality=4&include_only_postal_code=5";
+ String expectedURL = "http://localhost/?country=1&search=2&max_results=10&max_group_results=100&include_only_locality=4&include_only_postal_code=5&language=native";
Lookup lookup = new Lookup();
lookup.setCountry("1");
lookup.setSearch("2");
lookup.setMaxResults(10);
lookup.setLocality("4");
lookup.setPostalCode("5");
+ lookup.setLanguage(LanguageMode.NATIVE);
client.send(lookup);
@@ -93,6 +94,47 @@ public void testSendingLookupWithCustomMaxGroupResults() throws Exception {
assertTrue(capturingSender.getRequest().getUrl().contains("max_group_results=50"));
}
+ @Test
+ public void testSendingLookupWithNativeLanguage() throws Exception {
+ RequestCapturingSender capturingSender = new RequestCapturingSender();
+ URLPrefixSender sender = new URLPrefixSender("http://localhost/", capturingSender);
+ FakeSerializer serializer = new FakeSerializer(new Result());
+ Client client = new Client(sender, serializer);
+ Lookup lookup = new Lookup("1");
+ lookup.setLanguage(LanguageMode.NATIVE);
+
+ client.send(lookup);
+
+ assertTrue(capturingSender.getRequest().getUrl().contains("language=native"));
+ }
+
+ @Test
+ public void testSendingLookupWithLatinLanguage() throws Exception {
+ RequestCapturingSender capturingSender = new RequestCapturingSender();
+ URLPrefixSender sender = new URLPrefixSender("http://localhost/", capturingSender);
+ FakeSerializer serializer = new FakeSerializer(new Result());
+ Client client = new Client(sender, serializer);
+ Lookup lookup = new Lookup("1");
+ lookup.setLanguage(LanguageMode.LATIN);
+
+ client.send(lookup);
+
+ assertTrue(capturingSender.getRequest().getUrl().contains("language=latin"));
+ }
+
+ @Test
+ public void testSendingLookupWithUnsetLanguageOmitsParameter() throws Exception {
+ RequestCapturingSender capturingSender = new RequestCapturingSender();
+ URLPrefixSender sender = new URLPrefixSender("http://localhost/", capturingSender);
+ FakeSerializer serializer = new FakeSerializer(new Result());
+ Client client = new Client(sender, serializer);
+ Lookup lookup = new Lookup("1");
+
+ client.send(lookup);
+
+ assertFalse(capturingSender.getRequest().getUrl().contains("language"));
+ }
+
@Test
public void testDefaultValues() {
Lookup lookup = new Lookup();