diff --git a/app/build.gradle b/app/build.gradle index 4455c756e..47909d9b9 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -46,7 +46,7 @@ android { defaultConfig { // We have to list all translated languages here, because some of our libs have bogus languages that google play // doesn't like and we need to strip them (gr) - resConfigs "cs", "de", "el", "en", "es", "fi", "fr", "ga", "ht", "it", "ja", "nl", "pt", "ru", "sk", "sl", "sq", "sv", "tr", "zh" + resConfigs "cs", "de", "el", "en", "es", "fi", "fr", "ga", "ht", "it", "ja", "nl", "no", "pt", "ro", "ru", "sk", "sl", "sq", "sv", "tr", "zh" // Needed to make mapbox work inside the firebase testlab - FIXME, alas, still doesn't work ndk { diff --git a/app/src/main/java/com/geeksville/mesh/model/UIState.kt b/app/src/main/java/com/geeksville/mesh/model/UIState.kt index 1a260136f..a673dd6e8 100644 --- a/app/src/main/java/com/geeksville/mesh/model/UIState.kt +++ b/app/src/main/java/com/geeksville/mesh/model/UIState.kt @@ -20,17 +20,18 @@ import com.geeksville.mesh.service.MeshService /// that user. If the original name is only one word, strip vowels from the original name and if the result is /// 3 or more characters, use the first three characters. If not, just take the first 3 characters of the /// original name. -fun getInitials(name: String): String { +fun getInitials(nameIn: String): String { val nchars = 3 val minchars = 2 + val name = nameIn.trim() val words = name.split(Regex("\\s+")).filter { it.isNotEmpty() } val initials = when (words.size) { - in 0..minchars-1 -> { + in 0..minchars - 1 -> { val nm = name.filterNot { c -> c.toLowerCase() in "aeiou" } if (nm.length >= nchars) nm else name } - else -> words.map{ it.first() }.joinToString("") + else -> words.map { it.first() }.joinToString("") } return initials.take(nchars) } diff --git a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt index 816025b7e..24a732b92 100644 --- a/app/src/main/java/com/geeksville/mesh/service/MeshService.kt +++ b/app/src/main/java/com/geeksville/mesh/service/MeshService.kt @@ -278,11 +278,18 @@ class MeshService : Service(), Logging { warnUserAboutLocation() } is ApiException -> - if (exception.statusCode == 17) { - // error: cancelled by user - errormsg("User cancelled location access", exception) - } else { - Exceptions.report(exception) + when (exception.statusCode) { + 17 -> + // error: cancelled by user + errormsg("User cancelled location access", exception) + 8502 -> + // error: settings change unavailable + errormsg( + "Settings-change-unavailable, user disabled location access (globally?)", + exception + ) + else -> + Exceptions.report(exception) } else -> Exceptions.report(exception) diff --git a/app/src/main/res/values-no/strings.xml b/app/src/main/res/values-no/strings.xml new file mode 100644 index 000000000..4795d769e --- /dev/null +++ b/app/src/main/res/values-no/strings.xml @@ -0,0 +1,75 @@ + + + Innstillinger + Kanal Navn + Kanal valg + Delingsknapp + QR kode + Lås opp + Tilkoblingsstatus + applikasjon ikon + Ukjent Brukernavn + Bruker symbol + hei, jeg fant skatten, den er like ved den store tigeren. Jeg er litt redd. + Send Tekst + Du har ikke paret en Meshtastic kompatibel radio med denne telefonen. Vennligst parr en enhet, og sett ditt brukernavn.\n\nDenne åpen kildekode applikasjonen er i alfa-testing, Hvis du finner problemer, vennligst post på vårt forum: meshtastic.discourse.group.\n\nFor mer informasjon, se vår nettside - www.meshtastic.org. + Brukernavn ikke satt + Ditt Navn + Anonym brukerstatistikk og kræsjrapporter. + Ser etter Meshtastic enheter... + Meshtastic_ac23 + Meshtastic_1267 + Denne applikasjonen krever blåtann tilgang.Vennligst gi tilgang i android instillinger. + Feil - denne app krever blåtann + Starter paring + Paring feilet + En URL for å bli med i et Meshtastic nett + Godta + Avbrytl + Endre kanal + Er du sikker på at du vil endre kanalen? All kommunikasjon med andre noder vil stanse, intill du deler de nye kanalinstillingene. + Ny kanal URL mottatt + Vil du bytte til \'%s\' kanal? + Du har slått av analytics. Desverre krever kartleverandøren vår (mapbox) at analytics er slått på for deres \'grtis\' plan. Så vi har slått av kartvisning.\n\n + Hvis du vil se kartet, må du slå på analytics i instillingspanelet (også, for øyeblikket, må du kanskje tvangsstoppe og restarte applikasjonen).\n\n + Hvis du er interessert i at vi betaler for mapbox(eller bytter kartleveradøt), vennligst post i meshtastic.discourse.group + En påkrevet tilgang mangler, Meshtastic vil ikke fungere korrekt. Vennligst slå på i Android appliksjonsinstillinger. + Radio sov.kunne ikke endre kanal + Rapporter Feil + Rapporter en feil + Er du sikker på at du vil rapportere en feil? Etter rapportering, vennligst posti meshtastic.discourse.group så vi kan matche rapporten med hva du fant + Rapport + Velg radio + Du er nå paret med radio %s + Du har ikke paret med en radio ennå + Endre radio + Venligst par enhet i Android instillinger. + Paring fullført, starter tjeneste + Paring feilet, vennligst velg igjen + Lokasjonstilgang er slått av,kan ikke gi posisjon til mesh. + Del + Frakoblet + Enhet sover + Tilkoblet: %s av %s på nett + En liste over noder i nettverket + Oppdater Firmware + Tilkoblet radio + Tilkoblet til radio (%s) + Ikke tilkoblet. velg radio nedenfor + Tilkoblet radio, men den sover + Oppdater til %s + Applikasjon for gammel + Du må oppdatere denne applikasjonen på Google Play store (eller Github). Den er for gammel til å snakke med denne radioen. + Ingen (slå av) + Kort rekkevidde (men rask) + Medium rekkevidde (men rask) + Lang rekkevidde (men langsommerer) + Veldig lang rekkevidde (men langsom) + IKKE GJENKJENT + Meshtastic Tjeneste meldinger + Du må slå på (høy presisjon) lokasjonstjenester i Android Innstillinger + Om + En liste over noder i nettet + Tekstmeldinger + Denne kanall URL er ugyldig og kan ikke benyttes + \ No newline at end of file diff --git a/app/src/main/res/values-ro/strings.xml b/app/src/main/res/values-ro/strings.xml new file mode 100644 index 000000000..ebd32f23e --- /dev/null +++ b/app/src/main/res/values-ro/strings.xml @@ -0,0 +1,73 @@ + + + Setări + Numele Canalului + Opțiunile Canalului + Buton de share + Cod QR + Nesetat + Statusul conexiunii + Iconița aplicației + Username Necunoscut + Avatar + hey am găsit cache-ul, este chiar aici lângă marele tigru. Mi-e cam frică. + Trimite textul + Nu conectat vre-un dispozitiv care suportă Meshtastic cu acest telefon. Te rog, conectează un dispozitiv cu acest telefon.\n\n Acesta aplicație open-source se află în alpha-testing, dacă întâmpini probleme contactează-ne: meshtastic.discourse.group.\n\nPentru mai multe informații: - www.meshtastic.org. + Username nesetat + Numele tău + Trimite în mod anonim statistici de utilizare și reporturi de crash. + Caut dispozitive Meshtastic... + Această aplicație necesită access la bluetooth. Te rog acordă accesul în setările telefonului. + Eroare - această aplicație necesită bluetooth + Încep să mă conectez + Conectare eșuată + Un URL pentru a intră în rețeaua Meshtastic + Accept + Renunta + Schimbă canalul + Ești sigur că vrei să schimbi canalul? Toate comunicațiile cu alte noduri vor fi oprite până când setezi aceleași detalii pe alte noduri. + Am primit un nou URL de canal + Vrei să faci schimbul \'%s\' canalului? + Ai analiticele dezactivate. Din nefericire providerul hărților (mapbox) necesită analitice în planul \'gratuit\'. Așadar am dezactivat harta.\n\n + Dacă vrei să vezi harta, trebuie să pornești analiticele în panoul de setări (s-ar putea să fii nevoit să restartezi aplicația).\n\n + Dacă sugerezi să plătim pentru mapbox (sau să schimbăm providerul hărții), te rog, postează în meshtastic.discourse.group + O permisiune necesară lipsește, Meshtastic nu o să funcționeze corespunzător. Te rugăm activează-o în setările Android. + Nu am putut să schimb canalul deoarece dispozitivul era în sleep mode + Raportează Bug + Raportează un bug + Ești sigur că vrei să raportezi un bug? După ce ai raportat, te rog postează în meshtastic.discourse.group că să reușim să potrivim reportul tău cu ce ai găsit. + Raportare + Selectează un dispozitiv + Ești conectat la dispozitiv-ul %s + Nu ai conectat un dispozitiv încă. + Schimbă dispozitivul + Te rog connecteaza dispozitivul în setările Android. + Conectare reușită, începem serviciul + Conectare eșuată, te rog reselecteaza + Accesul locației este dezactivat, nu putem furniza locația ta la rețea. + Distribuie + Deconectat + Dispozitiv în sleep mode + Connectat: %s din %s online + O lista cu nodurile din rețea + Updateaza firmware-ul + Connectat la dispozitiv + Conectat la dispozitivul (%s) + Neconectat, selectează dispozitivul din lista de jos + Connectat la dispozitivi, dar e în modul de sleep + Updateaza către %s + Aplicație prea veche + Trebuie să updatezi această aplicație de pe Google Play (sau Github). Aplicația este prea veche pentru a comunica cu dispozitivul. + Niciunul (dezactivat) + Rază scurtă (comunicare rapidă) + Rază medie (comunicare rapidă) + Rază lungă (încet) + Rază foarte lungă (încet) + NERECUNOSCUT + Notificările Sistemului Meshtastic + Trepuie să pornești serviciile de locație (de high accuracy) în setările Android + Despre + O lista cu nodurile din rețea + Mesaje Text + Acest URL de canal este invalid și nu poate fi folosit + \ No newline at end of file diff --git a/app/src/test/java/com/geeksville/mesh/ui/UIUnitTest.kt b/app/src/test/java/com/geeksville/mesh/ui/UIUnitTest.kt index 24ab9800b..6d5f56317 100644 --- a/app/src/test/java/com/geeksville/mesh/ui/UIUnitTest.kt +++ b/app/src/test/java/com/geeksville/mesh/ui/UIUnitTest.kt @@ -12,8 +12,11 @@ import org.junit.Test class UIUnitTest { @Test fun initialsGood() { - Assert.assertEquals(getInitials("Kevin Hester"), "KH") - Assert.assertEquals(getInitials(" Kevin Hester Lesser Cat "), "KHL") - Assert.assertEquals(getInitials(" "), "") + Assert.assertEquals("KH", getInitials("Kevin Hester")) + Assert.assertEquals("KHL", getInitials(" Kevin Hester Lesser Cat ")) + Assert.assertEquals("", getInitials(" ")) + Assert.assertEquals("gks", getInitials("geeksville")) + Assert.assertEquals("gee", getInitials("geek")) + Assert.assertEquals("gks", getInitials("geeks")) } }