Locale API
The Locale service allows you to customize your app based on your users' location. Using this service, you can get your users' location, IP address, list of countries and continents names, phone codes, currencies, and more.
The user service supports multiple locales. This feature allows you to fetch countries and continents information in your app language. To switch locales, all you need to do is pass the 'X-Appwrite-Locale' header or set the 'setLocale' method using any of our available SDKs. View here the list of available locales.
Get User Locale
Get the current user location based on IP. Returns an object with user country code, country name, continent name, continent code, ip address and suggested currency. You can use the locale header to get the data in a supported language.
HTTP Response
Status Code | Content Type | Payload |
200 OK | application/json | Locale Object |
-
const sdk = new Appwrite(); sdk .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint .setProject('5df5acd0d48c2') // Your project ID ; let promise = sdk.locale.get(); promise.then(function (response) { console.log(response); // Success }, function (error) { console.log(error); // Failure });
-
import 'package:appwrite/appwrite.dart'; void main() { // Init SDK Client client = Client(); Locale locale = Locale(client); client .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint .setProject('5df5acd0d48c2') // Your project ID ; Future result = locale.get(); result .then((response) { print(response); }).catchError((error) { print(error.response); }); }
-
import Appwrite func main() async throws { let client = Client() .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2") // Your project ID let locale = Locale(client) let locale = try await locale.get() print(String(describing: locale) }
-
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import io.appwrite.Client import io.appwrite.services.Locale class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val client = Client(applicationContext) .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2") // Your project ID val locale = Locale(client) GlobalScope.launch { val response = locale.get() val json = response.body?.string() } } }
-
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import io.appwrite.Client import io.appwrite.services.Locale public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Client client = new Client(getApplicationContext()) .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2"); // Your project ID Locale locale = new Locale(client); locale.get(new Continuation<Object>() { @NotNull @Override public CoroutineContext getContext() { return EmptyCoroutineContext.INSTANCE; } @Override public void resumeWith(@NotNull Object o) { String json = ""; try { if (o instanceof Result.Failure) { Result.Failure failure = (Result.Failure) o; throw failure.exception; } else { Response response = (Response) o; json = response.body().string(); } } } catch (Throwable th) { Log.e("ERROR", th.toString()); } } }); } }
List Countries
List of all countries. You can use the locale header to get the data in a supported language.
HTTP Response
Status Code | Content Type | Payload |
200 OK | application/json | Countries List Object |
-
const sdk = new Appwrite(); sdk .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint .setProject('5df5acd0d48c2') // Your project ID ; let promise = sdk.locale.getCountries(); promise.then(function (response) { console.log(response); // Success }, function (error) { console.log(error); // Failure });
-
import 'package:appwrite/appwrite.dart'; void main() { // Init SDK Client client = Client(); Locale locale = Locale(client); client .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint .setProject('5df5acd0d48c2') // Your project ID ; Future result = locale.getCountries(); result .then((response) { print(response); }).catchError((error) { print(error.response); }); }
-
import Appwrite func main() async throws { let client = Client() .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2") // Your project ID let locale = Locale(client) let countryList = try await locale.getCountries() print(String(describing: countryList) }
-
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import io.appwrite.Client import io.appwrite.services.Locale class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val client = Client(applicationContext) .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2") // Your project ID val locale = Locale(client) GlobalScope.launch { val response = locale.getCountries() val json = response.body?.string() } } }
-
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import io.appwrite.Client import io.appwrite.services.Locale public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Client client = new Client(getApplicationContext()) .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2"); // Your project ID Locale locale = new Locale(client); locale.getCountries(new Continuation<Object>() { @NotNull @Override public CoroutineContext getContext() { return EmptyCoroutineContext.INSTANCE; } @Override public void resumeWith(@NotNull Object o) { String json = ""; try { if (o instanceof Result.Failure) { Result.Failure failure = (Result.Failure) o; throw failure.exception; } else { Response response = (Response) o; json = response.body().string(); } } } catch (Throwable th) { Log.e("ERROR", th.toString()); } } }); } }
List EU Countries
List of all countries that are currently members of the EU. You can use the locale header to get the data in a supported language.
HTTP Response
Status Code | Content Type | Payload |
200 OK | application/json | Countries List Object |
-
const sdk = new Appwrite(); sdk .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint .setProject('5df5acd0d48c2') // Your project ID ; let promise = sdk.locale.getCountriesEU(); promise.then(function (response) { console.log(response); // Success }, function (error) { console.log(error); // Failure });
-
import 'package:appwrite/appwrite.dart'; void main() { // Init SDK Client client = Client(); Locale locale = Locale(client); client .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint .setProject('5df5acd0d48c2') // Your project ID ; Future result = locale.getCountriesEU(); result .then((response) { print(response); }).catchError((error) { print(error.response); }); }
-
import Appwrite func main() async throws { let client = Client() .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2") // Your project ID let locale = Locale(client) let countryList = try await locale.getCountriesEU() print(String(describing: countryList) }
-
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import io.appwrite.Client import io.appwrite.services.Locale class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val client = Client(applicationContext) .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2") // Your project ID val locale = Locale(client) GlobalScope.launch { val response = locale.getCountriesEU() val json = response.body?.string() } } }
-
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import io.appwrite.Client import io.appwrite.services.Locale public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Client client = new Client(getApplicationContext()) .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2"); // Your project ID Locale locale = new Locale(client); locale.getCountriesEU(new Continuation<Object>() { @NotNull @Override public CoroutineContext getContext() { return EmptyCoroutineContext.INSTANCE; } @Override public void resumeWith(@NotNull Object o) { String json = ""; try { if (o instanceof Result.Failure) { Result.Failure failure = (Result.Failure) o; throw failure.exception; } else { Response response = (Response) o; json = response.body().string(); } } } catch (Throwable th) { Log.e("ERROR", th.toString()); } } }); } }
List Countries Phone Codes
List of all countries phone codes. You can use the locale header to get the data in a supported language.
HTTP Response
Status Code | Content Type | Payload |
200 OK | application/json | Phones List Object |
-
const sdk = new Appwrite(); sdk .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint .setProject('5df5acd0d48c2') // Your project ID ; let promise = sdk.locale.getCountriesPhones(); promise.then(function (response) { console.log(response); // Success }, function (error) { console.log(error); // Failure });
-
import 'package:appwrite/appwrite.dart'; void main() { // Init SDK Client client = Client(); Locale locale = Locale(client); client .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint .setProject('5df5acd0d48c2') // Your project ID ; Future result = locale.getCountriesPhones(); result .then((response) { print(response); }).catchError((error) { print(error.response); }); }
-
import Appwrite func main() async throws { let client = Client() .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2") // Your project ID let locale = Locale(client) let phoneList = try await locale.getCountriesPhones() print(String(describing: phoneList) }
-
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import io.appwrite.Client import io.appwrite.services.Locale class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val client = Client(applicationContext) .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2") // Your project ID val locale = Locale(client) GlobalScope.launch { val response = locale.getCountriesPhones() val json = response.body?.string() } } }
-
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import io.appwrite.Client import io.appwrite.services.Locale public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Client client = new Client(getApplicationContext()) .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2"); // Your project ID Locale locale = new Locale(client); locale.getCountriesPhones(new Continuation<Object>() { @NotNull @Override public CoroutineContext getContext() { return EmptyCoroutineContext.INSTANCE; } @Override public void resumeWith(@NotNull Object o) { String json = ""; try { if (o instanceof Result.Failure) { Result.Failure failure = (Result.Failure) o; throw failure.exception; } else { Response response = (Response) o; json = response.body().string(); } } } catch (Throwable th) { Log.e("ERROR", th.toString()); } } }); } }
List Continents
List of all continents. You can use the locale header to get the data in a supported language.
HTTP Response
Status Code | Content Type | Payload |
200 OK | application/json | Continents List Object |
-
const sdk = new Appwrite(); sdk .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint .setProject('5df5acd0d48c2') // Your project ID ; let promise = sdk.locale.getContinents(); promise.then(function (response) { console.log(response); // Success }, function (error) { console.log(error); // Failure });
-
import 'package:appwrite/appwrite.dart'; void main() { // Init SDK Client client = Client(); Locale locale = Locale(client); client .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint .setProject('5df5acd0d48c2') // Your project ID ; Future result = locale.getContinents(); result .then((response) { print(response); }).catchError((error) { print(error.response); }); }
-
import Appwrite func main() async throws { let client = Client() .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2") // Your project ID let locale = Locale(client) let continentList = try await locale.getContinents() print(String(describing: continentList) }
-
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import io.appwrite.Client import io.appwrite.services.Locale class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val client = Client(applicationContext) .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2") // Your project ID val locale = Locale(client) GlobalScope.launch { val response = locale.getContinents() val json = response.body?.string() } } }
-
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import io.appwrite.Client import io.appwrite.services.Locale public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Client client = new Client(getApplicationContext()) .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2"); // Your project ID Locale locale = new Locale(client); locale.getContinents(new Continuation<Object>() { @NotNull @Override public CoroutineContext getContext() { return EmptyCoroutineContext.INSTANCE; } @Override public void resumeWith(@NotNull Object o) { String json = ""; try { if (o instanceof Result.Failure) { Result.Failure failure = (Result.Failure) o; throw failure.exception; } else { Response response = (Response) o; json = response.body().string(); } } } catch (Throwable th) { Log.e("ERROR", th.toString()); } } }); } }
List Currencies
List of all currencies, including currency symbol, name, plural, and decimal digits for all major and minor currencies. You can use the locale header to get the data in a supported language.
HTTP Response
Status Code | Content Type | Payload |
200 OK | application/json | Currencies List Object |
-
const sdk = new Appwrite(); sdk .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint .setProject('5df5acd0d48c2') // Your project ID ; let promise = sdk.locale.getCurrencies(); promise.then(function (response) { console.log(response); // Success }, function (error) { console.log(error); // Failure });
-
import 'package:appwrite/appwrite.dart'; void main() { // Init SDK Client client = Client(); Locale locale = Locale(client); client .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint .setProject('5df5acd0d48c2') // Your project ID ; Future result = locale.getCurrencies(); result .then((response) { print(response); }).catchError((error) { print(error.response); }); }
-
import Appwrite func main() async throws { let client = Client() .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2") // Your project ID let locale = Locale(client) let currencyList = try await locale.getCurrencies() print(String(describing: currencyList) }
-
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import io.appwrite.Client import io.appwrite.services.Locale class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val client = Client(applicationContext) .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2") // Your project ID val locale = Locale(client) GlobalScope.launch { val response = locale.getCurrencies() val json = response.body?.string() } } }
-
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import io.appwrite.Client import io.appwrite.services.Locale public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Client client = new Client(getApplicationContext()) .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2"); // Your project ID Locale locale = new Locale(client); locale.getCurrencies(new Continuation<Object>() { @NotNull @Override public CoroutineContext getContext() { return EmptyCoroutineContext.INSTANCE; } @Override public void resumeWith(@NotNull Object o) { String json = ""; try { if (o instanceof Result.Failure) { Result.Failure failure = (Result.Failure) o; throw failure.exception; } else { Response response = (Response) o; json = response.body().string(); } } } catch (Throwable th) { Log.e("ERROR", th.toString()); } } }); } }
List Languages
List of all languages classified by ISO 639-1 including 2-letter code, name in English, and name in the respective language.
HTTP Response
Status Code | Content Type | Payload |
200 OK | application/json | Languages List Object |
-
const sdk = new Appwrite(); sdk .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint .setProject('5df5acd0d48c2') // Your project ID ; let promise = sdk.locale.getLanguages(); promise.then(function (response) { console.log(response); // Success }, function (error) { console.log(error); // Failure });
-
import 'package:appwrite/appwrite.dart'; void main() { // Init SDK Client client = Client(); Locale locale = Locale(client); client .setEndpoint('https://[HOSTNAME_OR_IP]/v1') // Your API Endpoint .setProject('5df5acd0d48c2') // Your project ID ; Future result = locale.getLanguages(); result .then((response) { print(response); }).catchError((error) { print(error.response); }); }
-
import Appwrite func main() async throws { let client = Client() .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2") // Your project ID let locale = Locale(client) let languageList = try await locale.getLanguages() print(String(describing: languageList) }
-
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import io.appwrite.Client import io.appwrite.services.Locale class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) val client = Client(applicationContext) .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2") // Your project ID val locale = Locale(client) GlobalScope.launch { val response = locale.getLanguages() val json = response.body?.string() } } }
-
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import io.appwrite.Client import io.appwrite.services.Locale public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Client client = new Client(getApplicationContext()) .setEndpoint("https://[HOSTNAME_OR_IP]/v1") // Your API Endpoint .setProject("5df5acd0d48c2"); // Your project ID Locale locale = new Locale(client); locale.getLanguages(new Continuation<Object>() { @NotNull @Override public CoroutineContext getContext() { return EmptyCoroutineContext.INSTANCE; } @Override public void resumeWith(@NotNull Object o) { String json = ""; try { if (o instanceof Result.Failure) { Result.Failure failure = (Result.Failure) o; throw failure.exception; } else { Response response = (Response) o; json = response.body().string(); } } } catch (Throwable th) { Log.e("ERROR", th.toString()); } } }); } }