summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2024-08-21 11:54:17 +0200
committerAlbin <albin@mullvad.net>2024-08-21 11:54:17 +0200
commitd6771c29ed0b7a9df53d67a736e49a6f671c6981 (patch)
tree0494de3c25aa8b101c0d099189672d6490c90d94 /android
parent26e03f20c8ee93303cd9afb2432601651571dc05 (diff)
parent8a9c8b1a53567bc5ae655f1069c3e908ae17e801 (diff)
downloadmullvadvpn-d6771c29ed0b7a9df53d67a736e49a6f671c6981.tar.xz
mullvadvpn-d6771c29ed0b7a9df53d67a736e49a6f671c6981.zip
Merge branch 'translate-location-names-droid-432'
Diffstat (limited to 'android')
-rw-r--r--android/app/build.gradle.kts1
-rw-r--r--android/app/src/main/AndroidManifest.xml6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/AppModule.kt6
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt2
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/receiver/LocaleChangedBroadcastReceiver.kt18
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListExtensions.kt3
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/RelayListRepository.kt41
-rw-r--r--android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GeoIpLocation.kt6
-rw-r--r--android/lib/resource/src/main/res/xml-da/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-de/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-es/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-fi/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-fr/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-it/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-ja/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-ko/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-my/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-nb/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-nl/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-pl/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-pt/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-ru/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-sv/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-th/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-tr/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-zh-rCN/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml-zh-rTW/relay_locations.xml158
-rw-r--r--android/lib/resource/src/main/res/xml/relay_locations.xml158
-rw-r--r--android/lib/shared/build.gradle.kts1
-rw-r--r--android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxy.kt24
-rw-r--r--android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/LocaleRepository.kt19
-rw-r--r--android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/RelayLocationTranslationRepository.kt61
-rw-r--r--android/lib/shared/src/test/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxyTest.kt5
-rw-r--r--android/translations-converter/src/main.rs113
34 files changed, 3451 insertions, 15 deletions
diff --git a/android/app/build.gradle.kts b/android/app/build.gradle.kts
index ecde2e9132..f8c92c9849 100644
--- a/android/app/build.gradle.kts
+++ b/android/app/build.gradle.kts
@@ -337,6 +337,7 @@ dependencies {
implementation(libs.androidx.lifecycle.viewmodel)
implementation(libs.androidx.lifecycle.runtime.compose)
implementation(libs.arrow)
+ implementation(libs.arrow.optics)
implementation(libs.arrow.resilience)
implementation(libs.compose.constrainlayout)
implementation(libs.compose.foundation)
diff --git a/android/app/src/main/AndroidManifest.xml b/android/app/src/main/AndroidManifest.xml
index 9247112466..28d6a17ed1 100644
--- a/android/app/src/main/AndroidManifest.xml
+++ b/android/app/src/main/AndroidManifest.xml
@@ -106,5 +106,11 @@
<meta-data android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider>
+ <receiver android:name=".receiver.LocaleChangedBroadcastReceiver"
+ android:exported="false">
+ <intent-filter>
+ <action android:name="android.intent.action.LOCALE_CHANGED" />
+ </intent-filter>
+ </receiver>
</application>
</manifest>
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/AppModule.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/AppModule.kt
index 6af9ff57cb..e4722094f9 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/AppModule.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/AppModule.kt
@@ -11,6 +11,8 @@ import net.mullvad.mullvadvpn.lib.model.BuildVersion
import net.mullvad.mullvadvpn.lib.shared.AccountRepository
import net.mullvad.mullvadvpn.lib.shared.ConnectionProxy
import net.mullvad.mullvadvpn.lib.shared.DeviceRepository
+import net.mullvad.mullvadvpn.lib.shared.LocaleRepository
+import net.mullvad.mullvadvpn.lib.shared.RelayLocationTranslationRepository
import net.mullvad.mullvadvpn.lib.shared.VpnPermissionRepository
import org.koin.android.ext.koin.androidContext
import org.koin.core.qualifier.named
@@ -32,5 +34,7 @@ val appModule = module {
single { AccountRepository(get(), get(), MainScope()) }
single { DeviceRepository(get()) }
single { VpnPermissionRepository(androidContext()) }
- single { ConnectionProxy(get(), get()) }
+ single { ConnectionProxy(get(), get(), get()) }
+ single { LocaleRepository(get()) }
+ single { RelayLocationTranslationRepository(get(), get(), MainScope()) }
}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt
index 6494cbb167..929d1e3b99 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/di/UiModule.kt
@@ -117,7 +117,7 @@ val uiModule = module {
single { MullvadProblemReport(get()) }
single { RelayOverridesRepository(get()) }
single { CustomListsRepository(get()) }
- single { RelayListRepository(get()) }
+ single { RelayListRepository(get(), get()) }
single { RelayListFilterRepository(get()) }
single { VoucherRepository(get(), get()) }
single { SplitTunnelingRepository(get()) }
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/receiver/LocaleChangedBroadcastReceiver.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/receiver/LocaleChangedBroadcastReceiver.kt
new file mode 100644
index 0000000000..8969ffd14c
--- /dev/null
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/receiver/LocaleChangedBroadcastReceiver.kt
@@ -0,0 +1,18 @@
+package net.mullvad.mullvadvpn.receiver
+
+import android.content.BroadcastReceiver
+import android.content.Context
+import android.content.Intent
+import net.mullvad.mullvadvpn.lib.shared.LocaleRepository
+import org.koin.core.component.KoinComponent
+import org.koin.core.component.inject
+
+class LocaleChangedBroadcastReceiver : BroadcastReceiver(), KoinComponent {
+ private val localeRepository by inject<LocaleRepository>()
+
+ override fun onReceive(context: Context?, intent: Intent?) {
+ if (intent?.action == Intent.ACTION_LOCALE_CHANGED) {
+ localeRepository.refreshLocale()
+ }
+ }
+}
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListExtensions.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListExtensions.kt
index ea017339f6..6d308e3b26 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListExtensions.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/relaylist/RelayListExtensions.kt
@@ -55,3 +55,6 @@ fun List<RelayItem.Location.Country>.getRelayItemsByCodes(
): List<RelayItem.Location> =
this.filter { codes.contains(it.id) } +
this.flatMap { it.descendants() }.filter { codes.contains(it.id) }
+
+fun <T : RelayItem> List<T>.sortedByName() =
+ this.sortedWith(compareBy(String.CASE_INSENSITIVE_ORDER) { it.name })
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/RelayListRepository.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/RelayListRepository.kt
index ce41b57c4c..69a35c406b 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/RelayListRepository.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/repository/RelayListRepository.kt
@@ -1,11 +1,15 @@
package net.mullvad.mullvadvpn.repository
+import arrow.optics.Every
+import arrow.optics.copy
+import arrow.optics.dsl.every
import kotlinx.coroutines.CoroutineDispatcher
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.SharingStarted
import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.combine
import kotlinx.coroutines.flow.distinctUntilChanged
import kotlinx.coroutines.flow.map
import kotlinx.coroutines.flow.stateIn
@@ -17,18 +21,45 @@ import net.mullvad.mullvadvpn.lib.model.RelayItem
import net.mullvad.mullvadvpn.lib.model.RelayItemId
import net.mullvad.mullvadvpn.lib.model.WireguardConstraints
import net.mullvad.mullvadvpn.lib.model.WireguardEndpointData
+import net.mullvad.mullvadvpn.lib.model.cities
+import net.mullvad.mullvadvpn.lib.model.name
+import net.mullvad.mullvadvpn.lib.shared.RelayLocationTranslationRepository
import net.mullvad.mullvadvpn.relaylist.findByGeoLocationId
+import net.mullvad.mullvadvpn.relaylist.sortedByName
class RelayListRepository(
private val managementService: ManagementService,
+ private val translationRepository: RelayLocationTranslationRepository,
dispatcher: CoroutineDispatcher = Dispatchers.IO
) {
val relayList: StateFlow<List<RelayItem.Location.Country>> =
- managementService.relayCountries.stateIn(
- CoroutineScope(dispatcher),
- SharingStarted.WhileSubscribed(),
- emptyList()
- )
+ combine(managementService.relayCountries, translationRepository.translations) {
+ countries,
+ translations ->
+ countries.translateRelays(translations)
+ }
+ .stateIn(CoroutineScope(dispatcher), SharingStarted.WhileSubscribed(), emptyList())
+
+ private fun List<RelayItem.Location.Country>.translateRelays(
+ translations: Map<String, String>
+ ): List<RelayItem.Location.Country> {
+ if (translations.isEmpty()) {
+ return this
+ }
+
+ return Every.list<RelayItem.Location.Country>()
+ .modify(this) {
+ it.copy {
+ RelayItem.Location.Country.name set translations.getOrDefault(it.name, it.name)
+ RelayItem.Location.Country.cities.every(Every.list()).name transform
+ { cityName ->
+ translations.getOrDefault(cityName, cityName)
+ }
+ RelayItem.Location.Country.cities transform { cities -> cities.sortedByName() }
+ }
+ }
+ .sortedByName()
+ }
val wireguardEndpointData: StateFlow<WireguardEndpointData> =
managementService.wireguardEndpointData.stateIn(
diff --git a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GeoIpLocation.kt b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GeoIpLocation.kt
index 3334b458d7..d312382a02 100644
--- a/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GeoIpLocation.kt
+++ b/android/lib/model/src/main/kotlin/net/mullvad/mullvadvpn/lib/model/GeoIpLocation.kt
@@ -1,7 +1,9 @@
package net.mullvad.mullvadvpn.lib.model
+import arrow.optics.optics
import java.net.InetAddress
+@optics
data class GeoIpLocation(
val ipv4: InetAddress?,
val ipv6: InetAddress?,
@@ -10,4 +12,6 @@ data class GeoIpLocation(
val latitude: Double,
val longitude: Double,
val hostname: String?,
-)
+) {
+ companion object
+}
diff --git a/android/lib/resource/src/main/res/xml-da/relay_locations.xml b/android/lib/resource/src/main/res/xml-da/relay_locations.xml
new file mode 100644
index 0000000000..beba43aed5
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-da/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">Adelaide</string>
+ <string name="Albania">Albanien</string>
+ <string name="Amsterdam">Amsterdam</string>
+ <string name="Ashburn, VA">Ashburn, VA</string>
+ <string name="Athens">Athen</string>
+ <string name="Atlanta, GA">Atlanta, GA</string>
+ <string name="Auckland">Auckland</string>
+ <string name="Australia">Australien</string>
+ <string name="Austria">Østrig</string>
+ <string name="Bangkok">Bangkok</string>
+ <string name="Barcelona">Barcelona</string>
+ <string name="Belgium">Belgien</string>
+ <string name="Belgrade">Beograd</string>
+ <string name="Berlin">Berlin</string>
+ <string name="Bogota">Bogota</string>
+ <string name="Bordeaux">Bordeaux</string>
+ <string name="Boston, MA">Boston, MA</string>
+ <string name="Bratislava">Bratislava</string>
+ <string name="Brazil">Brasilien</string>
+ <string name="Brisbane">Brisbane</string>
+ <string name="Brussels">Bruxelles</string>
+ <string name="Bucharest">Bukarest</string>
+ <string name="Budapest">Budapest</string>
+ <string name="Bulgaria">Bulgarien</string>
+ <string name="Calgary">Calgary</string>
+ <string name="Canada">Canada</string>
+ <string name="Canberra">Canberra</string>
+ <string name="Charlotte, NC">Charlotte, NC</string>
+ <string name="Chicago, IL">Chicago, IL</string>
+ <string name="Chile">Chile</string>
+ <string name="Chisinau">Chisinau</string>
+ <string name="Cleveland, OH">Cleveland, OH</string>
+ <string name="Colombia">Colombia</string>
+ <string name="Copenhagen">København</string>
+ <string name="Croatia">Kroatien</string>
+ <string name="Czech Republic">Tjekkiet</string>
+ <string name="Dallas, TX">Dallas, TX</string>
+ <string name="Denmark">Danmark</string>
+ <string name="Denver, CO">Denver, CO</string>
+ <string name="Detroit, MI">Detroit, MI</string>
+ <string name="Dubai">Dubai</string>
+ <string name="Dublin">Dublin</string>
+ <string name="Dusseldorf">Düsseldorf</string>
+ <string name="Estonia">Estland</string>
+ <string name="Finland">Finland</string>
+ <string name="France">Frankrig</string>
+ <string name="Frankfurt">Frankfurt</string>
+ <string name="Germany">Tyskland</string>
+ <string name="Glasgow">Glasgow</string>
+ <string name="Gothenburg">Gøteborg</string>
+ <string name="Greece">Grækenland</string>
+ <string name="Helsingborg">Helsingborg</string>
+ <string name="Helsinki">Helsinki</string>
+ <string name="Hong Kong">Hongkong</string>
+ <string name="Honolulu, HI">Honolulu, HI</string>
+ <string name="Houston, TX">Houston, TX</string>
+ <string name="Hungary">Ungarn</string>
+ <string name="India">Indien</string>
+ <string name="Indonesia">Indonesien</string>
+ <string name="Ireland">Irland</string>
+ <string name="Israel">Israel</string>
+ <string name="Italy">Italien</string>
+ <string name="Jackson, MS">Jackson, MS</string>
+ <string name="Jakarta">Jakarta</string>
+ <string name="Japan">Japan</string>
+ <string name="Johannesburg">Johannesburg</string>
+ <string name="Kiev">Kiev</string>
+ <string name="Kyiv">Kyiv</string>
+ <string name="Latvia">Letland</string>
+ <string name="Lisbon">Lissabon</string>
+ <string name="Ljubljana">Ljubljana</string>
+ <string name="London">London</string>
+ <string name="Los Angeles, CA">Los Angeles, Californien</string>
+ <string name="Louisville, KY">Louisville, KY</string>
+ <string name="Luxembourg">Luxembourg</string>
+ <string name="Madrid">Madrid</string>
+ <string name="Malmö">Malmø</string>
+ <string name="Manchester">Manchester</string>
+ <string name="Marseille">Marseille</string>
+ <string name="McAllen, TX">McAllen, TX</string>
+ <string name="Melbourne">Melbourne</string>
+ <string name="Mexico">Mexico</string>
+ <string name="Miami, FL">Miami, FL</string>
+ <string name="Milan">Milano</string>
+ <string name="Milwaukee, WI">Milwaukee, WI</string>
+ <string name="Minneapolis/St. Paul Apt, MN">Minneapolis/St. Paul Apt, MN</string>
+ <string name="Moldova">Moldova</string>
+ <string name="Montreal">Montreal</string>
+ <string name="Netherlands">Holland</string>
+ <string name="New York, NY">New York, NY</string>
+ <string name="New Zealand">New Zealand</string>
+ <string name="Nis">Nis</string>
+ <string name="North Macedonia">Nordmakedonien</string>
+ <string name="Norway">Norge</string>
+ <string name="Oklahoma City, OK">Oklahoma City, OK</string>
+ <string name="Osaka">Osaka</string>
+ <string name="Oslo">Oslo</string>
+ <string name="Palermo">Palermo</string>
+ <string name="Paris">Paris</string>
+ <string name="Perth">Perth</string>
+ <string name="Philadelphia, PA">Philadelphia, PA</string>
+ <string name="Phoenix, AZ">Phoenix, AZ</string>
+ <string name="Piscataway, NJ">Piscataway, NJ</string>
+ <string name="Poland">Polen</string>
+ <string name="Portland, OR">Portland, OR</string>
+ <string name="Portugal">Portugal</string>
+ <string name="Prague">Prag</string>
+ <string name="Pune">Pune</string>
+ <string name="Queretaro">Queretaro</string>
+ <string name="Raleigh, NC">Raleigh, NC</string>
+ <string name="Richmond, VA">Richmond, VA</string>
+ <string name="Riga">Riga</string>
+ <string name="Romania">Rumænien</string>
+ <string name="Rome">Rom</string>
+ <string name="Salt Lake City, UT">Salt Lake City, UT</string>
+ <string name="San Francisco, CA">San Francisco, Californien</string>
+ <string name="San Jose, CA">San Jose, Californien</string>
+ <string name="Santiago">Santiago</string>
+ <string name="Sao Paulo">Sao Paulo</string>
+ <string name="Seattle, WA">Seattle, WA</string>
+ <string name="Secaucus, NJ">Secaucus, NJ</string>
+ <string name="Serbia">Serbien</string>
+ <string name="Singapore">Singapore</string>
+ <string name="Sioux Falls, SD">Sioux Falls, SD</string>
+ <string name="Skopje">Skopje</string>
+ <string name="Slovakia">Slovakiet</string>
+ <string name="Slovenia">Slovenien</string>
+ <string name="Sofia">Sofia</string>
+ <string name="South Africa">Sydafrika</string>
+ <string name="Spain">Spanien</string>
+ <string name="St. Louis, MO">St. Louis, MO</string>
+ <string name="Stamford, CT">Stamford, CT</string>
+ <string name="Stavanger">Stavanger</string>
+ <string name="Stockholm">Stockholm</string>
+ <string name="Sweden">Sverige</string>
+ <string name="Switzerland">Schweiz</string>
+ <string name="Sydney">Sydney</string>
+ <string name="Tallinn">Tallinn</string>
+ <string name="Tel Aviv">Tel Aviv</string>
+ <string name="Thailand">Thailand</string>
+ <string name="Tirana">Tirana</string>
+ <string name="Tokyo">Tokyo</string>
+ <string name="Toronto">Toronto</string>
+ <string name="UK">UK</string>
+ <string name="USA">USA</string>
+ <string name="Ukraine">Ukraine</string>
+ <string name="United Arab Emirates">Forenede Arabiske Emirater</string>
+ <string name="Valencia">Valencia</string>
+ <string name="Vancouver">Vancouver</string>
+ <string name="Vienna">Wien</string>
+ <string name="Warsaw">Warszawa</string>
+ <string name="Washington DC">Washington DC</string>
+ <string name="Wien">Wien</string>
+ <string name="Zagreb">Zagreb</string>
+ <string name="Zurich">Zürich</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-de/relay_locations.xml b/android/lib/resource/src/main/res/xml-de/relay_locations.xml
new file mode 100644
index 0000000000..26bf0eab00
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-de/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">Adelaide</string>
+ <string name="Albania">Albanien</string>
+ <string name="Amsterdam">Amsterdam</string>
+ <string name="Ashburn, VA">Ashburn, VA</string>
+ <string name="Athens">Athen</string>
+ <string name="Atlanta, GA">Atlanta, GA</string>
+ <string name="Auckland">Auckland</string>
+ <string name="Australia">Australien</string>
+ <string name="Austria">Österreich</string>
+ <string name="Bangkok">Bangkok</string>
+ <string name="Barcelona">Barcelona</string>
+ <string name="Belgium">Belgien</string>
+ <string name="Belgrade">Belgrad</string>
+ <string name="Berlin">Berlin</string>
+ <string name="Bogota">Bogotá</string>
+ <string name="Bordeaux">Bordeaux</string>
+ <string name="Boston, MA">Boston, MA</string>
+ <string name="Bratislava">Bratislava</string>
+ <string name="Brazil">Brasilien</string>
+ <string name="Brisbane">Brisbane</string>
+ <string name="Brussels">Brüssel</string>
+ <string name="Bucharest">Bukarest</string>
+ <string name="Budapest">Budapest</string>
+ <string name="Bulgaria">Bulgarien</string>
+ <string name="Calgary">Calgary</string>
+ <string name="Canada">Kanada</string>
+ <string name="Canberra">Canberra</string>
+ <string name="Charlotte, NC">Charlotte, NC</string>
+ <string name="Chicago, IL">Chicago, IL</string>
+ <string name="Chile">Chile</string>
+ <string name="Chisinau">Chișinău</string>
+ <string name="Cleveland, OH">Cleveland, OH</string>
+ <string name="Colombia">Kolumbien</string>
+ <string name="Copenhagen">Kopenhagen</string>
+ <string name="Croatia">Kroatien</string>
+ <string name="Czech Republic">Tschechien</string>
+ <string name="Dallas, TX">Dallas, TX</string>
+ <string name="Denmark">Dänemark</string>
+ <string name="Denver, CO">Denver, CO</string>
+ <string name="Detroit, MI">Detroit, MI</string>
+ <string name="Dubai">Dubai</string>
+ <string name="Dublin">Dublin</string>
+ <string name="Dusseldorf">Düsseldorf</string>
+ <string name="Estonia">Estland</string>
+ <string name="Finland">Finnland</string>
+ <string name="France">Frankreich</string>
+ <string name="Frankfurt">Frankfurt am Main</string>
+ <string name="Germany">Deutschland</string>
+ <string name="Glasgow">Glasgow</string>
+ <string name="Gothenburg">Göteborg</string>
+ <string name="Greece">Griechenland</string>
+ <string name="Helsingborg">Helsingborg</string>
+ <string name="Helsinki">Helsinki</string>
+ <string name="Hong Kong">Hongkong</string>
+ <string name="Honolulu, HI">Honolulu, HI</string>
+ <string name="Houston, TX">Houston, TX</string>
+ <string name="Hungary">Ungarn</string>
+ <string name="India">Indien</string>
+ <string name="Indonesia">Indonesien</string>
+ <string name="Ireland">Irland</string>
+ <string name="Israel">Israel</string>
+ <string name="Italy">Italien</string>
+ <string name="Jackson, MS">Jackson, MS</string>
+ <string name="Jakarta">Jakarta</string>
+ <string name="Japan">Japan</string>
+ <string name="Johannesburg">Johannesburg</string>
+ <string name="Kiev">Kiew</string>
+ <string name="Kyiv">Kiew</string>
+ <string name="Latvia">Lettland</string>
+ <string name="Lisbon">Lissabon</string>
+ <string name="Ljubljana">Ljubljana</string>
+ <string name="London">London</string>
+ <string name="Los Angeles, CA">Los Angeles, CA</string>
+ <string name="Louisville, KY">Louisville, KY</string>
+ <string name="Luxembourg">Luxemburg</string>
+ <string name="Madrid">Madrid</string>
+ <string name="Malmö">Malmö</string>
+ <string name="Manchester">Manchester</string>
+ <string name="Marseille">Marseille</string>
+ <string name="McAllen, TX">McAllen, TX</string>
+ <string name="Melbourne">Melbourne</string>
+ <string name="Mexico">Mexiko</string>
+ <string name="Miami, FL">Miami, FL</string>
+ <string name="Milan">Mailand</string>
+ <string name="Milwaukee, WI">Milwaukee, WI</string>
+ <string name="Minneapolis/St. Paul Apt, MN">Minneapolis/St. Paul Flgh. , MN</string>
+ <string name="Moldova">Republik Moldau</string>
+ <string name="Montreal">Montreal</string>
+ <string name="Netherlands">Niederlande</string>
+ <string name="New York, NY">New York City, NY</string>
+ <string name="New Zealand">Neuseeland</string>
+ <string name="Nis">Niš</string>
+ <string name="North Macedonia">Nordmazedonien</string>
+ <string name="Norway">Norwegen</string>
+ <string name="Oklahoma City, OK">Oklahoma City, OK</string>
+ <string name="Osaka">Osaka</string>
+ <string name="Oslo">Oslo</string>
+ <string name="Palermo">Palermo</string>
+ <string name="Paris">Paris</string>
+ <string name="Perth">Perth</string>
+ <string name="Philadelphia, PA">Philadelphia, PA</string>
+ <string name="Phoenix, AZ">Phoenix, AZ</string>
+ <string name="Piscataway, NJ">Piscataway, NJ</string>
+ <string name="Poland">Polen</string>
+ <string name="Portland, OR">Portland, OR</string>
+ <string name="Portugal">Portugal</string>
+ <string name="Prague">Prag</string>
+ <string name="Pune">Pune</string>
+ <string name="Queretaro">Santiago de Querétaro</string>
+ <string name="Raleigh, NC">Raleigh, NC</string>
+ <string name="Richmond, VA">Richmond, VA</string>
+ <string name="Riga">Riga</string>
+ <string name="Romania">Rumänien</string>
+ <string name="Rome">Rom</string>
+ <string name="Salt Lake City, UT">Salt Lake City, UT</string>
+ <string name="San Francisco, CA">San Francisco, CA</string>
+ <string name="San Jose, CA">San Jose, CA</string>
+ <string name="Santiago">Santiago</string>
+ <string name="Sao Paulo">São Paulo</string>
+ <string name="Seattle, WA">Seattle, WA</string>
+ <string name="Secaucus, NJ">Secaucus, NJ</string>
+ <string name="Serbia">Serbien</string>
+ <string name="Singapore">Singapur</string>
+ <string name="Sioux Falls, SD">Sioux Falls, SD</string>
+ <string name="Skopje">Skopje</string>
+ <string name="Slovakia">Slowakei</string>
+ <string name="Slovenia">Slowenien</string>
+ <string name="Sofia">Sofia</string>
+ <string name="South Africa">Südafrika</string>
+ <string name="Spain">Spanien</string>
+ <string name="St. Louis, MO">St. Louis, MO</string>
+ <string name="Stamford, CT">Stamford, CT</string>
+ <string name="Stavanger">Stavanger</string>
+ <string name="Stockholm">Stockholm</string>
+ <string name="Sweden">Schweden</string>
+ <string name="Switzerland">Schweiz</string>
+ <string name="Sydney">Sydney</string>
+ <string name="Tallinn">Tallinn</string>
+ <string name="Tel Aviv">Tel Aviv</string>
+ <string name="Thailand">Thailand</string>
+ <string name="Tirana">Tirana</string>
+ <string name="Tokyo">Präfektur Tokio</string>
+ <string name="Toronto">Toronto</string>
+ <string name="UK">Vereinigtes Königreich</string>
+ <string name="USA">Vereinigte Staaten</string>
+ <string name="Ukraine">Ukraine</string>
+ <string name="United Arab Emirates">Vereinigte Arabische Emirate</string>
+ <string name="Valencia">Valencia</string>
+ <string name="Vancouver">Vancouver</string>
+ <string name="Vienna">Wien</string>
+ <string name="Warsaw">Warschau</string>
+ <string name="Washington DC">Washington DC</string>
+ <string name="Wien">Wien</string>
+ <string name="Zagreb">Zagreb</string>
+ <string name="Zurich">Zürich</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-es/relay_locations.xml b/android/lib/resource/src/main/res/xml-es/relay_locations.xml
new file mode 100644
index 0000000000..56414443b3
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-es/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">Adelaide</string>
+ <string name="Albania">Albania</string>
+ <string name="Amsterdam">Ámsterdam</string>
+ <string name="Ashburn, VA">Ashburn, VA</string>
+ <string name="Athens">Atenas</string>
+ <string name="Atlanta, GA">Atlanta, GA</string>
+ <string name="Auckland">Auckland</string>
+ <string name="Australia">Australia</string>
+ <string name="Austria">Austria</string>
+ <string name="Bangkok">Bangkok</string>
+ <string name="Barcelona">Barcelona</string>
+ <string name="Belgium">Bélgica</string>
+ <string name="Belgrade">Belgrado</string>
+ <string name="Berlin">Berlín</string>
+ <string name="Bogota">Bogotá</string>
+ <string name="Bordeaux">Burdeos</string>
+ <string name="Boston, MA">Boston, MA</string>
+ <string name="Bratislava">Bratislava</string>
+ <string name="Brazil">Brasil</string>
+ <string name="Brisbane">Brisbane</string>
+ <string name="Brussels">Bruselas</string>
+ <string name="Bucharest">Bucarest</string>
+ <string name="Budapest">Budapest</string>
+ <string name="Bulgaria">Bulgaria</string>
+ <string name="Calgary">Calgary</string>
+ <string name="Canada">Canadá</string>
+ <string name="Canberra">Canberra</string>
+ <string name="Charlotte, NC">Charlotte, NC</string>
+ <string name="Chicago, IL">Chicago, IL</string>
+ <string name="Chile">Chile</string>
+ <string name="Chisinau">Chisináu</string>
+ <string name="Cleveland, OH">Cleveland, OH</string>
+ <string name="Colombia">Colombia</string>
+ <string name="Copenhagen">Copenhague</string>
+ <string name="Croatia">Croacia</string>
+ <string name="Czech Republic">República Checa</string>
+ <string name="Dallas, TX">Dallas, TX</string>
+ <string name="Denmark">Dinamarca</string>
+ <string name="Denver, CO">Denver, CO</string>
+ <string name="Detroit, MI">Detroit, MI</string>
+ <string name="Dubai">Dubái</string>
+ <string name="Dublin">Dublín</string>
+ <string name="Dusseldorf">Düsseldorf</string>
+ <string name="Estonia">Estonia</string>
+ <string name="Finland">Finlandia</string>
+ <string name="France">Francia</string>
+ <string name="Frankfurt">Fráncfort</string>
+ <string name="Germany">Alemania</string>
+ <string name="Glasgow">Glasgow</string>
+ <string name="Gothenburg">Gotemburgo</string>
+ <string name="Greece">Grecia</string>
+ <string name="Helsingborg">Helsingborg</string>
+ <string name="Helsinki">Helsinki</string>
+ <string name="Hong Kong">Hong Kong</string>
+ <string name="Honolulu, HI">Honolulu, HI</string>
+ <string name="Houston, TX">Houston, Texas</string>
+ <string name="Hungary">Hungría</string>
+ <string name="India">India</string>
+ <string name="Indonesia">Indonesia</string>
+ <string name="Ireland">Irlanda</string>
+ <string name="Israel">Israel</string>
+ <string name="Italy">Italia</string>
+ <string name="Jackson, MS">Jackson, MS</string>
+ <string name="Jakarta">Yakarta</string>
+ <string name="Japan">Japón</string>
+ <string name="Johannesburg">Johannesburgo</string>
+ <string name="Kiev">Kiev</string>
+ <string name="Kyiv">Kiev</string>
+ <string name="Latvia">Letonia</string>
+ <string name="Lisbon">Lisboa</string>
+ <string name="Ljubljana">Liubliana</string>
+ <string name="London">Londres</string>
+ <string name="Los Angeles, CA">Los Ángeles, CA</string>
+ <string name="Louisville, KY">Louisville, KY</string>
+ <string name="Luxembourg">Luxemburgo</string>
+ <string name="Madrid">Madrid</string>
+ <string name="Malmö">Malmö</string>
+ <string name="Manchester">Manchester</string>
+ <string name="Marseille">Marsella</string>
+ <string name="McAllen, TX">McAllen, TX</string>
+ <string name="Melbourne">Melbourne</string>
+ <string name="Mexico">México</string>
+ <string name="Miami, FL">Miami, FL</string>
+ <string name="Milan">Milán</string>
+ <string name="Milwaukee, WI">Milwaukee, WI</string>
+ <string name="Minneapolis/St. Paul Apt, MN">Minneapolis/St Paul Apt, MN</string>
+ <string name="Moldova">Moldavia</string>
+ <string name="Montreal">Montreal</string>
+ <string name="Netherlands">Países Bajos</string>
+ <string name="New York, NY">Nueva York, NY</string>
+ <string name="New Zealand">Nueva Zelanda</string>
+ <string name="Nis">Niš</string>
+ <string name="North Macedonia">Macedonia del Norte</string>
+ <string name="Norway">Noruega</string>
+ <string name="Oklahoma City, OK">Oklahoma City, OK</string>
+ <string name="Osaka">Osaka</string>
+ <string name="Oslo">Oslo</string>
+ <string name="Palermo">Palermo</string>
+ <string name="Paris">París</string>
+ <string name="Perth">Perth</string>
+ <string name="Philadelphia, PA">Filadelfia, PA</string>
+ <string name="Phoenix, AZ">Phoenix, AZ</string>
+ <string name="Piscataway, NJ">Piscataway, NJ</string>
+ <string name="Poland">Polonia</string>
+ <string name="Portland, OR">Portland, OR</string>
+ <string name="Portugal">Portugal</string>
+ <string name="Prague">Praga</string>
+ <string name="Pune">Pune</string>
+ <string name="Queretaro">Querétaro</string>
+ <string name="Raleigh, NC">Raleigh, NC</string>
+ <string name="Richmond, VA">Richmond, VA</string>
+ <string name="Riga">Riga</string>
+ <string name="Romania">Rumanía</string>
+ <string name="Rome">Roma</string>
+ <string name="Salt Lake City, UT">Salt Lake City, UT</string>
+ <string name="San Francisco, CA">San Francisco, CA</string>
+ <string name="San Jose, CA">San José, CA</string>
+ <string name="Santiago">Santiago</string>
+ <string name="Sao Paulo">São Paulo</string>
+ <string name="Seattle, WA">Seattle, WA</string>
+ <string name="Secaucus, NJ">Secaucus, NJ</string>
+ <string name="Serbia">Serbia</string>
+ <string name="Singapore">Singapur</string>
+ <string name="Sioux Falls, SD">Sioux Falls, SD</string>
+ <string name="Skopje">Skopie</string>
+ <string name="Slovakia">Eslovaquia</string>
+ <string name="Slovenia">Eslovenia</string>
+ <string name="Sofia">Sofía</string>
+ <string name="South Africa">Sudáfrica</string>
+ <string name="Spain">España</string>
+ <string name="St. Louis, MO">San Luis, MO</string>
+ <string name="Stamford, CT">Stamford, CT</string>
+ <string name="Stavanger">Stavanger</string>
+ <string name="Stockholm">Estocolmo</string>
+ <string name="Sweden">Suecia</string>
+ <string name="Switzerland">Suiza</string>
+ <string name="Sydney">Sídney</string>
+ <string name="Tallinn">Tallin</string>
+ <string name="Tel Aviv">Tel Aviv</string>
+ <string name="Thailand">Tailandia</string>
+ <string name="Tirana">Tirana</string>
+ <string name="Tokyo">Tokio</string>
+ <string name="Toronto">Toronto</string>
+ <string name="UK">Reino Unido</string>
+ <string name="USA">Estados Unidos</string>
+ <string name="Ukraine">Ucrania</string>
+ <string name="United Arab Emirates">Emiratos Árabes Unidos</string>
+ <string name="Valencia">Valencia</string>
+ <string name="Vancouver">Vancouver</string>
+ <string name="Vienna">Viena</string>
+ <string name="Warsaw">Varsovia</string>
+ <string name="Washington DC">Washington DC</string>
+ <string name="Wien">Viena</string>
+ <string name="Zagreb">Zagreb</string>
+ <string name="Zurich">Zúrich</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-fi/relay_locations.xml b/android/lib/resource/src/main/res/xml-fi/relay_locations.xml
new file mode 100644
index 0000000000..1adb4cbd7e
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-fi/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">Adelaide</string>
+ <string name="Albania">Albania</string>
+ <string name="Amsterdam">Amsterdam</string>
+ <string name="Ashburn, VA">Ashburn, VA</string>
+ <string name="Athens">Ateena</string>
+ <string name="Atlanta, GA">Atlanta, GA</string>
+ <string name="Auckland">Auckland</string>
+ <string name="Australia">Australia</string>
+ <string name="Austria">Itävalta</string>
+ <string name="Bangkok">Bangkok</string>
+ <string name="Barcelona">Barcelona</string>
+ <string name="Belgium">Belgia</string>
+ <string name="Belgrade">Belgrad</string>
+ <string name="Berlin">Berliini</string>
+ <string name="Bogota">Bogota</string>
+ <string name="Bordeaux">Bordeaux</string>
+ <string name="Boston, MA">Boston, MA</string>
+ <string name="Bratislava">Bratislava</string>
+ <string name="Brazil">Brasilia</string>
+ <string name="Brisbane">Brisbane</string>
+ <string name="Brussels">Bryssel</string>
+ <string name="Bucharest">Bukarest</string>
+ <string name="Budapest">Budapest</string>
+ <string name="Bulgaria">Bulgaria</string>
+ <string name="Calgary">Calgary</string>
+ <string name="Canada">Kanada</string>
+ <string name="Canberra">Canberra</string>
+ <string name="Charlotte, NC">Charlotte, NC</string>
+ <string name="Chicago, IL">Chicago, IL</string>
+ <string name="Chile">Chile</string>
+ <string name="Chisinau">Chisinau</string>
+ <string name="Cleveland, OH">Cleveland, OH</string>
+ <string name="Colombia">Kolumbia</string>
+ <string name="Copenhagen">Kööpenhamina</string>
+ <string name="Croatia">Kroatia</string>
+ <string name="Czech Republic">Tšekki</string>
+ <string name="Dallas, TX">Dallas, TX</string>
+ <string name="Denmark">Tanska</string>
+ <string name="Denver, CO">Denver, CO</string>
+ <string name="Detroit, MI">Detroit, Michigan</string>
+ <string name="Dubai">Dubai</string>
+ <string name="Dublin">Dublin</string>
+ <string name="Dusseldorf">Düsseldorf</string>
+ <string name="Estonia">Viro</string>
+ <string name="Finland">Suomi</string>
+ <string name="France">Ranska</string>
+ <string name="Frankfurt">Frankfurt</string>
+ <string name="Germany">Saksa</string>
+ <string name="Glasgow">Glasgow</string>
+ <string name="Gothenburg">Göteborg</string>
+ <string name="Greece">Kreikka</string>
+ <string name="Helsingborg">Helsingborg</string>
+ <string name="Helsinki">Helsinki</string>
+ <string name="Hong Kong">Hongkong</string>
+ <string name="Honolulu, HI">Honolulu, HI</string>
+ <string name="Houston, TX">Houston, TX</string>
+ <string name="Hungary">Unkari</string>
+ <string name="India">Intia</string>
+ <string name="Indonesia">Indonesia</string>
+ <string name="Ireland">Irlanti</string>
+ <string name="Israel">Israel</string>
+ <string name="Italy">Italia</string>
+ <string name="Jackson, MS">Jackson, MS</string>
+ <string name="Jakarta">Jakarta</string>
+ <string name="Japan">Japani</string>
+ <string name="Johannesburg">Johannesburg</string>
+ <string name="Kiev">Kiova</string>
+ <string name="Kyiv">Kiova</string>
+ <string name="Latvia">Latvia</string>
+ <string name="Lisbon">Lissabon</string>
+ <string name="Ljubljana">Ljubljana</string>
+ <string name="London">Lontoo</string>
+ <string name="Los Angeles, CA">Los Angeles, CA</string>
+ <string name="Louisville, KY">Louisville, KY</string>
+ <string name="Luxembourg">Luxemburg</string>
+ <string name="Madrid">Madrid</string>
+ <string name="Malmö">Malmö</string>
+ <string name="Manchester">Manchester</string>
+ <string name="Marseille">Marseille</string>
+ <string name="McAllen, TX">McAllen, TX</string>
+ <string name="Melbourne">Melbourne</string>
+ <string name="Mexico">Meksiko</string>
+ <string name="Miami, FL">Miami, FL</string>
+ <string name="Milan">Milano</string>
+ <string name="Milwaukee, WI">Milwaukee, WI</string>
+ <string name="Minneapolis/St. Paul Apt, MN">Minneapolis/St. Paul Apt, MN</string>
+ <string name="Moldova">Moldova</string>
+ <string name="Montreal">Montreal</string>
+ <string name="Netherlands">Alankomaat</string>
+ <string name="New York, NY">New York, NY</string>
+ <string name="New Zealand">Uusi-Seelanti</string>
+ <string name="Nis">Nis</string>
+ <string name="North Macedonia">Pohjois-Makedonia</string>
+ <string name="Norway">Norja</string>
+ <string name="Oklahoma City, OK">Oklahoma City, OK</string>
+ <string name="Osaka">Osaka</string>
+ <string name="Oslo">Oslo</string>
+ <string name="Palermo">Palermo</string>
+ <string name="Paris">Pariisi</string>
+ <string name="Perth">Perth</string>
+ <string name="Philadelphia, PA">Philadelphia, PA</string>
+ <string name="Phoenix, AZ">Phoenix, AZ</string>
+ <string name="Piscataway, NJ">Piscataway, NJ</string>
+ <string name="Poland">Puola</string>
+ <string name="Portland, OR">Portland, OR</string>
+ <string name="Portugal">Portugali</string>
+ <string name="Prague">Praha</string>
+ <string name="Pune">Pune</string>
+ <string name="Queretaro">Queretaro</string>
+ <string name="Raleigh, NC">Raleigh, NC</string>
+ <string name="Richmond, VA">Richmond, VA</string>
+ <string name="Riga">Riika</string>
+ <string name="Romania">Romania</string>
+ <string name="Rome">Rooma</string>
+ <string name="Salt Lake City, UT">Salt Lake City, UT</string>
+ <string name="San Francisco, CA">San Francisco, CA</string>
+ <string name="San Jose, CA">San Jose, CA</string>
+ <string name="Santiago">Santiago</string>
+ <string name="Sao Paulo">São Paulo</string>
+ <string name="Seattle, WA">Seattle, WA</string>
+ <string name="Secaucus, NJ">Secaucus, NJ</string>
+ <string name="Serbia">Serbia</string>
+ <string name="Singapore">Singapore</string>
+ <string name="Sioux Falls, SD">Sioux Falls, SD</string>
+ <string name="Skopje">Skopje</string>
+ <string name="Slovakia">Slovakia</string>
+ <string name="Slovenia">Slovenia</string>
+ <string name="Sofia">Sofia</string>
+ <string name="South Africa">Etelä-Afrikka</string>
+ <string name="Spain">Espanja</string>
+ <string name="St. Louis, MO">St. Louis, MO</string>
+ <string name="Stamford, CT">Stamford, CT</string>
+ <string name="Stavanger">Stavanger</string>
+ <string name="Stockholm">Tukholma</string>
+ <string name="Sweden">Ruotsi</string>
+ <string name="Switzerland">Sveitsi</string>
+ <string name="Sydney">Sydney</string>
+ <string name="Tallinn">Tallinna</string>
+ <string name="Tel Aviv">Tel Aviv</string>
+ <string name="Thailand">Thaimaa</string>
+ <string name="Tirana">Tirana</string>
+ <string name="Tokyo">Tokio</string>
+ <string name="Toronto">Toronto</string>
+ <string name="UK">Iso-Britannia</string>
+ <string name="USA">Yhdysvallat</string>
+ <string name="Ukraine">Ukraina</string>
+ <string name="United Arab Emirates">Yhdistyneet Arabiemiirikunnat</string>
+ <string name="Valencia">Valencia</string>
+ <string name="Vancouver">Vancouver</string>
+ <string name="Vienna">Wien</string>
+ <string name="Warsaw">Varsova</string>
+ <string name="Washington DC">Washington DC</string>
+ <string name="Wien">Wien</string>
+ <string name="Zagreb">Zagreb</string>
+ <string name="Zurich">Zürich</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-fr/relay_locations.xml b/android/lib/resource/src/main/res/xml-fr/relay_locations.xml
new file mode 100644
index 0000000000..cebc852c13
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-fr/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">Adélaïde</string>
+ <string name="Albania">Albanie</string>
+ <string name="Amsterdam">Amsterdam</string>
+ <string name="Ashburn, VA">Ashburn, VA</string>
+ <string name="Athens">Athènes</string>
+ <string name="Atlanta, GA">Atlanta, GA</string>
+ <string name="Auckland">Auckland</string>
+ <string name="Australia">Australie</string>
+ <string name="Austria">Autriche</string>
+ <string name="Bangkok">Bangkok</string>
+ <string name="Barcelona">Barcelone</string>
+ <string name="Belgium">Belgique</string>
+ <string name="Belgrade">Belgrade</string>
+ <string name="Berlin">Berlin</string>
+ <string name="Bogota">Bogota</string>
+ <string name="Bordeaux">Bordeaux</string>
+ <string name="Boston, MA">Boston, MA</string>
+ <string name="Bratislava">Bratislava</string>
+ <string name="Brazil">Brésil</string>
+ <string name="Brisbane">Brisbane</string>
+ <string name="Brussels">Bruxelles</string>
+ <string name="Bucharest">Bucarest</string>
+ <string name="Budapest">Budapest</string>
+ <string name="Bulgaria">Bulgarie</string>
+ <string name="Calgary">Calgary</string>
+ <string name="Canada">Canada</string>
+ <string name="Canberra">Canberra</string>
+ <string name="Charlotte, NC">Charlotte, NC</string>
+ <string name="Chicago, IL">Chicago, IL</string>
+ <string name="Chile">Chili</string>
+ <string name="Chisinau">Chișinău</string>
+ <string name="Cleveland, OH">Cleveland, OH</string>
+ <string name="Colombia">Colombie</string>
+ <string name="Copenhagen">Copenhague</string>
+ <string name="Croatia">Croatie</string>
+ <string name="Czech Republic">République tchèque</string>
+ <string name="Dallas, TX">Dallas, TX</string>
+ <string name="Denmark">Danemark</string>
+ <string name="Denver, CO">Denver, CO</string>
+ <string name="Detroit, MI">Detroit, MI</string>
+ <string name="Dubai">Dubaï</string>
+ <string name="Dublin">Dublin</string>
+ <string name="Dusseldorf">Düsseldorf</string>
+ <string name="Estonia">Estonie</string>
+ <string name="Finland">Finlande</string>
+ <string name="France">France</string>
+ <string name="Frankfurt">Francfort-sur-le-Main</string>
+ <string name="Germany">Allemagne</string>
+ <string name="Glasgow">Glasgow</string>
+ <string name="Gothenburg">Göteborg</string>
+ <string name="Greece">Grèce</string>
+ <string name="Helsingborg">Helsingborg</string>
+ <string name="Helsinki">Helsinki</string>
+ <string name="Hong Kong">Hong Kong</string>
+ <string name="Honolulu, HI">Honolulu, HI</string>
+ <string name="Houston, TX">Houston, TX</string>
+ <string name="Hungary">Hongrie</string>
+ <string name="India">Inde</string>
+ <string name="Indonesia">Indonésie</string>
+ <string name="Ireland">Irlande</string>
+ <string name="Israel">Israël</string>
+ <string name="Italy">Italie</string>
+ <string name="Jackson, MS">Jackson, MS</string>
+ <string name="Jakarta">Jakarta</string>
+ <string name="Japan">Japon</string>
+ <string name="Johannesburg">Johannesbourg</string>
+ <string name="Kiev">Kiev</string>
+ <string name="Kyiv">Kiev</string>
+ <string name="Latvia">Lettonie</string>
+ <string name="Lisbon">Lisbonne</string>
+ <string name="Ljubljana">Ljubljana</string>
+ <string name="London">Londres</string>
+ <string name="Los Angeles, CA">Los Angeles, CA</string>
+ <string name="Louisville, KY">Louisville, KY</string>
+ <string name="Luxembourg">Luxembourg</string>
+ <string name="Madrid">Madrid</string>
+ <string name="Malmö">Malmö</string>
+ <string name="Manchester">Manchester</string>
+ <string name="Marseille">Marseille</string>
+ <string name="McAllen, TX">McAllen, TX</string>
+ <string name="Melbourne">Melbourne</string>
+ <string name="Mexico">Mexique</string>
+ <string name="Miami, FL">Miami, FL</string>
+ <string name="Milan">Milan</string>
+ <string name="Milwaukee, WI">Milwaukee, WI</string>
+ <string name="Minneapolis/St. Paul Apt, MN">Minneapolis/St. Paul Apt, MN</string>
+ <string name="Moldova">Moldavie</string>
+ <string name="Montreal">Montréal</string>
+ <string name="Netherlands">Pays-Bas</string>
+ <string name="New York, NY">New York, NY</string>
+ <string name="New Zealand">Nouvelle-Zélande</string>
+ <string name="Nis">Niš</string>
+ <string name="North Macedonia">Macédoine du Nord</string>
+ <string name="Norway">Norvège</string>
+ <string name="Oklahoma City, OK">Oklahoma City, OK</string>
+ <string name="Osaka">Osaka</string>
+ <string name="Oslo">Oslo</string>
+ <string name="Palermo">Palerme</string>
+ <string name="Paris">Paris</string>
+ <string name="Perth">Perth</string>
+ <string name="Philadelphia, PA">Philadelphie, PA</string>
+ <string name="Phoenix, AZ">Phoenix, AZ</string>
+ <string name="Piscataway, NJ">Piscataway, NJ</string>
+ <string name="Poland">Pologne</string>
+ <string name="Portland, OR">Portland, OR</string>
+ <string name="Portugal">Portugal</string>
+ <string name="Prague">Prague</string>
+ <string name="Pune">Pune</string>
+ <string name="Queretaro">Santiago de Querétaro</string>
+ <string name="Raleigh, NC">Raleigh, NC</string>
+ <string name="Richmond, VA">Richmond, VA</string>
+ <string name="Riga">Riga</string>
+ <string name="Romania">Roumanie</string>
+ <string name="Rome">Rome</string>
+ <string name="Salt Lake City, UT">Salt Lake City, UT</string>
+ <string name="San Francisco, CA">San Francisco, CA</string>
+ <string name="San Jose, CA">San José, CA</string>
+ <string name="Santiago">Santiago</string>
+ <string name="Sao Paulo">São Paulo</string>
+ <string name="Seattle, WA">Seattle, WA</string>
+ <string name="Secaucus, NJ">Secaucus, NJ</string>
+ <string name="Serbia">Serbie</string>
+ <string name="Singapore">Singapour</string>
+ <string name="Sioux Falls, SD">Sioux Falls, SD</string>
+ <string name="Skopje">Skopje</string>
+ <string name="Slovakia">Slovaquie</string>
+ <string name="Slovenia">Slovénie</string>
+ <string name="Sofia">Sofia</string>
+ <string name="South Africa">Afrique du Sud</string>
+ <string name="Spain">Espagne</string>
+ <string name="St. Louis, MO">Saint-Louis, MO</string>
+ <string name="Stamford, CT">Stamford, CT</string>
+ <string name="Stavanger">Stavanger</string>
+ <string name="Stockholm">Stockholm</string>
+ <string name="Sweden">Suède</string>
+ <string name="Switzerland">Suisse</string>
+ <string name="Sydney">Sydney</string>
+ <string name="Tallinn">Tallinn</string>
+ <string name="Tel Aviv">Tel Aviv</string>
+ <string name="Thailand">Thaïlande</string>
+ <string name="Tirana">Tirana</string>
+ <string name="Tokyo">Tokyo</string>
+ <string name="Toronto">Toronto</string>
+ <string name="UK">Royaume-Uni</string>
+ <string name="USA">États-Unis</string>
+ <string name="Ukraine">Ukraine</string>
+ <string name="United Arab Emirates">Émirats arabes unis</string>
+ <string name="Valencia">Valence</string>
+ <string name="Vancouver">Vancouver</string>
+ <string name="Vienna">Vienne</string>
+ <string name="Warsaw">Varsovie</string>
+ <string name="Washington DC">Washington DC</string>
+ <string name="Wien">Vienne</string>
+ <string name="Zagreb">Zagreb</string>
+ <string name="Zurich">Zurich</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-it/relay_locations.xml b/android/lib/resource/src/main/res/xml-it/relay_locations.xml
new file mode 100644
index 0000000000..070246b9c5
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-it/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">Adelaide</string>
+ <string name="Albania">Albania</string>
+ <string name="Amsterdam">Amsterdam</string>
+ <string name="Ashburn, VA">Ashburn, VA</string>
+ <string name="Athens">Atene</string>
+ <string name="Atlanta, GA">Atlanta, GA</string>
+ <string name="Auckland">Auckland</string>
+ <string name="Australia">Australia</string>
+ <string name="Austria">Austria</string>
+ <string name="Bangkok">Bangkok</string>
+ <string name="Barcelona">Barcellona</string>
+ <string name="Belgium">Belgio</string>
+ <string name="Belgrade">Belgrado</string>
+ <string name="Berlin">Berlino</string>
+ <string name="Bogota">Bogotà</string>
+ <string name="Bordeaux">Bordeaux</string>
+ <string name="Boston, MA">Boston, MA</string>
+ <string name="Bratislava">Bratislava</string>
+ <string name="Brazil">Brasile</string>
+ <string name="Brisbane">Brisbane</string>
+ <string name="Brussels">Bruxelles</string>
+ <string name="Bucharest">Bucarest</string>
+ <string name="Budapest">Budapest</string>
+ <string name="Bulgaria">Bulgaria</string>
+ <string name="Calgary">Calgary</string>
+ <string name="Canada">Canada</string>
+ <string name="Canberra">Canberra</string>
+ <string name="Charlotte, NC">Charlotte, NC</string>
+ <string name="Chicago, IL">Chicago, IL</string>
+ <string name="Chile">Cile</string>
+ <string name="Chisinau">Chisinau</string>
+ <string name="Cleveland, OH">Cleveland, OH</string>
+ <string name="Colombia">Colombia</string>
+ <string name="Copenhagen">Copenaghen</string>
+ <string name="Croatia">Croazia</string>
+ <string name="Czech Republic">Repubblica Ceca</string>
+ <string name="Dallas, TX">Dallas, TX</string>
+ <string name="Denmark">Danimarca</string>
+ <string name="Denver, CO">Denver, CO</string>
+ <string name="Detroit, MI">Detroit, MI</string>
+ <string name="Dubai">Dubai</string>
+ <string name="Dublin">Dublino</string>
+ <string name="Dusseldorf">Dusseldorf</string>
+ <string name="Estonia">Estonia</string>
+ <string name="Finland">Finlandia</string>
+ <string name="France">Francia</string>
+ <string name="Frankfurt">Francoforte sul Meno</string>
+ <string name="Germany">Germania</string>
+ <string name="Glasgow">Glasgow</string>
+ <string name="Gothenburg">Göteborg</string>
+ <string name="Greece">Grecia</string>
+ <string name="Helsingborg">Helsingborg</string>
+ <string name="Helsinki">Helsinki</string>
+ <string name="Hong Kong">Hong Kong</string>
+ <string name="Honolulu, HI">Honolulu, HI</string>
+ <string name="Houston, TX">Houston, TX</string>
+ <string name="Hungary">Ungheria</string>
+ <string name="India">India</string>
+ <string name="Indonesia">Indonesia</string>
+ <string name="Ireland">Irlanda</string>
+ <string name="Israel">Israele</string>
+ <string name="Italy">Italia</string>
+ <string name="Jackson, MS">Jackson, MS</string>
+ <string name="Jakarta">Giacarta</string>
+ <string name="Japan">Giappone</string>
+ <string name="Johannesburg">Johannesburg</string>
+ <string name="Kiev">Kiev</string>
+ <string name="Kyiv">Kiev</string>
+ <string name="Latvia">Lettonia</string>
+ <string name="Lisbon">Lisbona</string>
+ <string name="Ljubljana">Lubiana</string>
+ <string name="London">Londra</string>
+ <string name="Los Angeles, CA">Los Angeles, CA</string>
+ <string name="Louisville, KY">Louisville, KY</string>
+ <string name="Luxembourg">Lussemburgo</string>
+ <string name="Madrid">Madrid</string>
+ <string name="Malmö">Malmö</string>
+ <string name="Manchester">Manchester</string>
+ <string name="Marseille">Marsiglia</string>
+ <string name="McAllen, TX">McAllen, TX</string>
+ <string name="Melbourne">Melbourne</string>
+ <string name="Mexico">Messico</string>
+ <string name="Miami, FL">Miami, FL</string>
+ <string name="Milan">Milano</string>
+ <string name="Milwaukee, WI">Milwaukee, WI</string>
+ <string name="Minneapolis/St. Paul Apt, MN">Minneapolis/St. Paul Apt, MN</string>
+ <string name="Moldova">Moldavia</string>
+ <string name="Montreal">Montréal</string>
+ <string name="Netherlands">Paesi Bassi</string>
+ <string name="New York, NY">New York, NY</string>
+ <string name="New Zealand">Nuova Zelanda</string>
+ <string name="Nis">Nis</string>
+ <string name="North Macedonia">Macedonia del Nord</string>
+ <string name="Norway">Norvegia</string>
+ <string name="Oklahoma City, OK">Oklahoma City, OK</string>
+ <string name="Osaka">Osaka</string>
+ <string name="Oslo">Oslo</string>
+ <string name="Palermo">Palermo</string>
+ <string name="Paris">Parigi</string>
+ <string name="Perth">Perth</string>
+ <string name="Philadelphia, PA">Filadelfia, PA</string>
+ <string name="Phoenix, AZ">Phoenix, AZ</string>
+ <string name="Piscataway, NJ">Piscataway, NJ</string>
+ <string name="Poland">Polonia</string>
+ <string name="Portland, OR">Portland, OR</string>
+ <string name="Portugal">Portogallo</string>
+ <string name="Prague">Praga</string>
+ <string name="Pune">Pune</string>
+ <string name="Queretaro">Santiago de Querétaro</string>
+ <string name="Raleigh, NC">Raleigh, NC</string>
+ <string name="Richmond, VA">Richmond, VA</string>
+ <string name="Riga">Riga</string>
+ <string name="Romania">Romania</string>
+ <string name="Rome">Roma</string>
+ <string name="Salt Lake City, UT">Salt Lake City, UT</string>
+ <string name="San Francisco, CA">San Francisco, CA</string>
+ <string name="San Jose, CA">San Jose, CA</string>
+ <string name="Santiago">Santiago</string>
+ <string name="Sao Paulo">San Paolo</string>
+ <string name="Seattle, WA">Seattle, WA</string>
+ <string name="Secaucus, NJ">Secaucus, NJ</string>
+ <string name="Serbia">Serbia</string>
+ <string name="Singapore">Singapore</string>
+ <string name="Sioux Falls, SD">Sioux Falls, SD</string>
+ <string name="Skopje">Skopje</string>
+ <string name="Slovakia">Slovakia</string>
+ <string name="Slovenia">Slovenia</string>
+ <string name="Sofia">Sofia</string>
+ <string name="South Africa">Sudafrica</string>
+ <string name="Spain">Spagna</string>
+ <string name="St. Louis, MO">Saint Louis, MO</string>
+ <string name="Stamford, CT">Stamford, CT</string>
+ <string name="Stavanger">Stavanger</string>
+ <string name="Stockholm">Stoccolma</string>
+ <string name="Sweden">Svezia</string>
+ <string name="Switzerland">Svizzera</string>
+ <string name="Sydney">Sydney</string>
+ <string name="Tallinn">Tallinn</string>
+ <string name="Tel Aviv">Tel Aviv</string>
+ <string name="Thailand">Thailandia</string>
+ <string name="Tirana">Tirana</string>
+ <string name="Tokyo">Tokyo</string>
+ <string name="Toronto">Toronto</string>
+ <string name="UK">Regno Unito</string>
+ <string name="USA">Stati Uniti d\'America</string>
+ <string name="Ukraine">Ucraina</string>
+ <string name="United Arab Emirates">Emirati Arabi Uniti</string>
+ <string name="Valencia">Valencia</string>
+ <string name="Vancouver">Vancouver</string>
+ <string name="Vienna">Vienna</string>
+ <string name="Warsaw">Varsavia</string>
+ <string name="Washington DC">Washington DC</string>
+ <string name="Wien">Vienna</string>
+ <string name="Zagreb">Zagabria</string>
+ <string name="Zurich">Zurigo</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-ja/relay_locations.xml b/android/lib/resource/src/main/res/xml-ja/relay_locations.xml
new file mode 100644
index 0000000000..b68b5be687
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-ja/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">アデレード</string>
+ <string name="Albania">アルバニア</string>
+ <string name="Amsterdam">アムステルダム</string>
+ <string name="Ashburn, VA">アッシュバーン、VA</string>
+ <string name="Athens">アテネ</string>
+ <string name="Atlanta, GA">アトランタ、GA</string>
+ <string name="Auckland">オークランド</string>
+ <string name="Australia">オーストラリア</string>
+ <string name="Austria">オーストリア</string>
+ <string name="Bangkok">バンコク</string>
+ <string name="Barcelona">バルセロナ</string>
+ <string name="Belgium">ベルギー</string>
+ <string name="Belgrade">ベオグラード</string>
+ <string name="Berlin">ベルリン</string>
+ <string name="Bogota">ボゴタ</string>
+ <string name="Bordeaux">ボルドー</string>
+ <string name="Boston, MA">ボストン、MA</string>
+ <string name="Bratislava">ブラチスラバ</string>
+ <string name="Brazil">ブラジル</string>
+ <string name="Brisbane">ブリスベン</string>
+ <string name="Brussels">ブリュッセル</string>
+ <string name="Bucharest">ブカレスト</string>
+ <string name="Budapest">ブダペスト</string>
+ <string name="Bulgaria">ブルガリア</string>
+ <string name="Calgary">カルガリー</string>
+ <string name="Canada">カナダ</string>
+ <string name="Canberra">キャンベラ</string>
+ <string name="Charlotte, NC">シャーロット、NC</string>
+ <string name="Chicago, IL">シカゴ、IL</string>
+ <string name="Chile">チリ</string>
+ <string name="Chisinau">キシナウ</string>
+ <string name="Cleveland, OH">クリーブランド、OH</string>
+ <string name="Colombia">コロンビア</string>
+ <string name="Copenhagen">コペンハーゲン</string>
+ <string name="Croatia">クロアチア</string>
+ <string name="Czech Republic">チェコ</string>
+ <string name="Dallas, TX">ダラス、TX</string>
+ <string name="Denmark">デンマーク</string>
+ <string name="Denver, CO">デンバー、CO</string>
+ <string name="Detroit, MI">デトロイト、MI</string>
+ <string name="Dubai">ドバイ</string>
+ <string name="Dublin">ダブリン</string>
+ <string name="Dusseldorf">デュッセルドルフ</string>
+ <string name="Estonia">エストニア</string>
+ <string name="Finland">フィンランド</string>
+ <string name="France">フランス</string>
+ <string name="Frankfurt">フランクフルト</string>
+ <string name="Germany">ドイツ</string>
+ <string name="Glasgow">グラスゴー</string>
+ <string name="Gothenburg">ヨーテボリ</string>
+ <string name="Greece">ギリシャ</string>
+ <string name="Helsingborg">ヘルシンボリ</string>
+ <string name="Helsinki">ヘルシンキ</string>
+ <string name="Hong Kong">香港</string>
+ <string name="Honolulu, HI">ホノルル、HI</string>
+ <string name="Houston, TX">ヒューストン、TX</string>
+ <string name="Hungary">ハンガリー</string>
+ <string name="India">インド</string>
+ <string name="Indonesia">インドネシア</string>
+ <string name="Ireland">アイルランド</string>
+ <string name="Israel">イスラエル</string>
+ <string name="Italy">イタリア</string>
+ <string name="Jackson, MS">ジャクソン、MS</string>
+ <string name="Jakarta">ジャカルタ</string>
+ <string name="Japan">日本</string>
+ <string name="Johannesburg">ヨハネスブルグ</string>
+ <string name="Kiev">キエフ</string>
+ <string name="Kyiv">キエフ</string>
+ <string name="Latvia">ラトビア</string>
+ <string name="Lisbon">リスボン</string>
+ <string name="Ljubljana">リュブリャナ</string>
+ <string name="London">ロンドン</string>
+ <string name="Los Angeles, CA">ロサンゼルス、CA</string>
+ <string name="Louisville, KY">ルイビル、KY</string>
+ <string name="Luxembourg">ルクセンブルク</string>
+ <string name="Madrid">マドリード</string>
+ <string name="Malmö">マルメ</string>
+ <string name="Manchester">マンチェスター</string>
+ <string name="Marseille">マルセイユ</string>
+ <string name="McAllen, TX">マッカレン、TX</string>
+ <string name="Melbourne">メルボルン</string>
+ <string name="Mexico">メキシコ</string>
+ <string name="Miami, FL">マイアミ、FL</string>
+ <string name="Milan">ミラノ</string>
+ <string name="Milwaukee, WI">ミルウォーキー、WI</string>
+ <string name="Minneapolis/St. Paul Apt, MN">ミネアポリス/セントポール国際空港、MN</string>
+ <string name="Moldova">モルドバ</string>
+ <string name="Montreal">モントリオール</string>
+ <string name="Netherlands">オランダ</string>
+ <string name="New York, NY">ニューヨーク、NY</string>
+ <string name="New Zealand">ニュージーランド</string>
+ <string name="Nis">ニシュ</string>
+ <string name="North Macedonia">北マケドニア</string>
+ <string name="Norway">ノルウェー</string>
+ <string name="Oklahoma City, OK">オクラホマシティ、OK</string>
+ <string name="Osaka">大阪</string>
+ <string name="Oslo">オスロ</string>
+ <string name="Palermo">パレルモ</string>
+ <string name="Paris">パリ</string>
+ <string name="Perth">パース</string>
+ <string name="Philadelphia, PA">フィラデルフィア、PA</string>
+ <string name="Phoenix, AZ">フェニックス、AZ</string>
+ <string name="Piscataway, NJ">ピスカタウェイ、NJ</string>
+ <string name="Poland">ポーランド</string>
+ <string name="Portland, OR">ポートランド、OR</string>
+ <string name="Portugal">ポルトガル</string>
+ <string name="Prague">プラハ</string>
+ <string name="Pune">プネー</string>
+ <string name="Queretaro">ケレタロ</string>
+ <string name="Raleigh, NC">ローリー、NC</string>
+ <string name="Richmond, VA">リッチモンド、VA</string>
+ <string name="Riga">リガ</string>
+ <string name="Romania">ルーマニア</string>
+ <string name="Rome">ローマ</string>
+ <string name="Salt Lake City, UT">ソルトレイクシティ、UT</string>
+ <string name="San Francisco, CA">サンフランシスコ、CA</string>
+ <string name="San Jose, CA">サンノゼ、CA</string>
+ <string name="Santiago">サンチャゴ</string>
+ <string name="Sao Paulo">サンパウロ</string>
+ <string name="Seattle, WA">シアトル、WA</string>
+ <string name="Secaucus, NJ">セコーカス、NJ</string>
+ <string name="Serbia">セルビア</string>
+ <string name="Singapore">シンガポール</string>
+ <string name="Sioux Falls, SD">スーフォールズ、SD</string>
+ <string name="Skopje">スコピエ</string>
+ <string name="Slovakia">スロバキア</string>
+ <string name="Slovenia">スロベニア</string>
+ <string name="Sofia">ソフィア</string>
+ <string name="South Africa">南アフリカ</string>
+ <string name="Spain">スペイン</string>
+ <string name="St. Louis, MO">セントルイス、MO</string>
+ <string name="Stamford, CT">スタンフォード、CT</string>
+ <string name="Stavanger">スタヴァンゲル</string>
+ <string name="Stockholm">ストックホルム</string>
+ <string name="Sweden">スウェーデン</string>
+ <string name="Switzerland">スイス</string>
+ <string name="Sydney">シドニー</string>
+ <string name="Tallinn">タリン</string>
+ <string name="Tel Aviv">テルアビブ</string>
+ <string name="Thailand">タイ</string>
+ <string name="Tirana">ティラナ</string>
+ <string name="Tokyo">東京</string>
+ <string name="Toronto">トロント</string>
+ <string name="UK">イギリス</string>
+ <string name="USA">アメリカ合衆国</string>
+ <string name="Ukraine">ウクライナ</string>
+ <string name="United Arab Emirates">アラブ首長国連邦</string>
+ <string name="Valencia">バレンシア</string>
+ <string name="Vancouver">バンクーバー</string>
+ <string name="Vienna">ウィーン</string>
+ <string name="Warsaw">ワルシャワ</string>
+ <string name="Washington DC">ワシントン DC</string>
+ <string name="Wien">ウィーン</string>
+ <string name="Zagreb">ザグレブ</string>
+ <string name="Zurich">チューリッヒ</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-ko/relay_locations.xml b/android/lib/resource/src/main/res/xml-ko/relay_locations.xml
new file mode 100644
index 0000000000..3d807440a1
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-ko/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">애들레이드</string>
+ <string name="Albania">알바니아</string>
+ <string name="Amsterdam">암스테르담</string>
+ <string name="Ashburn, VA">애쉬번, 버지니아 주</string>
+ <string name="Athens">아테네</string>
+ <string name="Atlanta, GA">애틀랜타, GA</string>
+ <string name="Auckland">오클랜드</string>
+ <string name="Australia">오스트레일리아</string>
+ <string name="Austria">오스트리아</string>
+ <string name="Bangkok">방콕</string>
+ <string name="Barcelona">바르셀로나</string>
+ <string name="Belgium">벨기에</string>
+ <string name="Belgrade">베오그라드</string>
+ <string name="Berlin">베를린</string>
+ <string name="Bogota">보고타</string>
+ <string name="Bordeaux">보르도</string>
+ <string name="Boston, MA">보스톤, MA</string>
+ <string name="Bratislava">브라티슬라바</string>
+ <string name="Brazil">브라질</string>
+ <string name="Brisbane">브리즈번</string>
+ <string name="Brussels">브뤼셀</string>
+ <string name="Bucharest">부쿠레슈티</string>
+ <string name="Budapest">부다페스트</string>
+ <string name="Bulgaria">불가리아</string>
+ <string name="Calgary">캘거리</string>
+ <string name="Canada">캐나다</string>
+ <string name="Canberra">캔버라</string>
+ <string name="Charlotte, NC">샬롯, NC</string>
+ <string name="Chicago, IL">시카고, IL</string>
+ <string name="Chile">칠레</string>
+ <string name="Chisinau">키시나우</string>
+ <string name="Cleveland, OH">클리블랜드, OH</string>
+ <string name="Colombia">콜롬비아</string>
+ <string name="Copenhagen">코펜하겐</string>
+ <string name="Croatia">크로아티아</string>
+ <string name="Czech Republic">체코</string>
+ <string name="Dallas, TX">댈러스, TX</string>
+ <string name="Denmark">덴마크</string>
+ <string name="Denver, CO">덴버, CO</string>
+ <string name="Detroit, MI">미시간주 디트로이트</string>
+ <string name="Dubai">두바이</string>
+ <string name="Dublin">더블린</string>
+ <string name="Dusseldorf">뒤셀도르프</string>
+ <string name="Estonia">에스토니아</string>
+ <string name="Finland">핀란드</string>
+ <string name="France">프랑스</string>
+ <string name="Frankfurt">프랑크푸르트</string>
+ <string name="Germany">독일</string>
+ <string name="Glasgow">글래스고</string>
+ <string name="Gothenburg">예테보리</string>
+ <string name="Greece">그리스</string>
+ <string name="Helsingborg">헬싱보리</string>
+ <string name="Helsinki">헬싱키</string>
+ <string name="Hong Kong">홍콩</string>
+ <string name="Honolulu, HI">호놀룰루, HI</string>
+ <string name="Houston, TX">휴스턴, 텍사스</string>
+ <string name="Hungary">헝가리</string>
+ <string name="India">인도</string>
+ <string name="Indonesia">인도네시아</string>
+ <string name="Ireland">아일랜드</string>
+ <string name="Israel">이스라엘</string>
+ <string name="Italy">이탈리아</string>
+ <string name="Jackson, MS">잭슨, MS</string>
+ <string name="Jakarta">자카르타</string>
+ <string name="Japan">일본</string>
+ <string name="Johannesburg">요하네스버그</string>
+ <string name="Kiev">키예프</string>
+ <string name="Kyiv">키예프</string>
+ <string name="Latvia">라트비아</string>
+ <string name="Lisbon">리스본</string>
+ <string name="Ljubljana">류블랴나</string>
+ <string name="London">런던</string>
+ <string name="Los Angeles, CA">로스앤젤레스, CA</string>
+ <string name="Louisville, KY">루이빌, KY</string>
+ <string name="Luxembourg">룩셈부르크</string>
+ <string name="Madrid">마드리드</string>
+ <string name="Malmö">말뫼</string>
+ <string name="Manchester">맨체스터</string>
+ <string name="Marseille">마르세이유</string>
+ <string name="McAllen, TX">맥앨런, 텍사스</string>
+ <string name="Melbourne">멜버른</string>
+ <string name="Mexico">멕시코</string>
+ <string name="Miami, FL">마이애미, FL</string>
+ <string name="Milan">밀라노</string>
+ <string name="Milwaukee, WI">밀워키, WI</string>
+ <string name="Minneapolis/St. Paul Apt, MN">미니애폴리스/세인트 폴 공항, MN</string>
+ <string name="Moldova">몰도바</string>
+ <string name="Montreal">몬트리올</string>
+ <string name="Netherlands">네덜란드</string>
+ <string name="New York, NY">뉴욕, NY</string>
+ <string name="New Zealand">뉴질랜드</string>
+ <string name="Nis">니시</string>
+ <string name="North Macedonia">북마케도니아</string>
+ <string name="Norway">노르웨이</string>
+ <string name="Oklahoma City, OK">오클라호마 시티, OK</string>
+ <string name="Osaka">오사카</string>
+ <string name="Oslo">오슬로</string>
+ <string name="Palermo">팔레르모</string>
+ <string name="Paris">파리</string>
+ <string name="Perth">퍼스</string>
+ <string name="Philadelphia, PA">필라델피아, PA</string>
+ <string name="Phoenix, AZ">피닉스, AZ</string>
+ <string name="Piscataway, NJ">피스카타웨이, NJ</string>
+ <string name="Poland">폴란드</string>
+ <string name="Portland, OR">포틀랜드, OR</string>
+ <string name="Portugal">포르투갈</string>
+ <string name="Prague">프라하</string>
+ <string name="Pune">푸네</string>
+ <string name="Queretaro">케레타로</string>
+ <string name="Raleigh, NC">노스캐롤라이나, 롤리</string>
+ <string name="Richmond, VA">리치몬드, VA</string>
+ <string name="Riga">리가</string>
+ <string name="Romania">루마니아</string>
+ <string name="Rome">로마</string>
+ <string name="Salt Lake City, UT">솔트레이크시티, UT</string>
+ <string name="San Francisco, CA">샌프란시스코, CA</string>
+ <string name="San Jose, CA">산호세, CA</string>
+ <string name="Santiago">산티아고</string>
+ <string name="Sao Paulo">상파울루</string>
+ <string name="Seattle, WA">시애틀, WA</string>
+ <string name="Secaucus, NJ">세코커스, NJ</string>
+ <string name="Serbia">세르비아</string>
+ <string name="Singapore">싱가포르</string>
+ <string name="Sioux Falls, SD">수 폴스, SD</string>
+ <string name="Skopje">스코페</string>
+ <string name="Slovakia">슬로바키아</string>
+ <string name="Slovenia">슬로베니아</string>
+ <string name="Sofia">소피아</string>
+ <string name="South Africa">남아프리카 공화국</string>
+ <string name="Spain">스페인</string>
+ <string name="St. Louis, MO">세인트루이스, MO</string>
+ <string name="Stamford, CT">스탬포드, CT</string>
+ <string name="Stavanger">스타방에르</string>
+ <string name="Stockholm">스톡홀름</string>
+ <string name="Sweden">스웨덴</string>
+ <string name="Switzerland">스위스</string>
+ <string name="Sydney">시드니</string>
+ <string name="Tallinn">탈린</string>
+ <string name="Tel Aviv">텔아비브</string>
+ <string name="Thailand">태국</string>
+ <string name="Tirana">티라나</string>
+ <string name="Tokyo">도쿄</string>
+ <string name="Toronto">토론토</string>
+ <string name="UK">영국</string>
+ <string name="USA">미국</string>
+ <string name="Ukraine">우크라이나</string>
+ <string name="United Arab Emirates">아랍에미리트</string>
+ <string name="Valencia">발렌시아</string>
+ <string name="Vancouver">밴쿠버</string>
+ <string name="Vienna">비엔나</string>
+ <string name="Warsaw">바르샤바</string>
+ <string name="Washington DC">워싱턴 DC</string>
+ <string name="Wien">빈</string>
+ <string name="Zagreb">자그레브</string>
+ <string name="Zurich">취리히</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-my/relay_locations.xml b/android/lib/resource/src/main/res/xml-my/relay_locations.xml
new file mode 100644
index 0000000000..d93745bdbd
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-my/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">အက်ဒလိတ်</string>
+ <string name="Albania">အယ်လ်ဘေးနီးယား</string>
+ <string name="Amsterdam">အမ်စတာဒမ်</string>
+ <string name="Ashburn, VA">Ashburn, VA</string>
+ <string name="Athens">အေသင်</string>
+ <string name="Atlanta, GA">အတ္တလန်တာ၊ ဂျော်ဂျီယာ</string>
+ <string name="Auckland">အော့ကလန်</string>
+ <string name="Australia">သြစတြေးလျ</string>
+ <string name="Austria">သြစတြီးယား</string>
+ <string name="Bangkok">ဘန်ကောက်</string>
+ <string name="Barcelona">ဘာစီလိုနာ</string>
+ <string name="Belgium">ဘယ်လ်ဂျီယံ</string>
+ <string name="Belgrade">ဘဲလ်ဂရိတ်</string>
+ <string name="Berlin">ဘာလင်</string>
+ <string name="Bogota">ဘိုဂိုတာ</string>
+ <string name="Bordeaux">ဘော်ဒို</string>
+ <string name="Boston, MA">ဘော်စတွန်၊ မက်ဆာချူးဆက်</string>
+ <string name="Bratislava">Bratislava</string>
+ <string name="Brazil">ဘရာဇီး</string>
+ <string name="Brisbane">ဘရစ်စဘိန်း</string>
+ <string name="Brussels">ဘရပ်ဆဲလ်</string>
+ <string name="Bucharest">ဘူခါရက်စ်</string>
+ <string name="Budapest">ဘူဒါပက်</string>
+ <string name="Bulgaria">ဘူလ်ဂေးရီးယား</string>
+ <string name="Calgary">ကယ်ဂယ်ရီ</string>
+ <string name="Canada">ကနေဒါ</string>
+ <string name="Canberra">ကင်ဘာရာ</string>
+ <string name="Charlotte, NC">ရှားလော့၊ မြောက်ကာရိုလိုင်းနား</string>
+ <string name="Chicago, IL">ချီကာဂို၊ အီလီနွိုက်</string>
+ <string name="Chile">ချီလီ</string>
+ <string name="Chisinau">ခိရှီနို</string>
+ <string name="Cleveland, OH">ကလိဗ်လန့် ၊ အိုဟိုင်းယိုး</string>
+ <string name="Colombia">ကိုလံဘီယာ</string>
+ <string name="Copenhagen">ကိုပင်ဟေဂင်</string>
+ <string name="Croatia">ခရိုအေးရှား</string>
+ <string name="Czech Republic">ချက်သမ္မတနိုင်ငံ</string>
+ <string name="Dallas, TX">ဒဲလ်လက်စ်၊ တက္ကဆက်</string>
+ <string name="Denmark">ဒိန်းမတ်</string>
+ <string name="Denver, CO">ဒန်ဗာ၊ ကော်လိုရာဒို</string>
+ <string name="Detroit, MI">ဒီထရိုက်၊ MI</string>
+ <string name="Dubai">ဒူဘိုင်း</string>
+ <string name="Dublin">ဒါဘလင်</string>
+ <string name="Dusseldorf">ဒူဆင်ဒေါ့ဖ်</string>
+ <string name="Estonia">အက်စ်တိုးနီးယား</string>
+ <string name="Finland">ဖင်လန်</string>
+ <string name="France">ပြင်သစ်</string>
+ <string name="Frankfurt">ဖရန့်ဖတ်</string>
+ <string name="Germany">ဂျာမနီ</string>
+ <string name="Glasgow">ဂလပ်စဂို</string>
+ <string name="Gothenburg">ဂိုသန်ဘက်</string>
+ <string name="Greece">ဂရိ</string>
+ <string name="Helsingborg">ဟယ်ဆင်းဘော့</string>
+ <string name="Helsinki">ဟယ်လ်စင်ကီ</string>
+ <string name="Hong Kong">ဟောင်ကောင်</string>
+ <string name="Honolulu, HI">ဟိုနိုလူလူ၊ ဟာဝိုင်ယီ</string>
+ <string name="Houston, TX">Houston, TX</string>
+ <string name="Hungary">ဟန်ဂေရီ</string>
+ <string name="India">အိန္ဒိယ</string>
+ <string name="Indonesia">အင်ဒိုနီးရှား</string>
+ <string name="Ireland">အိုင်ယာလန်</string>
+ <string name="Israel">အစ္စရေး</string>
+ <string name="Italy">အီတလီ</string>
+ <string name="Jackson, MS">ဂျက်ဆင်၊ မစ္စစ္စပီ</string>
+ <string name="Jakarta">ဂျာကာတာ</string>
+ <string name="Japan">ဂျပန်</string>
+ <string name="Johannesburg">ဂျိုဟန်နက်စ်ဘတ်</string>
+ <string name="Kiev">ကိယက်ဗ်</string>
+ <string name="Kyiv">ကိယက်ဗ်</string>
+ <string name="Latvia">လတ်ဗီးယား</string>
+ <string name="Lisbon">လစ္စဘွန်း</string>
+ <string name="Ljubljana">လစ်ဘီယာနာ</string>
+ <string name="London">လန်ဒန်</string>
+ <string name="Los Angeles, CA">လော့စ်အိန်ဂျလိစ်၊ ကယ်လီဖိုးနီးယား</string>
+ <string name="Louisville, KY">လူဝီဗေးလ်၊ ကင်တပ်ကီ</string>
+ <string name="Luxembourg">လူဇင်ဘတ်</string>
+ <string name="Madrid">မက်ဒရစ်</string>
+ <string name="Malmö">မယ်မို</string>
+ <string name="Manchester">မန်ချက်စတာ</string>
+ <string name="Marseille">မာဆေး</string>
+ <string name="McAllen, TX">McAllen, TX</string>
+ <string name="Melbourne">မဲလ်ဘုန်း</string>
+ <string name="Mexico">မက္ကဆီကို</string>
+ <string name="Miami, FL">မိုင်ယာမီ၊ ဖလော်ရီဒါ</string>
+ <string name="Milan">မီလန်</string>
+ <string name="Milwaukee, WI">မီဝါကီ၊ ဝစ္စကန်ဆင်</string>
+ <string name="Minneapolis/St. Paul Apt, MN">မင်နီယာပိုလစ်/စိန့်ပေါလ် လေဆိပ်၊ မင်နီဆိုးတား</string>
+ <string name="Moldova">မော်လ်ဒိုဗာ</string>
+ <string name="Montreal">မွန်ထရီရယ်</string>
+ <string name="Netherlands">နယ်သာလန်</string>
+ <string name="New York, NY">နယူးယောက်</string>
+ <string name="New Zealand">နယူးဇီလန်</string>
+ <string name="Nis">နိစ်</string>
+ <string name="North Macedonia">မြောက်မက်ဆီဒိုးနီးယား</string>
+ <string name="Norway">နော်ဝေး</string>
+ <string name="Oklahoma City, OK">အိုကလာဟိုးမားစီးတီး၊ အိုကလာဟိုးမား</string>
+ <string name="Osaka">အိုဆာကာ</string>
+ <string name="Oslo">အော်စလို</string>
+ <string name="Palermo">Palermo</string>
+ <string name="Paris">ပဲရစ်</string>
+ <string name="Perth">ပါ့သ်</string>
+ <string name="Philadelphia, PA">ဖီလဒဲလ်ဖီးယား၊ ပန်ဆဲလ်ဗေးနီးယား</string>
+ <string name="Phoenix, AZ">ဖီးနစ်၊ အရီဇိုးနား</string>
+ <string name="Piscataway, NJ">ပစ်စ်ကာတာဝေး၊ နယူးဂျာစီ</string>
+ <string name="Poland">ပိုလန်</string>
+ <string name="Portland, OR">ပို့တ်လန်၊ အော်ရီဂွန်</string>
+ <string name="Portugal">ပေါ်တူဂီ</string>
+ <string name="Prague">ပရာ့ဂ်</string>
+ <string name="Pune">ပူနာ</string>
+ <string name="Queretaro">ကီရင်တာရို (Queretaro)</string>
+ <string name="Raleigh, NC">ရာလီ၊ မြောက်ကာရိုလိုင်းနား</string>
+ <string name="Richmond, VA">ရစ်ချ်မန်၊ ဗာဂျီးနီးယား</string>
+ <string name="Riga">ရီဂါ</string>
+ <string name="Romania">ရိုမေးနီးယား</string>
+ <string name="Rome">ရောမ</string>
+ <string name="Salt Lake City, UT">ဆော့တ်လိတ်ခ်စီးတီး၊ ယူတာ</string>
+ <string name="San Francisco, CA">ဆန်ဖရန်စစ္စကို၊ ကယ်လီဖိုးနီးယား</string>
+ <string name="San Jose, CA">ဆန်ဟိုဆေး၊ ကယ်လီဖိုးနီးယား</string>
+ <string name="Santiago">ဆန်တီယာဂို</string>
+ <string name="Sao Paulo">ဆောပိုလို</string>
+ <string name="Seattle, WA">ဆီယက်တဲလ်၊ ဝါရှင်တန်</string>
+ <string name="Secaucus, NJ">ဆီကောကတ်စ်၊ နယူးဂျာစီ</string>
+ <string name="Serbia">ဆားဘီးယား</string>
+ <string name="Singapore">စင်ကာပူ</string>
+ <string name="Sioux Falls, SD">ဆူးဖော၊ တောင်ဒါကိုတာ</string>
+ <string name="Skopje">စကော့ပ်ရာ</string>
+ <string name="Slovakia">Slovakia</string>
+ <string name="Slovenia">ဆလိုဗေးနီးယား</string>
+ <string name="Sofia">ဆိုဖီယာ</string>
+ <string name="South Africa">တောင်အာဖရိက</string>
+ <string name="Spain">စပိန်</string>
+ <string name="St. Louis, MO">စိန့်လူးဝစ်၊ မစ်ဆူရီ</string>
+ <string name="Stamford, CT">စတမ်းဖို့၊ ကော်နက်တီကပ်</string>
+ <string name="Stavanger">Stavanger</string>
+ <string name="Stockholm">စတော့ဟုမ်း</string>
+ <string name="Sweden">ဆွီဒင်</string>
+ <string name="Switzerland">ဆွစ်ဇာလန်</string>
+ <string name="Sydney">ဆစ်ဒနီ</string>
+ <string name="Tallinn">တောလ်လင်း</string>
+ <string name="Tel Aviv">တဲလ်အဗစ်</string>
+ <string name="Thailand">ထိုင်း</string>
+ <string name="Tirana">တေရားနား</string>
+ <string name="Tokyo">တိုကျို</string>
+ <string name="Toronto">တိုရွန်တို</string>
+ <string name="UK">UK</string>
+ <string name="USA">USA</string>
+ <string name="Ukraine">ယူကရိန်း</string>
+ <string name="United Arab Emirates">အာရတ်စော်ဘွားများ ပြည်ထောင်စု</string>
+ <string name="Valencia">ဗလန်စီယာ</string>
+ <string name="Vancouver">ဗန်ကူးဗား</string>
+ <string name="Vienna">ဗီယင်နာ</string>
+ <string name="Warsaw">ဝါဆော</string>
+ <string name="Washington DC">ဝါရှင်တန်ဒီစီ</string>
+ <string name="Wien">ဗင်း</string>
+ <string name="Zagreb">ဇက်ဂ်ရက်ဘ်</string>
+ <string name="Zurich">ဇူးရစ်ချ်</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-nb/relay_locations.xml b/android/lib/resource/src/main/res/xml-nb/relay_locations.xml
new file mode 100644
index 0000000000..3a200eebc0
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-nb/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">Adelaide</string>
+ <string name="Albania">Albania</string>
+ <string name="Amsterdam">Amsterdam</string>
+ <string name="Ashburn, VA">Ashburn, VA</string>
+ <string name="Athens">Athen</string>
+ <string name="Atlanta, GA">Atlanta, GA</string>
+ <string name="Auckland">Auckland</string>
+ <string name="Australia">Australia</string>
+ <string name="Austria">Østerrike</string>
+ <string name="Bangkok">Bangkok</string>
+ <string name="Barcelona">Barcelona</string>
+ <string name="Belgium">Belgia</string>
+ <string name="Belgrade">Beograd</string>
+ <string name="Berlin">Berlin</string>
+ <string name="Bogota">Bogotá</string>
+ <string name="Bordeaux">Bordeaux</string>
+ <string name="Boston, MA">Boston, MA</string>
+ <string name="Bratislava">Bratislava</string>
+ <string name="Brazil">Brasil</string>
+ <string name="Brisbane">Brisbane</string>
+ <string name="Brussels">Brussel</string>
+ <string name="Bucharest">București</string>
+ <string name="Budapest">Budapest</string>
+ <string name="Bulgaria">Bulgaria</string>
+ <string name="Calgary">Calgary</string>
+ <string name="Canada">Canada</string>
+ <string name="Canberra">Canberra</string>
+ <string name="Charlotte, NC">Charlotte, NC</string>
+ <string name="Chicago, IL">Chicago, IL</string>
+ <string name="Chile">Chile</string>
+ <string name="Chisinau">Chișinău</string>
+ <string name="Cleveland, OH">Cleveland, OH</string>
+ <string name="Colombia">Colombia</string>
+ <string name="Copenhagen">København</string>
+ <string name="Croatia">Kroatia</string>
+ <string name="Czech Republic">Tsjekkia</string>
+ <string name="Dallas, TX">Dallas, TX</string>
+ <string name="Denmark">Danmark</string>
+ <string name="Denver, CO">Denver, CO</string>
+ <string name="Detroit, MI">Detroit i Michigan</string>
+ <string name="Dubai">Dubai</string>
+ <string name="Dublin">Dublin</string>
+ <string name="Dusseldorf">Düsseldorf</string>
+ <string name="Estonia">Estland</string>
+ <string name="Finland">Finland</string>
+ <string name="France">Frankrike</string>
+ <string name="Frankfurt">Frankfurt</string>
+ <string name="Germany">Tyskland</string>
+ <string name="Glasgow">Glasgow</string>
+ <string name="Gothenburg">Göteborg</string>
+ <string name="Greece">Hellas</string>
+ <string name="Helsingborg">Helsingborg</string>
+ <string name="Helsinki">Helsinki</string>
+ <string name="Hong Kong">Hong Kong</string>
+ <string name="Honolulu, HI">Honolulu, HI</string>
+ <string name="Houston, TX">Houston, TX</string>
+ <string name="Hungary">Ungarn</string>
+ <string name="India">India</string>
+ <string name="Indonesia">Indonesia</string>
+ <string name="Ireland">Irland</string>
+ <string name="Israel">Israel</string>
+ <string name="Italy">Italia</string>
+ <string name="Jackson, MS">Jackson, MS</string>
+ <string name="Jakarta">Jakarta</string>
+ <string name="Japan">Japan</string>
+ <string name="Johannesburg">Johannesburg</string>
+ <string name="Kiev">Kiev</string>
+ <string name="Kyiv">Kyiv</string>
+ <string name="Latvia">Latvia</string>
+ <string name="Lisbon">Lisboa</string>
+ <string name="Ljubljana">Ljubljana</string>
+ <string name="London">London</string>
+ <string name="Los Angeles, CA">Los Angeles, CA</string>
+ <string name="Louisville, KY">Louisville, KY</string>
+ <string name="Luxembourg">Luxembourg</string>
+ <string name="Madrid">Madrid</string>
+ <string name="Malmö">Malmö</string>
+ <string name="Manchester">Manchester</string>
+ <string name="Marseille">Marseille</string>
+ <string name="McAllen, TX">McAllen, TX</string>
+ <string name="Melbourne">Melbourne</string>
+ <string name="Mexico">Mexico</string>
+ <string name="Miami, FL">Miami, FL</string>
+ <string name="Milan">Milano</string>
+ <string name="Milwaukee, WI">Milwaukee, WI</string>
+ <string name="Minneapolis/St. Paul Apt, MN">Minneapolis/St. Paul Apt, MN</string>
+ <string name="Moldova">Moldova</string>
+ <string name="Montreal">Montreal</string>
+ <string name="Netherlands">Nederland</string>
+ <string name="New York, NY">New York, NY</string>
+ <string name="New Zealand">New Zealand</string>
+ <string name="Nis">Niš</string>
+ <string name="North Macedonia">Nord-Makedonia</string>
+ <string name="Norway">Norge</string>
+ <string name="Oklahoma City, OK">Oklahoma City, OK</string>
+ <string name="Osaka">Osaka</string>
+ <string name="Oslo">Oslo</string>
+ <string name="Palermo">Palermo</string>
+ <string name="Paris">Paris</string>
+ <string name="Perth">Perth</string>
+ <string name="Philadelphia, PA">Philadelphia, PA</string>
+ <string name="Phoenix, AZ">Phoenix, AZ</string>
+ <string name="Piscataway, NJ">Piscataway, NJ</string>
+ <string name="Poland">Polen</string>
+ <string name="Portland, OR">Portland, OR</string>
+ <string name="Portugal">Portugal</string>
+ <string name="Prague">Praha</string>
+ <string name="Pune">Pune</string>
+ <string name="Queretaro">Queretaro</string>
+ <string name="Raleigh, NC">Raleigh, NC</string>
+ <string name="Richmond, VA">Richmond, VA</string>
+ <string name="Riga">Riga</string>
+ <string name="Romania">Romania</string>
+ <string name="Rome">Roma</string>
+ <string name="Salt Lake City, UT">Salt Lake City, UT</string>
+ <string name="San Francisco, CA">San Francisco, CA</string>
+ <string name="San Jose, CA">San Jose, CA</string>
+ <string name="Santiago">Santiago</string>
+ <string name="Sao Paulo">Sao Paulo</string>
+ <string name="Seattle, WA">Seattle, WA</string>
+ <string name="Secaucus, NJ">Secaucus, NJ</string>
+ <string name="Serbia">Serbia</string>
+ <string name="Singapore">Singapore</string>
+ <string name="Sioux Falls, SD">Sioux Falls, SD</string>
+ <string name="Skopje">Skopje</string>
+ <string name="Slovakia">Slovakia</string>
+ <string name="Slovenia">Slovenia</string>
+ <string name="Sofia">Sofia</string>
+ <string name="South Africa">Sør-Afrika</string>
+ <string name="Spain">Spania</string>
+ <string name="St. Louis, MO">St. Louis, MO</string>
+ <string name="Stamford, CT">Stamford, CT</string>
+ <string name="Stavanger">Stavanger</string>
+ <string name="Stockholm">Stockholm</string>
+ <string name="Sweden">Sverige</string>
+ <string name="Switzerland">Sveits</string>
+ <string name="Sydney">Sydney</string>
+ <string name="Tallinn">Tallinn</string>
+ <string name="Tel Aviv">Tel Aviv</string>
+ <string name="Thailand">Thailand</string>
+ <string name="Tirana">Tirana</string>
+ <string name="Tokyo">Tokyo</string>
+ <string name="Toronto">Toronto</string>
+ <string name="UK">Storbritannia</string>
+ <string name="USA">USA</string>
+ <string name="Ukraine">Ukraina</string>
+ <string name="United Arab Emirates">De forente arabiske emirater</string>
+ <string name="Valencia">Valencia</string>
+ <string name="Vancouver">Vancouver</string>
+ <string name="Vienna">Wien</string>
+ <string name="Warsaw">Warszawa</string>
+ <string name="Washington DC">Washington DC</string>
+ <string name="Wien">Wien</string>
+ <string name="Zagreb">Zagreb</string>
+ <string name="Zurich">Zürich</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-nl/relay_locations.xml b/android/lib/resource/src/main/res/xml-nl/relay_locations.xml
new file mode 100644
index 0000000000..c15b4c4c5a
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-nl/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">Adelaide</string>
+ <string name="Albania">Albanië</string>
+ <string name="Amsterdam">Amsterdam</string>
+ <string name="Ashburn, VA">Ashburn, VA</string>
+ <string name="Athens">Athene</string>
+ <string name="Atlanta, GA">Atlanta, GA</string>
+ <string name="Auckland">Auckland</string>
+ <string name="Australia">Australië</string>
+ <string name="Austria">Oostenrijk</string>
+ <string name="Bangkok">Bangkok</string>
+ <string name="Barcelona">Barcelona</string>
+ <string name="Belgium">België</string>
+ <string name="Belgrade">Belgrado</string>
+ <string name="Berlin">Berlijn</string>
+ <string name="Bogota">Bogota</string>
+ <string name="Bordeaux">Bordeaux</string>
+ <string name="Boston, MA">Boston, MA</string>
+ <string name="Bratislava">Bratislava</string>
+ <string name="Brazil">Brazilië</string>
+ <string name="Brisbane">Brisbane</string>
+ <string name="Brussels">Brussel</string>
+ <string name="Bucharest">Boekarest</string>
+ <string name="Budapest">Boedapest</string>
+ <string name="Bulgaria">Bulgarije</string>
+ <string name="Calgary">Calgary</string>
+ <string name="Canada">Canada</string>
+ <string name="Canberra">Canberra</string>
+ <string name="Charlotte, NC">Charlotte, NC</string>
+ <string name="Chicago, IL">Chicago, IL</string>
+ <string name="Chile">Chili</string>
+ <string name="Chisinau">Chisinau</string>
+ <string name="Cleveland, OH">Cleveland, OH</string>
+ <string name="Colombia">Colombia</string>
+ <string name="Copenhagen">Kopenhagen</string>
+ <string name="Croatia">Kroatië</string>
+ <string name="Czech Republic">Tsjechië</string>
+ <string name="Dallas, TX">Dallas, TX</string>
+ <string name="Denmark">Denemarken</string>
+ <string name="Denver, CO">Denver, CO</string>
+ <string name="Detroit, MI">Detroit, MI</string>
+ <string name="Dubai">Dubai</string>
+ <string name="Dublin">Dublin</string>
+ <string name="Dusseldorf">Düsseldorf</string>
+ <string name="Estonia">Estland</string>
+ <string name="Finland">Finland</string>
+ <string name="France">Frankrijk</string>
+ <string name="Frankfurt">Frankfurt am Main</string>
+ <string name="Germany">Duitsland</string>
+ <string name="Glasgow">Glasgow</string>
+ <string name="Gothenburg">Göteborg</string>
+ <string name="Greece">Griekenland</string>
+ <string name="Helsingborg">Helsingborg</string>
+ <string name="Helsinki">Helsinki</string>
+ <string name="Hong Kong">Hongkong</string>
+ <string name="Honolulu, HI">Honolulu, HI</string>
+ <string name="Houston, TX">Houston, TX</string>
+ <string name="Hungary">Hongarije</string>
+ <string name="India">India</string>
+ <string name="Indonesia">Indonesië</string>
+ <string name="Ireland">Ierland</string>
+ <string name="Israel">Israël</string>
+ <string name="Italy">Italië</string>
+ <string name="Jackson, MS">Jackson, MS</string>
+ <string name="Jakarta">Jakarta</string>
+ <string name="Japan">Japan</string>
+ <string name="Johannesburg">Johannesburg</string>
+ <string name="Kiev">Kiev</string>
+ <string name="Kyiv">Kiev</string>
+ <string name="Latvia">Letland</string>
+ <string name="Lisbon">Lissabon</string>
+ <string name="Ljubljana">Ljubljana</string>
+ <string name="London">Londen</string>
+ <string name="Los Angeles, CA">Los Angeles, CA</string>
+ <string name="Louisville, KY">Louisville, KY</string>
+ <string name="Luxembourg">Luxemburg</string>
+ <string name="Madrid">Madrid</string>
+ <string name="Malmö">Malmö</string>
+ <string name="Manchester">Manchester</string>
+ <string name="Marseille">Marseille</string>
+ <string name="McAllen, TX">McAllen, TX</string>
+ <string name="Melbourne">Melbourne</string>
+ <string name="Mexico">Mexico</string>
+ <string name="Miami, FL">Miami, FL</string>
+ <string name="Milan">Milaan</string>
+ <string name="Milwaukee, WI">Milwaukee, WI</string>
+ <string name="Minneapolis/St. Paul Apt, MN">Minneapolis/St. Paul Apt, MN</string>
+ <string name="Moldova">Moldavië</string>
+ <string name="Montreal">Montreal</string>
+ <string name="Netherlands">Nederland</string>
+ <string name="New York, NY">New York, NY</string>
+ <string name="New Zealand">Nieuw-Zeeland</string>
+ <string name="Nis">Niš</string>
+ <string name="North Macedonia">Noord-Macedonië</string>
+ <string name="Norway">Noorwegen</string>
+ <string name="Oklahoma City, OK">Oklahoma City, OK</string>
+ <string name="Osaka">Osaka</string>
+ <string name="Oslo">Oslo</string>
+ <string name="Palermo">Palermo</string>
+ <string name="Paris">Parijs</string>
+ <string name="Perth">Perth</string>
+ <string name="Philadelphia, PA">Philadelphia, PA</string>
+ <string name="Phoenix, AZ">Phoenix, AZ</string>
+ <string name="Piscataway, NJ">Piscataway, NJ</string>
+ <string name="Poland">Polen</string>
+ <string name="Portland, OR">Portland, OR</string>
+ <string name="Portugal">Portugal</string>
+ <string name="Prague">Praag</string>
+ <string name="Pune">Pune</string>
+ <string name="Queretaro">Querétaro</string>
+ <string name="Raleigh, NC">Raleigh, NC</string>
+ <string name="Richmond, VA">Richmond, VA</string>
+ <string name="Riga">Riga</string>
+ <string name="Romania">Roemenië</string>
+ <string name="Rome">Rome</string>
+ <string name="Salt Lake City, UT">Salt Lake City, UT</string>
+ <string name="San Francisco, CA">San Francisco, CA</string>
+ <string name="San Jose, CA">San Jose, CA</string>
+ <string name="Santiago">Santiago</string>
+ <string name="Sao Paulo">São Paulo</string>
+ <string name="Seattle, WA">Seattle, WA</string>
+ <string name="Secaucus, NJ">Secaucus, NJ</string>
+ <string name="Serbia">Servië</string>
+ <string name="Singapore">Singapore</string>
+ <string name="Sioux Falls, SD">Sioux Falls, SD</string>
+ <string name="Skopje">Skopje</string>
+ <string name="Slovakia">Slowakije</string>
+ <string name="Slovenia">Slovenië</string>
+ <string name="Sofia">Sofia</string>
+ <string name="South Africa">Zuid-Afrika</string>
+ <string name="Spain">Spanje</string>
+ <string name="St. Louis, MO">St. Louis, MO</string>
+ <string name="Stamford, CT">Stamford, CT</string>
+ <string name="Stavanger">Stavanger</string>
+ <string name="Stockholm">Stockholm</string>
+ <string name="Sweden">Zweden</string>
+ <string name="Switzerland">Zwitserland</string>
+ <string name="Sydney">Sydney</string>
+ <string name="Tallinn">Tallinn</string>
+ <string name="Tel Aviv">Tel Aviv</string>
+ <string name="Thailand">Thailand</string>
+ <string name="Tirana">Tirana</string>
+ <string name="Tokyo">Tokio</string>
+ <string name="Toronto">Toronto</string>
+ <string name="UK">Verenigd Koninkrijk</string>
+ <string name="USA">Verenigde Staten van Amerika</string>
+ <string name="Ukraine">Oekraïne</string>
+ <string name="United Arab Emirates">Verenigde Arabische Emiraten</string>
+ <string name="Valencia">Valencia</string>
+ <string name="Vancouver">Vancouver</string>
+ <string name="Vienna">Wenen</string>
+ <string name="Warsaw">Warschau</string>
+ <string name="Washington DC">Washington DC</string>
+ <string name="Wien">Wenen</string>
+ <string name="Zagreb">Zagreb</string>
+ <string name="Zurich">Zürich</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-pl/relay_locations.xml b/android/lib/resource/src/main/res/xml-pl/relay_locations.xml
new file mode 100644
index 0000000000..3d6a23f9d9
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-pl/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">Adelajda</string>
+ <string name="Albania">Albania</string>
+ <string name="Amsterdam">Amsterdam</string>
+ <string name="Ashburn, VA">Ashburn, VA</string>
+ <string name="Athens">Ateny</string>
+ <string name="Atlanta, GA">Atlanta, GA</string>
+ <string name="Auckland">Auckland</string>
+ <string name="Australia">Australia</string>
+ <string name="Austria">Austria</string>
+ <string name="Bangkok">Bangkok</string>
+ <string name="Barcelona">Barcelona</string>
+ <string name="Belgium">Belgia</string>
+ <string name="Belgrade">Belgrad</string>
+ <string name="Berlin">Berlin</string>
+ <string name="Bogota">Bogota</string>
+ <string name="Bordeaux">Bordeaux</string>
+ <string name="Boston, MA">Boston, MA</string>
+ <string name="Bratislava">Bratysława</string>
+ <string name="Brazil">Brazylia</string>
+ <string name="Brisbane">Brisbane</string>
+ <string name="Brussels">Bruksela</string>
+ <string name="Bucharest">Bukareszt</string>
+ <string name="Budapest">Budapeszt</string>
+ <string name="Bulgaria">Bułgaria</string>
+ <string name="Calgary">Calgary</string>
+ <string name="Canada">Kanada</string>
+ <string name="Canberra">Canberra</string>
+ <string name="Charlotte, NC">Charlotte, NC</string>
+ <string name="Chicago, IL">Chicago, IL</string>
+ <string name="Chile">Chile</string>
+ <string name="Chisinau">Kiszyniów</string>
+ <string name="Cleveland, OH">Cleveland, OH</string>
+ <string name="Colombia">Kolumbia</string>
+ <string name="Copenhagen">Kopenhaga</string>
+ <string name="Croatia">Chorwacja</string>
+ <string name="Czech Republic">Czechy</string>
+ <string name="Dallas, TX">Dallas, TX</string>
+ <string name="Denmark">Dania</string>
+ <string name="Denver, CO">Denver, CO</string>
+ <string name="Detroit, MI">Detroit, MI</string>
+ <string name="Dubai">Dubaj</string>
+ <string name="Dublin">Dublin</string>
+ <string name="Dusseldorf">Düsseldorf</string>
+ <string name="Estonia">Estonia</string>
+ <string name="Finland">Finlandia</string>
+ <string name="France">Francja</string>
+ <string name="Frankfurt">Frankfurt</string>
+ <string name="Germany">Niemcy</string>
+ <string name="Glasgow">Glasgow</string>
+ <string name="Gothenburg">Göteborg</string>
+ <string name="Greece">Grecja</string>
+ <string name="Helsingborg">Helsingborg</string>
+ <string name="Helsinki">Helsinki</string>
+ <string name="Hong Kong">Hongkong</string>
+ <string name="Honolulu, HI">Honolulu, HI</string>
+ <string name="Houston, TX">Houston, TX</string>
+ <string name="Hungary">Węgry</string>
+ <string name="India">Indie</string>
+ <string name="Indonesia">Indonezja</string>
+ <string name="Ireland">Irlandia</string>
+ <string name="Israel">Izrael</string>
+ <string name="Italy">Włochy</string>
+ <string name="Jackson, MS">Jackson, MS</string>
+ <string name="Jakarta">Dżakarta</string>
+ <string name="Japan">Japonia</string>
+ <string name="Johannesburg">Johannesburg</string>
+ <string name="Kiev">Kijów</string>
+ <string name="Kyiv">Kijów</string>
+ <string name="Latvia">Łotwa</string>
+ <string name="Lisbon">Lizbona</string>
+ <string name="Ljubljana">Lublana</string>
+ <string name="London">Londyn</string>
+ <string name="Los Angeles, CA">Los Angeles, CA</string>
+ <string name="Louisville, KY">Louisville, KY</string>
+ <string name="Luxembourg">Luksemburg</string>
+ <string name="Madrid">Madryt</string>
+ <string name="Malmö">Malmö</string>
+ <string name="Manchester">Manchester</string>
+ <string name="Marseille">Marsylia</string>
+ <string name="McAllen, TX">McAllen, TX</string>
+ <string name="Melbourne">Melbourne</string>
+ <string name="Mexico">Meksyk</string>
+ <string name="Miami, FL">Miami, FL</string>
+ <string name="Milan">Mediolan</string>
+ <string name="Milwaukee, WI">Milwaukee, WI</string>
+ <string name="Minneapolis/St. Paul Apt, MN">Minneapolis/St. Paul Apt, MN</string>
+ <string name="Moldova">Mołdawia</string>
+ <string name="Montreal">Montreal</string>
+ <string name="Netherlands">Holandia</string>
+ <string name="New York, NY">Nowy Jork, NY</string>
+ <string name="New Zealand">Nowa Zelandia</string>
+ <string name="Nis">Nisz</string>
+ <string name="North Macedonia">Macedonia Północna</string>
+ <string name="Norway">Norwegia</string>
+ <string name="Oklahoma City, OK">Oklahoma City, OK</string>
+ <string name="Osaka">Osaka</string>
+ <string name="Oslo">Oslo</string>
+ <string name="Palermo">Palermo</string>
+ <string name="Paris">Paryż</string>
+ <string name="Perth">Perth</string>
+ <string name="Philadelphia, PA">Filadelfia, PA</string>
+ <string name="Phoenix, AZ">Phoenix, AZ</string>
+ <string name="Piscataway, NJ">Piscataway, NJ</string>
+ <string name="Poland">Polska</string>
+ <string name="Portland, OR">Portland, OR</string>
+ <string name="Portugal">Portugalia</string>
+ <string name="Prague">Praga</string>
+ <string name="Pune">Pune</string>
+ <string name="Queretaro">Querétaro</string>
+ <string name="Raleigh, NC">Raleigh, NC</string>
+ <string name="Richmond, VA">Richmond, VA</string>
+ <string name="Riga">Ryga</string>
+ <string name="Romania">Rumunia</string>
+ <string name="Rome">Rzym</string>
+ <string name="Salt Lake City, UT">Salt Lake City, UT</string>
+ <string name="San Francisco, CA">San Francisco, CA</string>
+ <string name="San Jose, CA">San Jose, CA</string>
+ <string name="Santiago">Santiago</string>
+ <string name="Sao Paulo">São Paulo</string>
+ <string name="Seattle, WA">Seattle, WA</string>
+ <string name="Secaucus, NJ">Secaucus, NJ</string>
+ <string name="Serbia">Serbia</string>
+ <string name="Singapore">Singapur</string>
+ <string name="Sioux Falls, SD">Sioux Falls, SD</string>
+ <string name="Skopje">Skopje</string>
+ <string name="Slovakia">Słowacja</string>
+ <string name="Slovenia">Słowenia</string>
+ <string name="Sofia">Sofia</string>
+ <string name="South Africa">Republika Południowej Afryki</string>
+ <string name="Spain">Hiszpania</string>
+ <string name="St. Louis, MO">St. Louis, MO</string>
+ <string name="Stamford, CT">Stamford, CT</string>
+ <string name="Stavanger">Stavanger</string>
+ <string name="Stockholm">Sztokholm</string>
+ <string name="Sweden">Szwecja</string>
+ <string name="Switzerland">Szwajcaria</string>
+ <string name="Sydney">Sydney</string>
+ <string name="Tallinn">Tallin</string>
+ <string name="Tel Aviv">Tel Awiw</string>
+ <string name="Thailand">Tajlandia</string>
+ <string name="Tirana">Tirana</string>
+ <string name="Tokyo">Tokio</string>
+ <string name="Toronto">Toronto</string>
+ <string name="UK">Wielka Brytania</string>
+ <string name="USA">Stany Zjednoczone</string>
+ <string name="Ukraine">Ukraina</string>
+ <string name="United Arab Emirates">Zjednoczone Emiraty Arabskie</string>
+ <string name="Valencia">Walencja</string>
+ <string name="Vancouver">Vancouver</string>
+ <string name="Vienna">Wiedeń</string>
+ <string name="Warsaw">Warszawa</string>
+ <string name="Washington DC">Waszyngton, DC</string>
+ <string name="Wien">Wiedeń</string>
+ <string name="Zagreb">Zagrzeb</string>
+ <string name="Zurich">Zurych</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-pt/relay_locations.xml b/android/lib/resource/src/main/res/xml-pt/relay_locations.xml
new file mode 100644
index 0000000000..c1576f85a8
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-pt/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">Adelaide</string>
+ <string name="Albania">Albânia</string>
+ <string name="Amsterdam">Amesterdão</string>
+ <string name="Ashburn, VA">Ashburn, VA</string>
+ <string name="Athens">Atenas</string>
+ <string name="Atlanta, GA">Atlanta, GA</string>
+ <string name="Auckland">Auckland</string>
+ <string name="Australia">Austrália</string>
+ <string name="Austria">Áustria</string>
+ <string name="Bangkok">Banguecoque</string>
+ <string name="Barcelona">Barcelona</string>
+ <string name="Belgium">Bélgica</string>
+ <string name="Belgrade">Belgrado</string>
+ <string name="Berlin">Berlim</string>
+ <string name="Bogota">Bogotá</string>
+ <string name="Bordeaux">Bordéus</string>
+ <string name="Boston, MA">Boston, MA</string>
+ <string name="Bratislava">Bratislava</string>
+ <string name="Brazil">Brasil</string>
+ <string name="Brisbane">Brisbane</string>
+ <string name="Brussels">Bruxelas</string>
+ <string name="Bucharest">Bucareste</string>
+ <string name="Budapest">Budapeste</string>
+ <string name="Bulgaria">Bulgária</string>
+ <string name="Calgary">Calgary</string>
+ <string name="Canada">Canadá</string>
+ <string name="Canberra">Camberra</string>
+ <string name="Charlotte, NC">Charlotte, NC</string>
+ <string name="Chicago, IL">Chicago, IL</string>
+ <string name="Chile">Chile</string>
+ <string name="Chisinau">Chişinău</string>
+ <string name="Cleveland, OH">Cleveland, OH</string>
+ <string name="Colombia">Colômbia</string>
+ <string name="Copenhagen">Copenhaga</string>
+ <string name="Croatia">Croácia</string>
+ <string name="Czech Republic">República Checa</string>
+ <string name="Dallas, TX">Dallas, TX</string>
+ <string name="Denmark">Dinamarca</string>
+ <string name="Denver, CO">Denver, CO</string>
+ <string name="Detroit, MI">Detroit, MI</string>
+ <string name="Dubai">Dubai</string>
+ <string name="Dublin">Dublin</string>
+ <string name="Dusseldorf">Dusseldorf</string>
+ <string name="Estonia">Estónia</string>
+ <string name="Finland">Finlândia</string>
+ <string name="France">França</string>
+ <string name="Frankfurt">Frankfurt</string>
+ <string name="Germany">Alemanha</string>
+ <string name="Glasgow">Glasgow</string>
+ <string name="Gothenburg">Gotemburgo</string>
+ <string name="Greece">Grécia</string>
+ <string name="Helsingborg">Helsingborg</string>
+ <string name="Helsinki">Helsínquia</string>
+ <string name="Hong Kong">Hong Kong</string>
+ <string name="Honolulu, HI">Honolulu, HI</string>
+ <string name="Houston, TX">Houston, TX</string>
+ <string name="Hungary">Hungria</string>
+ <string name="India">Índia</string>
+ <string name="Indonesia">Indonésia</string>
+ <string name="Ireland">República da Irlanda</string>
+ <string name="Israel">Israel</string>
+ <string name="Italy">Itália</string>
+ <string name="Jackson, MS">Jackson, MS</string>
+ <string name="Jakarta">Jacarta</string>
+ <string name="Japan">Japão</string>
+ <string name="Johannesburg">Joanesburgo</string>
+ <string name="Kiev">Kiev</string>
+ <string name="Kyiv">Kiev</string>
+ <string name="Latvia">Letónia</string>
+ <string name="Lisbon">Lisboa</string>
+ <string name="Ljubljana">Ljubljana</string>
+ <string name="London">Londres</string>
+ <string name="Los Angeles, CA">Los Angeles, CA</string>
+ <string name="Louisville, KY">Louisville, KY</string>
+ <string name="Luxembourg">Luxemburgo</string>
+ <string name="Madrid">Madrid</string>
+ <string name="Malmö">Malmö</string>
+ <string name="Manchester">Manchester</string>
+ <string name="Marseille">Marselha</string>
+ <string name="McAllen, TX">McAllen, TX</string>
+ <string name="Melbourne">Melbourne</string>
+ <string name="Mexico">México</string>
+ <string name="Miami, FL">Miami, FL</string>
+ <string name="Milan">Milão</string>
+ <string name="Milwaukee, WI">Milwaukee, WI</string>
+ <string name="Minneapolis/St. Paul Apt, MN">Minneapolis/St. Paul Apt, MN</string>
+ <string name="Moldova">Moldávia</string>
+ <string name="Montreal">Montreal</string>
+ <string name="Netherlands">Países Baixos</string>
+ <string name="New York, NY">Nova Iorque, NY</string>
+ <string name="New Zealand">Nova Zelândia</string>
+ <string name="Nis">Niš</string>
+ <string name="North Macedonia">Macedónia do Norte</string>
+ <string name="Norway">Noruega</string>
+ <string name="Oklahoma City, OK">Oklahoma City, OK</string>
+ <string name="Osaka">Osaka</string>
+ <string name="Oslo">Oslo</string>
+ <string name="Palermo">Palermo</string>
+ <string name="Paris">Paris</string>
+ <string name="Perth">Perth</string>
+ <string name="Philadelphia, PA">Filadélfia, PA</string>
+ <string name="Phoenix, AZ">Phoenix, AZ</string>
+ <string name="Piscataway, NJ">Piscataway, NJ</string>
+ <string name="Poland">Polónia</string>
+ <string name="Portland, OR">Portland, OR</string>
+ <string name="Portugal">Portugal</string>
+ <string name="Prague">Praga</string>
+ <string name="Pune">Pune</string>
+ <string name="Queretaro">Querétaro</string>
+ <string name="Raleigh, NC">Raleigh, NC</string>
+ <string name="Richmond, VA">Richmond, VA</string>
+ <string name="Riga">Riga</string>
+ <string name="Romania">Roménia</string>
+ <string name="Rome">Roma</string>
+ <string name="Salt Lake City, UT">Salt Lake City, UT</string>
+ <string name="San Francisco, CA">São Francisco, CA</string>
+ <string name="San Jose, CA">Puerto San José, CA</string>
+ <string name="Santiago">Santiago</string>
+ <string name="Sao Paulo">São Paulo</string>
+ <string name="Seattle, WA">Seattle, WA</string>
+ <string name="Secaucus, NJ">Secaucus, NJ</string>
+ <string name="Serbia">Sérvia</string>
+ <string name="Singapore">Singapura</string>
+ <string name="Sioux Falls, SD">Sioux Falls, SD</string>
+ <string name="Skopje">Skopje</string>
+ <string name="Slovakia">Eslováquia</string>
+ <string name="Slovenia">Eslovénia</string>
+ <string name="Sofia">Sófia</string>
+ <string name="South Africa">África do Sul</string>
+ <string name="Spain">Espanha</string>
+ <string name="St. Louis, MO">St. Louis, MO</string>
+ <string name="Stamford, CT">Stamford, CT</string>
+ <string name="Stavanger">Stavanger</string>
+ <string name="Stockholm">Estocolmo</string>
+ <string name="Sweden">Suécia</string>
+ <string name="Switzerland">Suíça</string>
+ <string name="Sydney">Sydney</string>
+ <string name="Tallinn">Tallinn</string>
+ <string name="Tel Aviv">Telavive</string>
+ <string name="Thailand">Tailândia</string>
+ <string name="Tirana">Tirana</string>
+ <string name="Tokyo">Tóquio</string>
+ <string name="Toronto">Toronto</string>
+ <string name="UK">Reino Unido</string>
+ <string name="USA">Estados Unidos</string>
+ <string name="Ukraine">Ucrânia</string>
+ <string name="United Arab Emirates">Emirados Árabes Unidos</string>
+ <string name="Valencia">Valência</string>
+ <string name="Vancouver">Vancouver</string>
+ <string name="Vienna">Viena</string>
+ <string name="Warsaw">Varsóvia</string>
+ <string name="Washington DC">Washington DC</string>
+ <string name="Wien">Viena</string>
+ <string name="Zagreb">Zagreb</string>
+ <string name="Zurich">Zurique</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-ru/relay_locations.xml b/android/lib/resource/src/main/res/xml-ru/relay_locations.xml
new file mode 100644
index 0000000000..d658f846fc
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-ru/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">Аделаида</string>
+ <string name="Albania">Албания</string>
+ <string name="Amsterdam">Амстердам</string>
+ <string name="Ashburn, VA">Эшберн, Вирджиния</string>
+ <string name="Athens">Афины</string>
+ <string name="Atlanta, GA">Атланта, GA</string>
+ <string name="Auckland">Окленд</string>
+ <string name="Australia">Австралия</string>
+ <string name="Austria">Австрия</string>
+ <string name="Bangkok">Бангкок</string>
+ <string name="Barcelona">Барселона</string>
+ <string name="Belgium">Бельгия</string>
+ <string name="Belgrade">Белград</string>
+ <string name="Berlin">Берлин</string>
+ <string name="Bogota">Богота</string>
+ <string name="Bordeaux">Бордо</string>
+ <string name="Boston, MA">Бостон, MA</string>
+ <string name="Bratislava">Братислава</string>
+ <string name="Brazil">Бразилия</string>
+ <string name="Brisbane">Брисбен</string>
+ <string name="Brussels">Брюссель</string>
+ <string name="Bucharest">Бухарест</string>
+ <string name="Budapest">Будапешт</string>
+ <string name="Bulgaria">Болгария</string>
+ <string name="Calgary">Калгари</string>
+ <string name="Canada">Канада</string>
+ <string name="Canberra">Канберра</string>
+ <string name="Charlotte, NC">Шарлотт, NC</string>
+ <string name="Chicago, IL">Чикаго, IL</string>
+ <string name="Chile">Чили</string>
+ <string name="Chisinau">Кишинёв</string>
+ <string name="Cleveland, OH">Кливленд, OH</string>
+ <string name="Colombia">Колумбия</string>
+ <string name="Copenhagen">Копенгаген</string>
+ <string name="Croatia">Хорватия</string>
+ <string name="Czech Republic">Чехия</string>
+ <string name="Dallas, TX">Даллас, TX</string>
+ <string name="Denmark">Дания</string>
+ <string name="Denver, CO">Денвер, CO</string>
+ <string name="Detroit, MI">Детройт, Мичиган</string>
+ <string name="Dubai">Дубай</string>
+ <string name="Dublin">Дублин</string>
+ <string name="Dusseldorf">Дюссельдорф</string>
+ <string name="Estonia">Эстония</string>
+ <string name="Finland">Финляндия</string>
+ <string name="France">Франция</string>
+ <string name="Frankfurt">Франкфурт-на-Майне</string>
+ <string name="Germany">Германия</string>
+ <string name="Glasgow">Глазго</string>
+ <string name="Gothenburg">Гётеборг</string>
+ <string name="Greece">Греция</string>
+ <string name="Helsingborg">Хельсингборг</string>
+ <string name="Helsinki">Хельсинки</string>
+ <string name="Hong Kong">Гонконг</string>
+ <string name="Honolulu, HI">Гонолулу, HI</string>
+ <string name="Houston, TX">Хьюстон, Техас</string>
+ <string name="Hungary">Венгрия</string>
+ <string name="India">Индия</string>
+ <string name="Indonesia">Индонезия</string>
+ <string name="Ireland">Ирландия</string>
+ <string name="Israel">Израиль</string>
+ <string name="Italy">Италия</string>
+ <string name="Jackson, MS">Джексон, MS</string>
+ <string name="Jakarta">Джакарта</string>
+ <string name="Japan">Япония</string>
+ <string name="Johannesburg">Йоханнесбург</string>
+ <string name="Kiev">Киев</string>
+ <string name="Kyiv">Киев</string>
+ <string name="Latvia">Латвия</string>
+ <string name="Lisbon">Лиссабон</string>
+ <string name="Ljubljana">Любляна</string>
+ <string name="London">Лондон</string>
+ <string name="Los Angeles, CA">Лос-Анджелес, CA</string>
+ <string name="Louisville, KY">Луисвилл, KY</string>
+ <string name="Luxembourg">Люксембург</string>
+ <string name="Madrid">Мадрид</string>
+ <string name="Malmö">Мальмё</string>
+ <string name="Manchester">Манчестер</string>
+ <string name="Marseille">Марсель</string>
+ <string name="McAllen, TX">Мак-Аллен, Техас</string>
+ <string name="Melbourne">Мельбурн</string>
+ <string name="Mexico">Мексика</string>
+ <string name="Miami, FL">Майами, FL</string>
+ <string name="Milan">Милан</string>
+ <string name="Milwaukee, WI">Милуоки, WI</string>
+ <string name="Minneapolis/St. Paul Apt, MN">Аэропорт Миннеаполис/Сент-Пол, MN</string>
+ <string name="Moldova">Молдова</string>
+ <string name="Montreal">Монреаль</string>
+ <string name="Netherlands">Нидерланды</string>
+ <string name="New York, NY">Нью-Йорк, NY</string>
+ <string name="New Zealand">Новая Зеландия</string>
+ <string name="Nis">Ниш</string>
+ <string name="North Macedonia">Северная Македония</string>
+ <string name="Norway">Норвегия</string>
+ <string name="Oklahoma City, OK">Оклахома-Сити, OK</string>
+ <string name="Osaka">Осака</string>
+ <string name="Oslo">Осло</string>
+ <string name="Palermo">Палермо</string>
+ <string name="Paris">Париж</string>
+ <string name="Perth">Перт</string>
+ <string name="Philadelphia, PA">Филадельфия, PA</string>
+ <string name="Phoenix, AZ">Финикс, AZ</string>
+ <string name="Piscataway, NJ">Пискатауэй, NJ</string>
+ <string name="Poland">Польша</string>
+ <string name="Portland, OR">Портленд, OR</string>
+ <string name="Portugal">Португалия</string>
+ <string name="Prague">Прага</string>
+ <string name="Pune">Пуна</string>
+ <string name="Queretaro">Сантьяго-де-Керетаро</string>
+ <string name="Raleigh, NC">Роли, NC</string>
+ <string name="Richmond, VA">Ричмонд, VA</string>
+ <string name="Riga">Рига</string>
+ <string name="Romania">Румыния</string>
+ <string name="Rome">Рим</string>
+ <string name="Salt Lake City, UT">Солт-Лейк-Сити, UT</string>
+ <string name="San Francisco, CA">Сан-Франциско, CA</string>
+ <string name="San Jose, CA">Сан-Хосе, CA</string>
+ <string name="Santiago">Сантьяго</string>
+ <string name="Sao Paulo">Сан-Паулу</string>
+ <string name="Seattle, WA">Сиэтл, WA</string>
+ <string name="Secaucus, NJ">Секаукус, NJ</string>
+ <string name="Serbia">Сербия</string>
+ <string name="Singapore">Сингапур</string>
+ <string name="Sioux Falls, SD">Су-Фолс, SD</string>
+ <string name="Skopje">Скопье</string>
+ <string name="Slovakia">Словакия</string>
+ <string name="Slovenia">Словения</string>
+ <string name="Sofia">София</string>
+ <string name="South Africa">Южно-Африканская Республика</string>
+ <string name="Spain">Испания</string>
+ <string name="St. Louis, MO">Сент-Луис, MO</string>
+ <string name="Stamford, CT">Стамфорд, CT</string>
+ <string name="Stavanger">Ставангер</string>
+ <string name="Stockholm">Стокгольм</string>
+ <string name="Sweden">Швеция</string>
+ <string name="Switzerland">Швейцария</string>
+ <string name="Sydney">Сидней</string>
+ <string name="Tallinn">Таллин</string>
+ <string name="Tel Aviv">Тель-Авив</string>
+ <string name="Thailand">Таиланд</string>
+ <string name="Tirana">Тирана</string>
+ <string name="Tokyo">Токио</string>
+ <string name="Toronto">Торонто</string>
+ <string name="UK">Великобритания</string>
+ <string name="USA">Соединённые Штаты Америки</string>
+ <string name="Ukraine">Украина</string>
+ <string name="United Arab Emirates">Объединённые Арабские Эмираты</string>
+ <string name="Valencia">Валенсия</string>
+ <string name="Vancouver">Ванкувер</string>
+ <string name="Vienna">Вена</string>
+ <string name="Warsaw">Варшава</string>
+ <string name="Washington DC">Вашингтон, округ Колумбия</string>
+ <string name="Wien">Вена</string>
+ <string name="Zagreb">Загреб</string>
+ <string name="Zurich">Цюрих</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-sv/relay_locations.xml b/android/lib/resource/src/main/res/xml-sv/relay_locations.xml
new file mode 100644
index 0000000000..9943c452e2
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-sv/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">Adelaide</string>
+ <string name="Albania">Albanien</string>
+ <string name="Amsterdam">Amsterdam</string>
+ <string name="Ashburn, VA">Ashburn, VA</string>
+ <string name="Athens">Aten</string>
+ <string name="Atlanta, GA">Atlanta, GA</string>
+ <string name="Auckland">Auckland</string>
+ <string name="Australia">Australien</string>
+ <string name="Austria">Österrike</string>
+ <string name="Bangkok">Bangkok</string>
+ <string name="Barcelona">Barcelona</string>
+ <string name="Belgium">Belgien</string>
+ <string name="Belgrade">Belgrad</string>
+ <string name="Berlin">Berlin</string>
+ <string name="Bogota">Bogotá</string>
+ <string name="Bordeaux">Bordeaux</string>
+ <string name="Boston, MA">Boston, MA</string>
+ <string name="Bratislava">Bratislava</string>
+ <string name="Brazil">Brasilien</string>
+ <string name="Brisbane">Brisbane</string>
+ <string name="Brussels">Bryssel</string>
+ <string name="Bucharest">Bukarest</string>
+ <string name="Budapest">Budapest</string>
+ <string name="Bulgaria">Bulgarien</string>
+ <string name="Calgary">Calgary</string>
+ <string name="Canada">Kanada</string>
+ <string name="Canberra">Canberra</string>
+ <string name="Charlotte, NC">Charlotte, NC</string>
+ <string name="Chicago, IL">Chicago, IL</string>
+ <string name="Chile">Chile</string>
+ <string name="Chisinau">Chișinău</string>
+ <string name="Cleveland, OH">Cleveland, OH</string>
+ <string name="Colombia">Colombia</string>
+ <string name="Copenhagen">Köpenhamn</string>
+ <string name="Croatia">Kroatien</string>
+ <string name="Czech Republic">Tjeckien</string>
+ <string name="Dallas, TX">Dallas, TX</string>
+ <string name="Denmark">Danmark</string>
+ <string name="Denver, CO">Denver, CO</string>
+ <string name="Detroit, MI">Detroit, MI</string>
+ <string name="Dubai">Dubai</string>
+ <string name="Dublin">Dublin</string>
+ <string name="Dusseldorf">Düsseldorf</string>
+ <string name="Estonia">Estland</string>
+ <string name="Finland">Finland</string>
+ <string name="France">Frankrike</string>
+ <string name="Frankfurt">Frankfurt am Main</string>
+ <string name="Germany">Tyskland</string>
+ <string name="Glasgow">Glasgow</string>
+ <string name="Gothenburg">Göteborg</string>
+ <string name="Greece">Grekland</string>
+ <string name="Helsingborg">Helsingborg</string>
+ <string name="Helsinki">Helsingfors</string>
+ <string name="Hong Kong">Hongkong</string>
+ <string name="Honolulu, HI">Honolulu, HI</string>
+ <string name="Houston, TX">Houston, TX</string>
+ <string name="Hungary">Ungern</string>
+ <string name="India">Indien</string>
+ <string name="Indonesia">Indonesien</string>
+ <string name="Ireland">Irland</string>
+ <string name="Israel">Israel</string>
+ <string name="Italy">Italien</string>
+ <string name="Jackson, MS">Jackson, MS</string>
+ <string name="Jakarta">Jakarta</string>
+ <string name="Japan">Japan</string>
+ <string name="Johannesburg">Johannesburg</string>
+ <string name="Kiev">Kiev</string>
+ <string name="Kyiv">Kiev</string>
+ <string name="Latvia">Lettland</string>
+ <string name="Lisbon">Lissabon</string>
+ <string name="Ljubljana">Ljubljana</string>
+ <string name="London">London</string>
+ <string name="Los Angeles, CA">Los Angeles, CA</string>
+ <string name="Louisville, KY">Louisville, KY</string>
+ <string name="Luxembourg">Luxemburg</string>
+ <string name="Madrid">Madrid</string>
+ <string name="Malmö">Malmö</string>
+ <string name="Manchester">Manchester</string>
+ <string name="Marseille">Marseille</string>
+ <string name="McAllen, TX">McAllen, TX</string>
+ <string name="Melbourne">Melbourne</string>
+ <string name="Mexico">Mexiko</string>
+ <string name="Miami, FL">Miami, FL</string>
+ <string name="Milan">Milano</string>
+ <string name="Milwaukee, WI">Milwaukee, WI</string>
+ <string name="Minneapolis/St. Paul Apt, MN">Minneapolis/St. Paul Apt, MN</string>
+ <string name="Moldova">Moldavien</string>
+ <string name="Montreal">Montréal</string>
+ <string name="Netherlands">Nederländerna</string>
+ <string name="New York, NY">New York, NY</string>
+ <string name="New Zealand">Nya Zeeland</string>
+ <string name="Nis">Niš</string>
+ <string name="North Macedonia">Nordmakedonien</string>
+ <string name="Norway">Norge</string>
+ <string name="Oklahoma City, OK">Oklahoma City, OK</string>
+ <string name="Osaka">Osaka</string>
+ <string name="Oslo">Oslo</string>
+ <string name="Palermo">Palermo</string>
+ <string name="Paris">Paris</string>
+ <string name="Perth">Perth</string>
+ <string name="Philadelphia, PA">Philadelphia, PA</string>
+ <string name="Phoenix, AZ">Phoenix, AZ</string>
+ <string name="Piscataway, NJ">Piscataway, NJ</string>
+ <string name="Poland">Polen</string>
+ <string name="Portland, OR">Portland, OR</string>
+ <string name="Portugal">Portugal</string>
+ <string name="Prague">Prag</string>
+ <string name="Pune">Pune</string>
+ <string name="Queretaro">Querétaro</string>
+ <string name="Raleigh, NC">Raleigh, NC</string>
+ <string name="Richmond, VA">Richmond, VA</string>
+ <string name="Riga">Riga</string>
+ <string name="Romania">Rumänien</string>
+ <string name="Rome">Rom</string>
+ <string name="Salt Lake City, UT">Salt Lake City, UT</string>
+ <string name="San Francisco, CA">San Francisco, CA</string>
+ <string name="San Jose, CA">San Jose, CA</string>
+ <string name="Santiago">Santiago</string>
+ <string name="Sao Paulo">São Paulo</string>
+ <string name="Seattle, WA">Seattle, WA</string>
+ <string name="Secaucus, NJ">Secaucus, NJ</string>
+ <string name="Serbia">Serbien</string>
+ <string name="Singapore">Singapore</string>
+ <string name="Sioux Falls, SD">Sioux Falls, SD</string>
+ <string name="Skopje">Skopje</string>
+ <string name="Slovakia">Slovakien</string>
+ <string name="Slovenia">Slovenien</string>
+ <string name="Sofia">Sofia</string>
+ <string name="South Africa">Sydafrika</string>
+ <string name="Spain">Spanien</string>
+ <string name="St. Louis, MO">Saint Louis, MO</string>
+ <string name="Stamford, CT">Stamford, CT</string>
+ <string name="Stavanger">Stavanger</string>
+ <string name="Stockholm">Stockholm</string>
+ <string name="Sweden">Sverige</string>
+ <string name="Switzerland">Schweiz</string>
+ <string name="Sydney">Sydney</string>
+ <string name="Tallinn">Tallinn</string>
+ <string name="Tel Aviv">Tel Aviv</string>
+ <string name="Thailand">Thailand</string>
+ <string name="Tirana">Tirana</string>
+ <string name="Tokyo">Tokyo</string>
+ <string name="Toronto">Toronto</string>
+ <string name="UK">Storbritannien</string>
+ <string name="USA">USA</string>
+ <string name="Ukraine">Ukraina</string>
+ <string name="United Arab Emirates">Förenade Arabemiraten</string>
+ <string name="Valencia">Valencia</string>
+ <string name="Vancouver">Vancouver</string>
+ <string name="Vienna">Wien</string>
+ <string name="Warsaw">Warszawa</string>
+ <string name="Washington DC">Washington DC</string>
+ <string name="Wien">Wien</string>
+ <string name="Zagreb">Zagreb</string>
+ <string name="Zurich">Zürich</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-th/relay_locations.xml b/android/lib/resource/src/main/res/xml-th/relay_locations.xml
new file mode 100644
index 0000000000..e6aaf1e3e1
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-th/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">แอดิเลด</string>
+ <string name="Albania">แอลเบเนีย</string>
+ <string name="Amsterdam">อัมสเตอร์ดัม</string>
+ <string name="Ashburn, VA">แอชเบิร์น รัฐเวอร์จิเนีย</string>
+ <string name="Athens">เอเธนส์</string>
+ <string name="Atlanta, GA">แอตแลนตา รัฐจอร์เจีย</string>
+ <string name="Auckland">ออกแลนด์</string>
+ <string name="Australia">ออสเตรเลีย</string>
+ <string name="Austria">ออสเตรีย</string>
+ <string name="Bangkok">กรุงเทพ</string>
+ <string name="Barcelona">บาร์เซโลนา</string>
+ <string name="Belgium">เบลเยียม</string>
+ <string name="Belgrade">เบลเกรด</string>
+ <string name="Berlin">เบอร์ลิน</string>
+ <string name="Bogota">โบโกตา</string>
+ <string name="Bordeaux">บอร์โด</string>
+ <string name="Boston, MA">บอสตัน รัฐแมสซาชูเซตส์</string>
+ <string name="Bratislava">บราติสลาวา</string>
+ <string name="Brazil">บราซิล</string>
+ <string name="Brisbane">บริสเบน</string>
+ <string name="Brussels">บรัสเซลส์</string>
+ <string name="Bucharest">บูคาเรสต์</string>
+ <string name="Budapest">บูดาเปสต์</string>
+ <string name="Bulgaria">บัลแกเรีย</string>
+ <string name="Calgary">แคลกะรี</string>
+ <string name="Canada">แคนาดา</string>
+ <string name="Canberra">แคนเบอร์รา</string>
+ <string name="Charlotte, NC">ชาร์ลอตต์ รัฐนอร์ทแคโรไลนา</string>
+ <string name="Chicago, IL">ชิคาโก รัฐอิลลินอยส์</string>
+ <string name="Chile">ชิลี</string>
+ <string name="Chisinau">คีชีเนา</string>
+ <string name="Cleveland, OH">คลีฟแลนด์ รัฐโอไฮโอ</string>
+ <string name="Colombia">โคลอมเบีย</string>
+ <string name="Copenhagen">โคเปนเฮเกน</string>
+ <string name="Croatia">โครเอเชีย</string>
+ <string name="Czech Republic">สาธารณรัฐเช็ก</string>
+ <string name="Dallas, TX">แดลลัส รัฐเท็กซัส</string>
+ <string name="Denmark">เดนมาร์ก</string>
+ <string name="Denver, CO">เดนเวอร์ รัฐโคโลราโด</string>
+ <string name="Detroit, MI">ดีทรอยต์, มิชิแกน</string>
+ <string name="Dubai">ดูไบ</string>
+ <string name="Dublin">ดับลิน</string>
+ <string name="Dusseldorf">ดึสเซิลดอร์ฟ</string>
+ <string name="Estonia">เอสโตเนีย</string>
+ <string name="Finland">ฟินแลนด์</string>
+ <string name="France">ฝรั่งเศส</string>
+ <string name="Frankfurt">แฟรงก์เฟิร์ต</string>
+ <string name="Germany">เยอรมนี</string>
+ <string name="Glasgow">กลาสโกว์</string>
+ <string name="Gothenburg">กอเทนเบิร์ก</string>
+ <string name="Greece">กรีซ</string>
+ <string name="Helsingborg">เฮลซิงบอรย์</string>
+ <string name="Helsinki">เฮลซิงกิ</string>
+ <string name="Hong Kong">ฮ่องกง</string>
+ <string name="Honolulu, HI">โฮโนลูลู รัฐฮาวาย</string>
+ <string name="Houston, TX">ฮิวสตัน เท็กซัส</string>
+ <string name="Hungary">ฮังการี</string>
+ <string name="India">อินเดีย</string>
+ <string name="Indonesia">อินโดนีเซีย</string>
+ <string name="Ireland">ไอร์แลนด์</string>
+ <string name="Israel">อิสราเอล</string>
+ <string name="Italy">อิตาลี</string>
+ <string name="Jackson, MS">แจ็กสัน รัฐมิสซิสซิปปี</string>
+ <string name="Jakarta">จาการ์ตา</string>
+ <string name="Japan">ญี่ปุ่น</string>
+ <string name="Johannesburg">โจฮันเนสเบิร์ก</string>
+ <string name="Kiev">เคียฟ</string>
+ <string name="Kyiv">เคียฟ</string>
+ <string name="Latvia"> ลัตเวีย</string>
+ <string name="Lisbon">ลิสบอน</string>
+ <string name="Ljubljana">ลูบลิยานา</string>
+ <string name="London">ลอนดอน</string>
+ <string name="Los Angeles, CA">ลอสแอนเจลิส รัฐแคลิฟอร์เนีย</string>
+ <string name="Louisville, KY">ลุยส์วิลล์ รัฐเคนทักกี</string>
+ <string name="Luxembourg">ลักเซมเบิร์ก</string>
+ <string name="Madrid">มาดริด</string>
+ <string name="Malmö">มัลเมอ</string>
+ <string name="Manchester">แมนเชสเตอร์</string>
+ <string name="Marseille">มาร์แซย์</string>
+ <string name="McAllen, TX">แมคอัลเลน เท็กซัส</string>
+ <string name="Melbourne">เมลเบิร์น</string>
+ <string name="Mexico">เม็กซิโก</string>
+ <string name="Miami, FL">ไมแอมี รัฐฟลอริดา</string>
+ <string name="Milan">มิลาน</string>
+ <string name="Milwaukee, WI">มิลวอกี รัฐวิสคอนซิน</string>
+ <string name="Minneapolis/St. Paul Apt, MN">มินนีแอโพลิส/เซนต์พอล รัฐมินนิโซตา</string>
+ <string name="Moldova">มอลโดวา</string>
+ <string name="Montreal">มอนทรีออล</string>
+ <string name="Netherlands">เนเธอร์แลนด์</string>
+ <string name="New York, NY">นิวยอร์ก รัฐนิวยอร์ก</string>
+ <string name="New Zealand">นิวซีแลนด์</string>
+ <string name="Nis">นีช</string>
+ <string name="North Macedonia">นอร์ทมาซิโดเนีย</string>
+ <string name="Norway">นอร์เวย์</string>
+ <string name="Oklahoma City, OK">โอคลาโฮมาซิตี รัฐโอคลาโฮมา</string>
+ <string name="Osaka">โอซากะ</string>
+ <string name="Oslo">ออสโล</string>
+ <string name="Palermo">ปาแลร์โม</string>
+ <string name="Paris">ปารีส</string>
+ <string name="Perth">เพิร์ท</string>
+ <string name="Philadelphia, PA">ฟิลาเดลเฟีย รัฐเพนซิลเวเนีย</string>
+ <string name="Phoenix, AZ">ฟีนิกซ์ รัฐแอริโซนา</string>
+ <string name="Piscataway, NJ">พิสแกตาเวย์ รัฐนิวเจอร์ซีย์</string>
+ <string name="Poland">โปแลนด์</string>
+ <string name="Portland, OR">พอร์ตแลนด์ รัฐออริกอน</string>
+ <string name="Portugal">โปรตุเกส</string>
+ <string name="Prague">ปราก</string>
+ <string name="Pune">ปูเน</string>
+ <string name="Queretaro">เกเรตาโร</string>
+ <string name="Raleigh, NC">ราลี นอร์ทแคโรไลนา</string>
+ <string name="Richmond, VA">ริชมอนด์ รัฐเวอร์จิเนีย</string>
+ <string name="Riga">รีกา</string>
+ <string name="Romania">โรมาเนีย</string>
+ <string name="Rome">โรม</string>
+ <string name="Salt Lake City, UT">ซอลต์เลกซิตี รัฐยูทาห์</string>
+ <string name="San Francisco, CA">ซานฟรานซิสโก รัฐแคลิฟอร์เนีย</string>
+ <string name="San Jose, CA">แซนโฮเซ รัฐแคลิฟอร์เนีย</string>
+ <string name="Santiago">ซันติอาโก</string>
+ <string name="Sao Paulo">เซาเปาโล</string>
+ <string name="Seattle, WA">ซีแอตเทิล รัฐวอชิงตัน</string>
+ <string name="Secaucus, NJ">ซีคอคัส รัฐนิวเจอร์ซีย์</string>
+ <string name="Serbia">เซอร์เบีย</string>
+ <string name="Singapore">สิงคโปร์</string>
+ <string name="Sioux Falls, SD">ซูฟอลส์ รัฐเซาท์ดาโคตา</string>
+ <string name="Skopje">สโกเปีย</string>
+ <string name="Slovakia">สโลวาเกีย</string>
+ <string name="Slovenia">สโลวีเนีย</string>
+ <string name="Sofia">โซเฟีย</string>
+ <string name="South Africa">แอฟริกาใต้</string>
+ <string name="Spain">สเปน</string>
+ <string name="St. Louis, MO">เซนต์หลุยส์ รัฐมิสซูรี</string>
+ <string name="Stamford, CT">สแตมเฟิร์ด รัฐคอนเนตทิคัต</string>
+ <string name="Stavanger">สตาวังเงอร์</string>
+ <string name="Stockholm">สต็อกโฮล์ม</string>
+ <string name="Sweden">สวีเดน</string>
+ <string name="Switzerland">สวิตเซอร์แลนด์</string>
+ <string name="Sydney">ซิดนีย์</string>
+ <string name="Tallinn">ทาลลินน์</string>
+ <string name="Tel Aviv">เทลอาวีฟ</string>
+ <string name="Thailand">ไทย</string>
+ <string name="Tirana">ติรานา</string>
+ <string name="Tokyo">โตเกียว</string>
+ <string name="Toronto">โทรอนโต</string>
+ <string name="UK">สหราชอาณาจักร</string>
+ <string name="USA">สหรัฐอเมริกา</string>
+ <string name="Ukraine">ยูเครน</string>
+ <string name="United Arab Emirates">สหรัฐอาหรับเอมิเรตส์</string>
+ <string name="Valencia">บาเลนเซีย</string>
+ <string name="Vancouver">แวนคูเวอร์</string>
+ <string name="Vienna">เวียนนา</string>
+ <string name="Warsaw">วอร์ซอ</string>
+ <string name="Washington DC">วอชิงตัน ดี.ซี.</string>
+ <string name="Wien">วีน</string>
+ <string name="Zagreb">ซาเกร็บ</string>
+ <string name="Zurich">ซือริช</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-tr/relay_locations.xml b/android/lib/resource/src/main/res/xml-tr/relay_locations.xml
new file mode 100644
index 0000000000..c3f0d62b95
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-tr/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">Adelaide</string>
+ <string name="Albania">Arnavutluk</string>
+ <string name="Amsterdam">Amsterdam</string>
+ <string name="Ashburn, VA">Ashburn, VA</string>
+ <string name="Athens">Atina</string>
+ <string name="Atlanta, GA">Atlanta, GA</string>
+ <string name="Auckland">Auckland</string>
+ <string name="Australia">Avustralya</string>
+ <string name="Austria">Avusturya</string>
+ <string name="Bangkok">Bangkok</string>
+ <string name="Barcelona">Barselona</string>
+ <string name="Belgium">Belçika</string>
+ <string name="Belgrade">Belgrad</string>
+ <string name="Berlin">Berlin</string>
+ <string name="Bogota">Bogota</string>
+ <string name="Bordeaux">Bordeaux</string>
+ <string name="Boston, MA">Boston, MA</string>
+ <string name="Bratislava">Bratislava</string>
+ <string name="Brazil">Brezilya</string>
+ <string name="Brisbane">Brisbane</string>
+ <string name="Brussels">Brüksel</string>
+ <string name="Bucharest">Bükreș</string>
+ <string name="Budapest">Budapeşte</string>
+ <string name="Bulgaria">Bulgaristan</string>
+ <string name="Calgary">Calgary</string>
+ <string name="Canada">Kanada</string>
+ <string name="Canberra">Canberra</string>
+ <string name="Charlotte, NC">Charlotte, NC</string>
+ <string name="Chicago, IL">Şikago, IL</string>
+ <string name="Chile">Şili</string>
+ <string name="Chisinau">Kişinev</string>
+ <string name="Cleveland, OH">Cleveland, OH</string>
+ <string name="Colombia">Kolombiya</string>
+ <string name="Copenhagen">Kopenhag</string>
+ <string name="Croatia">Hırvatistan</string>
+ <string name="Czech Republic">Çek Cumhuriyeti</string>
+ <string name="Dallas, TX">Dallas, TX</string>
+ <string name="Denmark">Danimarka</string>
+ <string name="Denver, CO">Denver, CO</string>
+ <string name="Detroit, MI">Detroit, MI</string>
+ <string name="Dubai">Dubai</string>
+ <string name="Dublin">Dublin</string>
+ <string name="Dusseldorf">Düsseldorf</string>
+ <string name="Estonia">Estonya</string>
+ <string name="Finland">Finlandiya</string>
+ <string name="France">Fransa</string>
+ <string name="Frankfurt">Frankfurt</string>
+ <string name="Germany">Almanya</string>
+ <string name="Glasgow">Glasgow</string>
+ <string name="Gothenburg">Göteborg</string>
+ <string name="Greece">Yunanistan</string>
+ <string name="Helsingborg">Helsingborg</string>
+ <string name="Helsinki">Helsinki</string>
+ <string name="Hong Kong">Hong Kong</string>
+ <string name="Honolulu, HI">Honolulu, HI</string>
+ <string name="Houston, TX">Houston, TX</string>
+ <string name="Hungary">Macaristan</string>
+ <string name="India">Hindistan</string>
+ <string name="Indonesia">Endonezya</string>
+ <string name="Ireland">İrlanda</string>
+ <string name="Israel">İsrail</string>
+ <string name="Italy">İtalya</string>
+ <string name="Jackson, MS">Jackson, MS</string>
+ <string name="Jakarta">Cakarta</string>
+ <string name="Japan">Japonya</string>
+ <string name="Johannesburg">Johannesburg</string>
+ <string name="Kiev">Kiev</string>
+ <string name="Kyiv">Kiev</string>
+ <string name="Latvia">Letonya</string>
+ <string name="Lisbon">Lizbon</string>
+ <string name="Ljubljana">Ljubljana</string>
+ <string name="London">Londra</string>
+ <string name="Los Angeles, CA">Los Angeles, CA</string>
+ <string name="Louisville, KY">Louisville, KY</string>
+ <string name="Luxembourg">Lüksemburg</string>
+ <string name="Madrid">Madrid</string>
+ <string name="Malmö">Malmö</string>
+ <string name="Manchester">Manchester</string>
+ <string name="Marseille">Marsilya</string>
+ <string name="McAllen, TX">McAllen, Teksas</string>
+ <string name="Melbourne">Melbourne</string>
+ <string name="Mexico">Meksika</string>
+ <string name="Miami, FL">Miami, FL</string>
+ <string name="Milan">Milano</string>
+ <string name="Milwaukee, WI">Milwaukee, WI</string>
+ <string name="Minneapolis/St. Paul Apt, MN">Minneapolis/St. Paul Apt, MN</string>
+ <string name="Moldova">Moldova</string>
+ <string name="Montreal">Montreal</string>
+ <string name="Netherlands">Hollanda</string>
+ <string name="New York, NY">New York, NY</string>
+ <string name="New Zealand">Yeni Zelanda</string>
+ <string name="Nis">Niş</string>
+ <string name="North Macedonia">Kuzey Makedonya</string>
+ <string name="Norway">Norveç</string>
+ <string name="Oklahoma City, OK">Oklahoma City, OK</string>
+ <string name="Osaka">Osaka</string>
+ <string name="Oslo">Oslo</string>
+ <string name="Palermo">Palermo</string>
+ <string name="Paris">Paris</string>
+ <string name="Perth">Perth</string>
+ <string name="Philadelphia, PA">Philadelphia, PA</string>
+ <string name="Phoenix, AZ">Phoenix, AZ</string>
+ <string name="Piscataway, NJ">Piscataway, NJ</string>
+ <string name="Poland">Polonya</string>
+ <string name="Portland, OR">Portland, OR</string>
+ <string name="Portugal">Portekiz</string>
+ <string name="Prague">Prag</string>
+ <string name="Pune">Pune</string>
+ <string name="Queretaro">Santiago de Querétaro</string>
+ <string name="Raleigh, NC">Raleigh, NC</string>
+ <string name="Richmond, VA">Richmond, VA</string>
+ <string name="Riga">Riga</string>
+ <string name="Romania">Romanya</string>
+ <string name="Rome">Roma</string>
+ <string name="Salt Lake City, UT">Salt Lake City, UT</string>
+ <string name="San Francisco, CA">San Francisco, CA</string>
+ <string name="San Jose, CA">San Jose, CA</string>
+ <string name="Santiago">Santiago</string>
+ <string name="Sao Paulo">São Paulo</string>
+ <string name="Seattle, WA">Seattle, WA</string>
+ <string name="Secaucus, NJ">Secaucus, NJ</string>
+ <string name="Serbia">Sırbistan</string>
+ <string name="Singapore">Singapur</string>
+ <string name="Sioux Falls, SD">Sioux Falls, SD</string>
+ <string name="Skopje">Skopje</string>
+ <string name="Slovakia">Slovakya</string>
+ <string name="Slovenia">Slovenya</string>
+ <string name="Sofia">Sofya</string>
+ <string name="South Africa">Güney Afrika Cumhuriyeti</string>
+ <string name="Spain">İspanya</string>
+ <string name="St. Louis, MO">St. Louis, MO</string>
+ <string name="Stamford, CT">Stamford, CT</string>
+ <string name="Stavanger">Stavanger</string>
+ <string name="Stockholm">Stockholm</string>
+ <string name="Sweden">İsveç</string>
+ <string name="Switzerland">İsviçre</string>
+ <string name="Sydney">Sidney</string>
+ <string name="Tallinn">Tallinn</string>
+ <string name="Tel Aviv">Tel Aviv</string>
+ <string name="Thailand">Tayland</string>
+ <string name="Tirana">Tiran</string>
+ <string name="Tokyo">Tokyo</string>
+ <string name="Toronto">Toronto</string>
+ <string name="UK">Birleşik Krallık</string>
+ <string name="USA">Amerika Birleşik Devletleri</string>
+ <string name="Ukraine">Ukrayna</string>
+ <string name="United Arab Emirates">Birleşik Arap Emirlikleri</string>
+ <string name="Valencia">Valensiya</string>
+ <string name="Vancouver">Vancouver</string>
+ <string name="Vienna">Viyana</string>
+ <string name="Warsaw">Varşova</string>
+ <string name="Washington DC">Washington DC</string>
+ <string name="Wien">Viyana</string>
+ <string name="Zagreb">Zagreb</string>
+ <string name="Zurich">Zürih</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-zh-rCN/relay_locations.xml b/android/lib/resource/src/main/res/xml-zh-rCN/relay_locations.xml
new file mode 100644
index 0000000000..4df5d38faa
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-zh-rCN/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">阿德莱德</string>
+ <string name="Albania">阿尔巴尼亚</string>
+ <string name="Amsterdam">阿姆斯特丹</string>
+ <string name="Ashburn, VA">弗吉尼亚州阿什本</string>
+ <string name="Athens">雅典</string>
+ <string name="Atlanta, GA">佐治亚州亚特兰大</string>
+ <string name="Auckland">奥克兰</string>
+ <string name="Australia">澳大利亚</string>
+ <string name="Austria">奥地利</string>
+ <string name="Bangkok">曼谷</string>
+ <string name="Barcelona">巴塞罗那</string>
+ <string name="Belgium">比利时</string>
+ <string name="Belgrade">贝尔格莱德</string>
+ <string name="Berlin">柏林</string>
+ <string name="Bogota">波哥大</string>
+ <string name="Bordeaux">波尔多</string>
+ <string name="Boston, MA">马萨诸塞州波士顿</string>
+ <string name="Bratislava">布拉迪斯拉发</string>
+ <string name="Brazil">巴西</string>
+ <string name="Brisbane">布里斯班</string>
+ <string name="Brussels">布鲁塞尔</string>
+ <string name="Bucharest">布加勒斯特</string>
+ <string name="Budapest">布达佩斯</string>
+ <string name="Bulgaria">保加利亚</string>
+ <string name="Calgary">卡尔加里</string>
+ <string name="Canada">加拿大</string>
+ <string name="Canberra">堪培拉</string>
+ <string name="Charlotte, NC">北卡罗来纳州夏洛特</string>
+ <string name="Chicago, IL">伊利诺伊州芝加哥</string>
+ <string name="Chile">智利</string>
+ <string name="Chisinau">基希讷乌</string>
+ <string name="Cleveland, OH">俄亥俄州克里夫兰</string>
+ <string name="Colombia">哥伦比亚</string>
+ <string name="Copenhagen">哥本哈根</string>
+ <string name="Croatia">克罗地亚</string>
+ <string name="Czech Republic">捷克</string>
+ <string name="Dallas, TX">德克萨斯州达拉斯</string>
+ <string name="Denmark">丹麦</string>
+ <string name="Denver, CO">科罗拉多州丹佛</string>
+ <string name="Detroit, MI">密歇根州底特律</string>
+ <string name="Dubai">迪拜</string>
+ <string name="Dublin">都柏林</string>
+ <string name="Dusseldorf">杜塞尔多夫</string>
+ <string name="Estonia">爱沙尼亚</string>
+ <string name="Finland">芬兰</string>
+ <string name="France">法国</string>
+ <string name="Frankfurt">法兰克福</string>
+ <string name="Germany">德国</string>
+ <string name="Glasgow">格拉斯哥</string>
+ <string name="Gothenburg">哥德堡</string>
+ <string name="Greece">希腊</string>
+ <string name="Helsingborg">赫尔辛堡</string>
+ <string name="Helsinki">赫尔辛基</string>
+ <string name="Hong Kong">香港</string>
+ <string name="Honolulu, HI">夏威夷州檀香山</string>
+ <string name="Houston, TX">德克萨斯州休斯敦</string>
+ <string name="Hungary">匈牙利</string>
+ <string name="India">印度</string>
+ <string name="Indonesia">印度尼西亚</string>
+ <string name="Ireland">爱尔兰</string>
+ <string name="Israel">以色列</string>
+ <string name="Italy">意大利</string>
+ <string name="Jackson, MS">密西西比州杰克逊</string>
+ <string name="Jakarta">雅加达</string>
+ <string name="Japan">日本</string>
+ <string name="Johannesburg">约翰内斯堡</string>
+ <string name="Kiev">基辅</string>
+ <string name="Kyiv">基辅</string>
+ <string name="Latvia">拉脱维亚</string>
+ <string name="Lisbon">里斯本</string>
+ <string name="Ljubljana">卢布尔雅那</string>
+ <string name="London">伦敦</string>
+ <string name="Los Angeles, CA">加利福尼亚州洛杉矶</string>
+ <string name="Louisville, KY">肯塔基州路易斯维尔</string>
+ <string name="Luxembourg">卢森堡</string>
+ <string name="Madrid">马德里</string>
+ <string name="Malmö">马尔默</string>
+ <string name="Manchester">曼彻斯特</string>
+ <string name="Marseille">马赛</string>
+ <string name="McAllen, TX">得克萨斯州麦卡伦</string>
+ <string name="Melbourne">墨尔本</string>
+ <string name="Mexico">墨西哥</string>
+ <string name="Miami, FL">佛罗里达州迈阿密</string>
+ <string name="Milan">米兰</string>
+ <string name="Milwaukee, WI">威斯康星州密尔沃基</string>
+ <string name="Minneapolis/St. Paul Apt, MN">明尼苏达州明尼阿波利斯/圣保罗机场</string>
+ <string name="Moldova">摩尔多瓦</string>
+ <string name="Montreal">蒙特利尔</string>
+ <string name="Netherlands">荷兰</string>
+ <string name="New York, NY">纽约州纽约</string>
+ <string name="New Zealand">新西兰</string>
+ <string name="Nis">尼斯</string>
+ <string name="North Macedonia">北马其顿</string>
+ <string name="Norway">挪威</string>
+ <string name="Oklahoma City, OK">俄克拉何马州俄克拉何马城</string>
+ <string name="Osaka">大阪</string>
+ <string name="Oslo">奥斯陆</string>
+ <string name="Palermo">Palermo</string>
+ <string name="Paris">巴黎</string>
+ <string name="Perth">珀斯</string>
+ <string name="Philadelphia, PA">宾夕法尼亚州费城</string>
+ <string name="Phoenix, AZ">亚利桑那州菲尼克斯</string>
+ <string name="Piscataway, NJ">新泽西州皮斯卡特维</string>
+ <string name="Poland">波兰</string>
+ <string name="Portland, OR">俄勒冈州波特兰</string>
+ <string name="Portugal">葡萄牙</string>
+ <string name="Prague">布拉格</string>
+ <string name="Pune">浦那</string>
+ <string name="Queretaro">克雷塔罗</string>
+ <string name="Raleigh, NC">罗利,北卡罗来纳州</string>
+ <string name="Richmond, VA">弗吉尼亚州里士满</string>
+ <string name="Riga">里加</string>
+ <string name="Romania">罗马尼亚</string>
+ <string name="Rome">罗马</string>
+ <string name="Salt Lake City, UT">犹他州盐湖城</string>
+ <string name="San Francisco, CA">加利福尼亚州旧金山</string>
+ <string name="San Jose, CA">加利福尼亚州圣何塞</string>
+ <string name="Santiago">圣地亚哥</string>
+ <string name="Sao Paulo">圣保罗</string>
+ <string name="Seattle, WA">华盛顿州西雅图</string>
+ <string name="Secaucus, NJ">新泽西州锡考克斯</string>
+ <string name="Serbia">塞尔维亚</string>
+ <string name="Singapore">新加坡</string>
+ <string name="Sioux Falls, SD">南达科他州苏瀑</string>
+ <string name="Skopje">斯科普里</string>
+ <string name="Slovakia">斯洛伐克</string>
+ <string name="Slovenia">斯洛文尼亚</string>
+ <string name="Sofia">索非亚</string>
+ <string name="South Africa">南非</string>
+ <string name="Spain">西班牙</string>
+ <string name="St. Louis, MO">密苏里州圣路易斯</string>
+ <string name="Stamford, CT">康涅狄格州斯坦福</string>
+ <string name="Stavanger">斯塔万格</string>
+ <string name="Stockholm">斯德哥尔摩</string>
+ <string name="Sweden">瑞典</string>
+ <string name="Switzerland">瑞士</string>
+ <string name="Sydney">悉尼</string>
+ <string name="Tallinn">塔林</string>
+ <string name="Tel Aviv">特拉维夫</string>
+ <string name="Thailand">泰国</string>
+ <string name="Tirana">地拉那</string>
+ <string name="Tokyo">东京</string>
+ <string name="Toronto">多伦多</string>
+ <string name="UK">英国</string>
+ <string name="USA">美国</string>
+ <string name="Ukraine">乌克兰</string>
+ <string name="United Arab Emirates">阿拉伯联合酋长国</string>
+ <string name="Valencia">瓦伦西亚</string>
+ <string name="Vancouver">温哥华</string>
+ <string name="Vienna">维也纳</string>
+ <string name="Warsaw">华沙</string>
+ <string name="Washington DC">华盛顿特区</string>
+ <string name="Wien">维也纳</string>
+ <string name="Zagreb">萨格勒布</string>
+ <string name="Zurich">苏黎世</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml-zh-rTW/relay_locations.xml b/android/lib/resource/src/main/res/xml-zh-rTW/relay_locations.xml
new file mode 100644
index 0000000000..5e4742b1ca
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml-zh-rTW/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">阿得雷德</string>
+ <string name="Albania">阿爾巴尼亞</string>
+ <string name="Amsterdam">阿姆斯特丹</string>
+ <string name="Ashburn, VA">維吉尼亞州阿什本</string>
+ <string name="Athens">雅典</string>
+ <string name="Atlanta, GA">喬治亞州,亞特蘭大</string>
+ <string name="Auckland">奧克蘭</string>
+ <string name="Australia">澳大利亞</string>
+ <string name="Austria">奧地利</string>
+ <string name="Bangkok">曼谷</string>
+ <string name="Barcelona">巴塞隆納</string>
+ <string name="Belgium">比利時</string>
+ <string name="Belgrade">貝爾格勒</string>
+ <string name="Berlin">柏林</string>
+ <string name="Bogota">波哥大</string>
+ <string name="Bordeaux">波爾多</string>
+ <string name="Boston, MA">麻州,波士頓</string>
+ <string name="Bratislava">布拉提斯拉瓦</string>
+ <string name="Brazil">巴西</string>
+ <string name="Brisbane">布利斯班</string>
+ <string name="Brussels">布魯塞爾</string>
+ <string name="Bucharest">布加勒斯特</string>
+ <string name="Budapest">布達佩斯</string>
+ <string name="Bulgaria">保加利亞</string>
+ <string name="Calgary">卡加利</string>
+ <string name="Canada">加拿大</string>
+ <string name="Canberra">坎培拉</string>
+ <string name="Charlotte, NC">北卡羅來納州,夏洛特</string>
+ <string name="Chicago, IL">伊利諾州,芝加哥</string>
+ <string name="Chile">智利</string>
+ <string name="Chisinau">奇西瑙</string>
+ <string name="Cleveland, OH">俄亥俄州,克利夫蘭</string>
+ <string name="Colombia">哥倫比亞</string>
+ <string name="Copenhagen">哥本哈根</string>
+ <string name="Croatia">克羅埃西亞</string>
+ <string name="Czech Republic">捷克共和國</string>
+ <string name="Dallas, TX">德州,達拉斯</string>
+ <string name="Denmark">丹麥</string>
+ <string name="Denver, CO">科羅拉多州,丹佛</string>
+ <string name="Detroit, MI">密西根州底特律</string>
+ <string name="Dubai">杜拜</string>
+ <string name="Dublin">都柏林</string>
+ <string name="Dusseldorf">杜塞道夫</string>
+ <string name="Estonia">愛沙尼亞</string>
+ <string name="Finland">芬蘭</string>
+ <string name="France">法國</string>
+ <string name="Frankfurt">法蘭克福</string>
+ <string name="Germany">德國</string>
+ <string name="Glasgow">格拉斯哥</string>
+ <string name="Gothenburg">哥特堡</string>
+ <string name="Greece">希臘</string>
+ <string name="Helsingborg">赫爾辛堡</string>
+ <string name="Helsinki">赫爾辛基</string>
+ <string name="Hong Kong">香港</string>
+ <string name="Honolulu, HI">夏威夷州,檀香山</string>
+ <string name="Houston, TX">德克薩斯州休士頓</string>
+ <string name="Hungary">匈牙利</string>
+ <string name="India">印度</string>
+ <string name="Indonesia">印尼</string>
+ <string name="Ireland">愛爾蘭</string>
+ <string name="Israel">以色列</string>
+ <string name="Italy">義大利</string>
+ <string name="Jackson, MS">密西西比州,傑克遜</string>
+ <string name="Jakarta">雅加達</string>
+ <string name="Japan">日本</string>
+ <string name="Johannesburg">約翰尼斯堡</string>
+ <string name="Kiev">基輔</string>
+ <string name="Kyiv">基輔</string>
+ <string name="Latvia">拉脫維亞</string>
+ <string name="Lisbon">里斯本</string>
+ <string name="Ljubljana">盧比安納</string>
+ <string name="London">倫敦</string>
+ <string name="Los Angeles, CA">加州,洛杉磯</string>
+ <string name="Louisville, KY">肯塔基州,路易維爾</string>
+ <string name="Luxembourg">盧森堡</string>
+ <string name="Madrid">馬德里</string>
+ <string name="Malmö">馬爾默</string>
+ <string name="Manchester">曼徹斯特</string>
+ <string name="Marseille">馬賽</string>
+ <string name="McAllen, TX">德州麥克亞連</string>
+ <string name="Melbourne">墨爾本</string>
+ <string name="Mexico">墨西哥</string>
+ <string name="Miami, FL">佛羅里達州,邁阿密</string>
+ <string name="Milan">米蘭</string>
+ <string name="Milwaukee, WI">威斯康辛州,密爾瓦基</string>
+ <string name="Minneapolis/St. Paul Apt, MN">明尼蘇達州,明尼亞波利斯/聖保羅機場</string>
+ <string name="Moldova">摩爾多瓦</string>
+ <string name="Montreal">蒙特婁</string>
+ <string name="Netherlands">荷蘭</string>
+ <string name="New York, NY">紐約州,紐約市</string>
+ <string name="New Zealand">紐西蘭</string>
+ <string name="Nis">尼斯</string>
+ <string name="North Macedonia">北馬其頓</string>
+ <string name="Norway">挪威</string>
+ <string name="Oklahoma City, OK">奧克拉荷馬州,奧克拉荷馬市</string>
+ <string name="Osaka">大阪</string>
+ <string name="Oslo">奧斯陸</string>
+ <string name="Palermo">Palermo</string>
+ <string name="Paris">巴黎</string>
+ <string name="Perth">伯斯</string>
+ <string name="Philadelphia, PA">賓夕法尼亞州,費城</string>
+ <string name="Phoenix, AZ">亞利桑那州,鳳凰城</string>
+ <string name="Piscataway, NJ">紐澤西州,皮斯卡特維</string>
+ <string name="Poland">波蘭</string>
+ <string name="Portland, OR">俄勒岡州,波特蘭</string>
+ <string name="Portugal">葡萄牙</string>
+ <string name="Prague">布拉格</string>
+ <string name="Pune">浦那</string>
+ <string name="Queretaro">克雷塔羅</string>
+ <string name="Raleigh, NC">羅利,NC</string>
+ <string name="Richmond, VA">維吉尼亞州,里奇蒙</string>
+ <string name="Riga">里加</string>
+ <string name="Romania">羅馬尼亞</string>
+ <string name="Rome">羅馬</string>
+ <string name="Salt Lake City, UT">猶他州,鹽湖城</string>
+ <string name="San Francisco, CA">加州,舊金山</string>
+ <string name="San Jose, CA">加州,聖荷西</string>
+ <string name="Santiago">聖地亞哥</string>
+ <string name="Sao Paulo">聖保羅</string>
+ <string name="Seattle, WA">華盛頓州,西雅圖</string>
+ <string name="Secaucus, NJ">紐澤西州,錫考克斯</string>
+ <string name="Serbia">塞爾維亞</string>
+ <string name="Singapore">新加坡</string>
+ <string name="Sioux Falls, SD">南達科他州,蘇瀑</string>
+ <string name="Skopje">斯高彼亞</string>
+ <string name="Slovakia">斯洛伐克</string>
+ <string name="Slovenia">斯洛維尼亞</string>
+ <string name="Sofia">索菲亞</string>
+ <string name="South Africa">南非</string>
+ <string name="Spain">西班牙</string>
+ <string name="St. Louis, MO">密蘇里州,聖路易</string>
+ <string name="Stamford, CT">康乃狄克州,斯坦福</string>
+ <string name="Stavanger">斯塔萬格</string>
+ <string name="Stockholm">斯德哥爾摩</string>
+ <string name="Sweden">瑞典</string>
+ <string name="Switzerland">瑞士</string>
+ <string name="Sydney">雪梨</string>
+ <string name="Tallinn">塔林</string>
+ <string name="Tel Aviv">特拉維夫</string>
+ <string name="Thailand">泰國</string>
+ <string name="Tirana">地拉那</string>
+ <string name="Tokyo">東京</string>
+ <string name="Toronto">多倫多</string>
+ <string name="UK">英國</string>
+ <string name="USA">美國</string>
+ <string name="Ukraine">烏克蘭</string>
+ <string name="United Arab Emirates">阿拉伯聯合大公國</string>
+ <string name="Valencia">瓦倫西亞</string>
+ <string name="Vancouver">溫哥華</string>
+ <string name="Vienna">維也納</string>
+ <string name="Warsaw">華沙</string>
+ <string name="Washington DC">華盛頓特區</string>
+ <string name="Wien">維也納</string>
+ <string name="Zagreb">薩格勒布</string>
+ <string name="Zurich">蘇黎世</string>
+</resources>
diff --git a/android/lib/resource/src/main/res/xml/relay_locations.xml b/android/lib/resource/src/main/res/xml/relay_locations.xml
new file mode 100644
index 0000000000..e11438dccd
--- /dev/null
+++ b/android/lib/resource/src/main/res/xml/relay_locations.xml
@@ -0,0 +1,158 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <string name="Adelaide">Adelaide</string>
+ <string name="Albania">Albania</string>
+ <string name="Amsterdam">Amsterdam</string>
+ <string name="Ashburn, VA">Ashburn, VA</string>
+ <string name="Athens">Athens</string>
+ <string name="Atlanta, GA">Atlanta, GA</string>
+ <string name="Auckland">Auckland</string>
+ <string name="Australia">Australia</string>
+ <string name="Austria">Austria</string>
+ <string name="Bangkok">Bangkok</string>
+ <string name="Barcelona">Barcelona</string>
+ <string name="Belgium">Belgium</string>
+ <string name="Belgrade">Belgrade</string>
+ <string name="Berlin">Berlin</string>
+ <string name="Bogota">Bogota</string>
+ <string name="Bordeaux">Bordeaux</string>
+ <string name="Boston, MA">Boston, MA</string>
+ <string name="Bratislava">Bratislava</string>
+ <string name="Brazil">Brazil</string>
+ <string name="Brisbane">Brisbane</string>
+ <string name="Brussels">Brussels</string>
+ <string name="Bucharest">Bucharest</string>
+ <string name="Budapest">Budapest</string>
+ <string name="Bulgaria">Bulgaria</string>
+ <string name="Calgary">Calgary</string>
+ <string name="Canada">Canada</string>
+ <string name="Canberra">Canberra</string>
+ <string name="Charlotte, NC">Charlotte, NC</string>
+ <string name="Chicago, IL">Chicago, IL</string>
+ <string name="Chile">Chile</string>
+ <string name="Chisinau">Chisinau</string>
+ <string name="Cleveland, OH">Cleveland, OH</string>
+ <string name="Colombia">Colombia</string>
+ <string name="Copenhagen">Copenhagen</string>
+ <string name="Croatia">Croatia</string>
+ <string name="Czech Republic">Czech Republic</string>
+ <string name="Dallas, TX">Dallas, TX</string>
+ <string name="Denmark">Denmark</string>
+ <string name="Denver, CO">Denver, CO</string>
+ <string name="Detroit, MI">Detroit, MI</string>
+ <string name="Dubai">Dubai</string>
+ <string name="Dublin">Dublin</string>
+ <string name="Dusseldorf">Dusseldorf</string>
+ <string name="Estonia">Estonia</string>
+ <string name="Finland">Finland</string>
+ <string name="France">France</string>
+ <string name="Frankfurt">Frankfurt</string>
+ <string name="Germany">Germany</string>
+ <string name="Glasgow">Glasgow</string>
+ <string name="Gothenburg">Gothenburg</string>
+ <string name="Greece">Greece</string>
+ <string name="Helsingborg">Helsingborg</string>
+ <string name="Helsinki">Helsinki</string>
+ <string name="Hong Kong">Hong Kong</string>
+ <string name="Honolulu, HI">Honolulu, HI</string>
+ <string name="Houston, TX">Houston, TX</string>
+ <string name="Hungary">Hungary</string>
+ <string name="India">India</string>
+ <string name="Indonesia">Indonesia</string>
+ <string name="Ireland">Ireland</string>
+ <string name="Israel">Israel</string>
+ <string name="Italy">Italy</string>
+ <string name="Jackson, MS">Jackson, MS</string>
+ <string name="Jakarta">Jakarta</string>
+ <string name="Japan">Japan</string>
+ <string name="Johannesburg">Johannesburg</string>
+ <string name="Kiev">Kiev</string>
+ <string name="Kyiv">Kyiv</string>
+ <string name="Latvia">Latvia</string>
+ <string name="Lisbon">Lisbon</string>
+ <string name="Ljubljana">Ljubljana</string>
+ <string name="London">London</string>
+ <string name="Los Angeles, CA">Los Angeles, CA</string>
+ <string name="Louisville, KY">Louisville, KY</string>
+ <string name="Luxembourg">Luxembourg</string>
+ <string name="Madrid">Madrid</string>
+ <string name="Malmö">Malmö</string>
+ <string name="Manchester">Manchester</string>
+ <string name="Marseille">Marseille</string>
+ <string name="McAllen, TX">McAllen, TX</string>
+ <string name="Melbourne">Melbourne</string>
+ <string name="Mexico">Mexico</string>
+ <string name="Miami, FL">Miami, FL</string>
+ <string name="Milan">Milan</string>
+ <string name="Milwaukee, WI">Milwaukee, WI</string>
+ <string name="Minneapolis/St. Paul Apt, MN">Minneapolis/St. Paul Apt, MN</string>
+ <string name="Moldova">Moldova</string>
+ <string name="Montreal">Montreal</string>
+ <string name="Netherlands">Netherlands</string>
+ <string name="New York, NY">New York, NY</string>
+ <string name="New Zealand">New Zealand</string>
+ <string name="Nis">Nis</string>
+ <string name="North Macedonia">North Macedonia</string>
+ <string name="Norway">Norway</string>
+ <string name="Oklahoma City, OK">Oklahoma City, OK</string>
+ <string name="Osaka">Osaka</string>
+ <string name="Oslo">Oslo</string>
+ <string name="Palermo">Palermo</string>
+ <string name="Paris">Paris</string>
+ <string name="Perth">Perth</string>
+ <string name="Philadelphia, PA">Philadelphia, PA</string>
+ <string name="Phoenix, AZ">Phoenix, AZ</string>
+ <string name="Piscataway, NJ">Piscataway, NJ</string>
+ <string name="Poland">Poland</string>
+ <string name="Portland, OR">Portland, OR</string>
+ <string name="Portugal">Portugal</string>
+ <string name="Prague">Prague</string>
+ <string name="Pune">Pune</string>
+ <string name="Queretaro">Queretaro</string>
+ <string name="Raleigh, NC">Raleigh, NC</string>
+ <string name="Richmond, VA">Richmond, VA</string>
+ <string name="Riga">Riga</string>
+ <string name="Romania">Romania</string>
+ <string name="Rome">Rome</string>
+ <string name="Salt Lake City, UT">Salt Lake City, UT</string>
+ <string name="San Francisco, CA">San Francisco, CA</string>
+ <string name="San Jose, CA">San Jose, CA</string>
+ <string name="Santiago">Santiago</string>
+ <string name="Sao Paulo">Sao Paulo</string>
+ <string name="Seattle, WA">Seattle, WA</string>
+ <string name="Secaucus, NJ">Secaucus, NJ</string>
+ <string name="Serbia">Serbia</string>
+ <string name="Singapore">Singapore</string>
+ <string name="Sioux Falls, SD">Sioux Falls, SD</string>
+ <string name="Skopje">Skopje</string>
+ <string name="Slovakia">Slovakia</string>
+ <string name="Slovenia">Slovenia</string>
+ <string name="Sofia">Sofia</string>
+ <string name="South Africa">South Africa</string>
+ <string name="Spain">Spain</string>
+ <string name="St. Louis, MO">St. Louis, MO</string>
+ <string name="Stamford, CT">Stamford, CT</string>
+ <string name="Stavanger">Stavanger</string>
+ <string name="Stockholm">Stockholm</string>
+ <string name="Sweden">Sweden</string>
+ <string name="Switzerland">Switzerland</string>
+ <string name="Sydney">Sydney</string>
+ <string name="Tallinn">Tallinn</string>
+ <string name="Tel Aviv">Tel Aviv</string>
+ <string name="Thailand">Thailand</string>
+ <string name="Tirana">Tirana</string>
+ <string name="Tokyo">Tokyo</string>
+ <string name="Toronto">Toronto</string>
+ <string name="UK">UK</string>
+ <string name="USA">USA</string>
+ <string name="Ukraine">Ukraine</string>
+ <string name="United Arab Emirates">United Arab Emirates</string>
+ <string name="Valencia">Valencia</string>
+ <string name="Vancouver">Vancouver</string>
+ <string name="Vienna">Vienna</string>
+ <string name="Warsaw">Warsaw</string>
+ <string name="Washington DC">Washington DC</string>
+ <string name="Wien">Wien</string>
+ <string name="Zagreb">Zagreb</string>
+ <string name="Zurich">Zurich</string>
+</resources>
diff --git a/android/lib/shared/build.gradle.kts b/android/lib/shared/build.gradle.kts
index 68078c0a6a..a6cb6ef371 100644
--- a/android/lib/shared/build.gradle.kts
+++ b/android/lib/shared/build.gradle.kts
@@ -28,6 +28,7 @@ android {
}
dependencies {
+ implementation(projects.lib.resource)
implementation(projects.lib.common)
implementation(projects.lib.daemonGrpc)
implementation(projects.lib.model)
diff --git a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxy.kt b/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxy.kt
index 6ea373e426..13d668b65b 100644
--- a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxy.kt
+++ b/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxy.kt
@@ -3,14 +3,36 @@ package net.mullvad.mullvadvpn.lib.shared
import arrow.core.Either
import arrow.core.raise.either
import arrow.core.raise.ensure
+import kotlinx.coroutines.flow.combine
import net.mullvad.mullvadvpn.lib.daemon.grpc.ManagementService
import net.mullvad.mullvadvpn.lib.model.ConnectError
+import net.mullvad.mullvadvpn.lib.model.GeoIpLocation
+import net.mullvad.mullvadvpn.lib.model.TunnelState
class ConnectionProxy(
private val managementService: ManagementService,
+ translationRepository: RelayLocationTranslationRepository,
private val vpnPermissionRepository: VpnPermissionRepository
) {
- val tunnelState = managementService.tunnelState
+ val tunnelState =
+ combine(managementService.tunnelState, translationRepository.translations) {
+ tunnelState,
+ translations ->
+ tunnelState.translateLocations(translations)
+ }
+
+ private fun TunnelState.translateLocations(translations: Map<String, String>): TunnelState {
+ return when (this) {
+ is TunnelState.Connecting -> copy(location = location?.translate(translations))
+ is TunnelState.Disconnected -> copy(location = location?.translate(translations))
+ is TunnelState.Disconnecting -> this
+ is TunnelState.Error -> this
+ is TunnelState.Connected -> copy(location = location?.translate(translations))
+ }
+ }
+
+ private fun GeoIpLocation.translate(translations: Map<String, String>): GeoIpLocation =
+ copy(city = translations[city] ?: city, country = translations[country] ?: country)
suspend fun connect(): Either<ConnectError, Boolean> = either {
ensure(vpnPermissionRepository.hasVpnPermission()) { ConnectError.NoVpnPermission }
diff --git a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/LocaleRepository.kt b/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/LocaleRepository.kt
new file mode 100644
index 0000000000..4e5628d214
--- /dev/null
+++ b/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/LocaleRepository.kt
@@ -0,0 +1,19 @@
+package net.mullvad.mullvadvpn.lib.shared
+
+import android.content.res.Resources
+import co.touchlab.kermit.Logger
+import java.util.Locale
+import kotlin.also
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+
+class LocaleRepository(val resources: Resources) {
+ private val _currentLocale = MutableStateFlow(getLocale())
+ val currentLocale: StateFlow<Locale?> = _currentLocale
+
+ private fun getLocale(): Locale? = resources.configuration.locales.get(0)
+
+ fun refreshLocale() {
+ _currentLocale.value = getLocale().also { Logger.d("New locale: $it") }
+ }
+}
diff --git a/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/RelayLocationTranslationRepository.kt b/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/RelayLocationTranslationRepository.kt
new file mode 100644
index 0000000000..edaa0c1ebc
--- /dev/null
+++ b/android/lib/shared/src/main/kotlin/net/mullvad/mullvadvpn/lib/shared/RelayLocationTranslationRepository.kt
@@ -0,0 +1,61 @@
+package net.mullvad.mullvadvpn.lib.shared
+
+import android.content.Context
+import android.content.res.XmlResourceParser
+import co.touchlab.kermit.Logger
+import java.util.Locale
+import kotlin.collections.set
+import kotlin.collections.toMap
+import kotlinx.coroutines.CoroutineDispatcher
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.MainScope
+import kotlinx.coroutines.flow.SharingStarted
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.filterNotNull
+import kotlinx.coroutines.flow.map
+import kotlinx.coroutines.flow.stateIn
+import kotlinx.coroutines.withContext
+
+typealias Translations = Map<String, String>
+
+class RelayLocationTranslationRepository(
+ val context: Context,
+ val localeRepository: LocaleRepository,
+ externalScope: CoroutineScope = MainScope(),
+ val dispatcher: CoroutineDispatcher = Dispatchers.IO
+) {
+ val translations: StateFlow<Translations> =
+ localeRepository.currentLocale
+ .filterNotNull()
+ .map { loadTranslations(it) }
+ .stateIn(externalScope, SharingStarted.Eagerly, emptyMap())
+
+ private suspend fun loadTranslations(locale: Locale): Translations =
+ withContext(dispatcher) {
+ Logger.d("Updating translations based on $locale")
+ if (locale.language == DEFAULT_LANGUAGE) emptyMap()
+ else {
+ // Load current translations
+ val xml = context.resources.getXml(R.xml.relay_locations)
+ xml.loadRelayTranslation()
+ }
+ }
+
+ private fun XmlResourceParser.loadRelayTranslation(): Map<String, String> {
+ val translation = mutableMapOf<String, String>()
+ while (this.eventType != XmlResourceParser.END_DOCUMENT) {
+ if (this.eventType == XmlResourceParser.START_TAG && this.name == "string") {
+ val key = this.getAttributeValue(null, "name")
+ val value = this.nextText()
+ translation[key] = value
+ }
+ this.next()
+ }
+ return translation.toMap()
+ }
+
+ companion object {
+ private const val DEFAULT_LANGUAGE = "en"
+ }
+}
diff --git a/android/lib/shared/src/test/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxyTest.kt b/android/lib/shared/src/test/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxyTest.kt
index 74ab4f6b64..138d0f5a41 100644
--- a/android/lib/shared/src/test/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxyTest.kt
+++ b/android/lib/shared/src/test/kotlin/net/mullvad/mullvadvpn/lib/shared/ConnectionProxyTest.kt
@@ -13,11 +13,14 @@ class ConnectionProxyTest {
private val mockManagementService: ManagementService = mockk(relaxed = true)
private val mockVpnPermissionRepository: VpnPermissionRepository = mockk()
+ private val mockTranslationRepository: RelayLocationTranslationRepository =
+ mockk(relaxed = true)
private val connectionProxy: ConnectionProxy =
ConnectionProxy(
managementService = mockManagementService,
- vpnPermissionRepository = mockVpnPermissionRepository
+ vpnPermissionRepository = mockVpnPermissionRepository,
+ translationRepository = mockTranslationRepository
)
@Test
diff --git a/android/translations-converter/src/main.rs b/android/translations-converter/src/main.rs
index afb760f899..7a340d7483 100644
--- a/android/translations-converter/src/main.rs
+++ b/android/translations-converter/src/main.rs
@@ -35,6 +35,7 @@ mod android;
mod gettext;
mod normalize;
+use crate::gettext::MsgValue;
use crate::normalize::Normalize;
use std::{
collections::HashMap,
@@ -121,8 +122,8 @@ fn main() {
for message in template {
match message.value {
- gettext::MsgValue::Invariant(_) => missing_translations.remove(&message.id.normalize()),
- gettext::MsgValue::Plural { .. } => missing_plurals.remove(&message.id.normalize()),
+ MsgValue::Invariant(_) => missing_translations.remove(&message.id.normalize()),
+ MsgValue::Plural { .. } => missing_plurals.remove(&message.id.normalize()),
};
}
@@ -182,7 +183,7 @@ fn main() {
gettext::MsgEntry {
id,
- value: gettext::MsgValue::Plural {
+ value: MsgValue::Plural {
plural_id,
values: vec![gettext::MsgString::empty(), gettext::MsgString::empty()],
},
@@ -191,6 +192,65 @@ fn main() {
)
.expect("Failed to append missing plural translations to message template file");
}
+
+ // Generate all relay locale files
+
+ let relay_template_path = locale_dir.join("relay-locations.pot");
+
+ let default_translations = gettext::Messages::from_file(&relay_template_path)
+ .expect("Failed to load translations for a locale");
+
+ let resources_dir = Path::new("../lib/resource/src/main/res");
+
+ let relay_locations_path = resources_dir.join("xml/relay_locations.xml");
+
+ let mut localized_strings = android::StringResources::new();
+ for translation in default_translations {
+ match translation.value {
+ MsgValue::Invariant(_) => {
+ if !translation.id.is_empty() {
+ localized_strings.push(android::StringResource::new(
+ translation.id.normalize(),
+ &translation.id.normalize(),
+ ));
+ }
+ }
+ MsgValue::Plural { .. } => {}
+ }
+ }
+
+ localized_strings.sort();
+
+ fs::write(relay_locations_path, localized_strings.to_string())
+ .expect("Failed to create Android locale file");
+
+ let relay_locale_files = fs::read_dir(locale_dir)
+ .expect("Failed to open root locale directory")
+ .filter_map(|dir_entry_result| dir_entry_result.ok())
+ .map(|dir_entry| dir_entry.path())
+ .filter(|dir_entry_path| dir_entry_path.is_dir())
+ .map(|dir_path| dir_path.join("relay-locations.po"))
+ .filter(|file_path| file_path.exists());
+
+ for relay_file in relay_locale_files {
+ let locale = relay_file
+ .parent()
+ .unwrap()
+ .file_name()
+ .unwrap()
+ .to_str()
+ .unwrap();
+ let destination_dir = resources_dir.join(android_xml_directory(locale));
+
+ if !destination_dir.exists() {
+ fs::create_dir(&destination_dir).expect("Failed to create Android locale directory");
+ }
+
+ let translations = gettext::Messages::from_file(&relay_file)
+ .expect("Failed to load translations for a locale");
+
+ generate_relay_translations(translations, destination_dir.join("relay_locations.xml"));
+ }
}
/// Determines the localized value resources directory name based on a locale specification.
@@ -211,6 +271,49 @@ fn android_locale_directory(locale: &str) -> String {
directory
}
+/// Determines the localized value resources directory name based on a locale specification.
+///
+/// This just makes sure a locale such as `en-US' gets correctly mapped to the directory name
+/// `xml-en-rUS`.
+fn android_xml_directory(locale: &str) -> String {
+ let mut directory = String::from("xml-");
+ let mut parts = locale.split('-');
+
+ directory.push_str(parts.next().unwrap());
+
+ if let Some(region) = parts.next() {
+ directory.push_str("-r");
+ directory.push_str(region);
+ }
+
+ directory
+}
+
+/// Generate translated Android relay resource strings for a locale.
+fn generate_relay_translations(
+ translations: gettext::Messages,
+ strings_output_path: impl AsRef<Path>,
+) {
+ let mut localized_strings = android::StringResources::new();
+
+ for translation in translations {
+ match translation.value {
+ MsgValue::Invariant(translation_value) => {
+ localized_strings.push(android::StringResource::new(
+ translation.id.normalize(),
+ &translation_value.normalize(),
+ ));
+ }
+ MsgValue::Plural { .. } => {}
+ }
+ }
+
+ localized_strings.sort();
+
+ fs::write(strings_output_path, localized_strings.to_string())
+ .expect("Failed to create Android locale file");
+}
+
/// Generate translated Android resource strings for a locale.
///
/// Based on the gettext translated message entries, it finds the messages with message IDs that
@@ -238,7 +341,7 @@ fn generate_translations(
for translation in translations {
match translation.value {
- gettext::MsgValue::Invariant(translation_value) => {
+ MsgValue::Invariant(translation_value) => {
if let Some(android_key) = known_strings.remove(&translation.id.normalize()) {
localized_strings.push(android::StringResource::new(
android_key,
@@ -246,7 +349,7 @@ fn generate_translations(
));
}
}
- gettext::MsgValue::Plural { values, .. } => {
+ MsgValue::Plural { values, .. } => {
if let Some(android_key) = known_plurals.remove(&translation.id.normalize()) {
let values = values.into_iter().map(|message| message.normalize());