Skip to content

Commit 884c2c4

Browse files
Merge pull request #7 from word-view/find-language-by-locale
Find language by locale
2 parents e48b288 + a41cce6 commit 884c2c4

3 files changed

Lines changed: 49 additions & 5 deletions

File tree

pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
<groupId>cc.wordview.gengolex</groupId>
88
<artifactId>Gengolex</artifactId>
9-
<version>2.5.3</version>
9+
<version>2.5.4</version>
1010

1111
<properties>
1212
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

src/main/kotlin/cc/wordview/gengolex/Language.kt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,5 +26,14 @@ enum class Language(val tag: String, val dictionaryName: String, val tokenizer:
2626

2727
throw LanguageNotFoundException("Unable to find a language for the tag: $tag")
2828
}
29+
30+
@Throws(LanguageNotFoundException::class)
31+
fun byLocale(locale: Locale): Language {
32+
for (lang in Language.entries) {
33+
if (lang.locale == locale) return lang
34+
}
35+
36+
throw LanguageNotFoundException("Unable to find a language for the locale: ${locale.displayLanguage}")
37+
}
2938
}
3039
}

src/test/kotlin/LanguageTest.kt

Lines changed: 39 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,12 @@ import cc.wordview.gengolex.LanguageNotFoundException
33
import org.junit.jupiter.api.Test
44
import org.junit.jupiter.api.assertDoesNotThrow
55
import org.junit.jupiter.api.assertThrows
6+
import java.util.Locale
67
import kotlin.test.assertEquals
78

89
class LanguageTest {
910
@Test
10-
fun getEnglish() {
11+
fun getEnglish_byTag() {
1112
assertDoesNotThrow {
1213
val lang = Language.byTag("en")
1314
assertEquals(Language.ENGLISH, lang)
@@ -16,7 +17,7 @@ class LanguageTest {
1617
}
1718

1819
@Test
19-
fun getJapanese() {
20+
fun getJapanese_byTag() {
2021
assertDoesNotThrow {
2122
val lang = Language.byTag("ja")
2223
assertEquals(Language.JAPANESE, lang)
@@ -25,7 +26,7 @@ class LanguageTest {
2526
}
2627

2728
@Test
28-
fun getPortuguese() {
29+
fun getPortuguese_byTag() {
2930
assertDoesNotThrow {
3031
val lang = Language.byTag("pt")
3132
assertEquals(Language.PORTUGUESE, lang)
@@ -34,9 +35,43 @@ class LanguageTest {
3435
}
3536

3637
@Test
37-
fun getInexistent() {
38+
fun getInexistent_byTag() {
3839
assertThrows<LanguageNotFoundException> {
3940
Language.byTag("kr")
4041
}
4142
}
43+
44+
@Test
45+
fun getEnglish_byLocale() {
46+
assertDoesNotThrow {
47+
val lang = Language.byLocale(Locale.ENGLISH)
48+
assertEquals(Language.ENGLISH, lang)
49+
assertEquals("english", lang.dictionaryName)
50+
}
51+
}
52+
53+
@Test
54+
fun getJapanese_byLocale() {
55+
assertDoesNotThrow {
56+
val lang = Language.byLocale(Locale.JAPANESE)
57+
assertEquals(Language.JAPANESE, lang)
58+
assertEquals("kanji", lang.dictionaryName)
59+
}
60+
}
61+
62+
@Test
63+
fun getPortuguese_byLocale() {
64+
assertDoesNotThrow {
65+
val lang = Language.byLocale(Locale.forLanguageTag("pt"))
66+
assertEquals(Language.PORTUGUESE, lang)
67+
assertEquals("portuguese", lang.dictionaryName)
68+
}
69+
}
70+
71+
@Test
72+
fun getInexistent_byLocale() {
73+
assertThrows<LanguageNotFoundException> {
74+
Language.byLocale(Locale.GERMAN)
75+
}
76+
}
4277
}

0 commit comments

Comments
 (0)