Skip to content

Commit 27f44bc

Browse files
committed
Add i18n localisation support
1 parent 919e3ab commit 27f44bc

File tree

7 files changed

+46
-14
lines changed

7 files changed

+46
-14
lines changed

src/main/kotlin/config/I18n.kt

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package config
2+
3+
import java.time.LocalDate
4+
import java.time.format.TextStyle
5+
import java.util.Locale
6+
import java.util.MissingResourceException
7+
import java.util.ResourceBundle
8+
9+
object I18n {
10+
private val locale = Locale.getDefault()
11+
private val res = ResourceBundle.getBundle("i18n.strings", locale)
12+
13+
14+
fun getString(key: Keys): String {
15+
return getString(key.name.lowercase())
16+
}
17+
18+
fun getString(name: String): String {
19+
return try {
20+
res.getString(name)
21+
} catch (e: MissingResourceException) {
22+
"-"
23+
}
24+
}
25+
26+
fun getDayOfWeek(date: LocalDate): String {
27+
return date.dayOfWeek.getDisplayName(TextStyle.SHORT, locale)
28+
}
29+
}

src/main/kotlin/config/Strings.kt

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,11 +19,6 @@ object Strings {
1919

2020
val website = Str("https://github.com/bailuk/gtk-meteo")
2121

22-
// UX
23-
const val CLOSE = "Close"
24-
const val INFO = "Info…"
25-
const val AUTO_CENTER = "Center map when changing place"
26-
2722
// CSS
2823
val linked = Str("linked")
2924
val mapCenter = Str("map-center")

src/main/kotlin/model/DayModel.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,9 @@
11
package model
22

3+
import config.I18n
34
import lib.json.JsonMap
45
import java.time.LocalDate
56
import java.time.ZonedDateTime
6-
import java.time.format.TextStyle
7-
import java.util.*
87
import kotlin.collections.ArrayList
98

109
class DayModel(dateTime: ZonedDateTime) {
@@ -15,7 +14,7 @@ class DayModel(dateTime: ZonedDateTime) {
1514
var tempMax = -10000.0
1615

1716
var symbol = ""
18-
val weekDay: String = date.dayOfWeek.getDisplayName(TextStyle.SHORT, Locale.ENGLISH)
17+
val weekDay: String = I18n.getDayOfWeek(date)
1918

2019
private val samples = ArrayList<Sample>()
2120

src/main/kotlin/view/About.kt

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package view
22

3-
import ch.bailu.gtk.gtk.*
3+
import ch.bailu.gtk.gtk.AboutDialog
4+
import ch.bailu.gtk.gtk.Button
5+
import ch.bailu.gtk.gtk.HeaderBar
6+
import ch.bailu.gtk.gtk.License
47
import ch.bailu.gtk.gtk.Window
8+
import config.I18n
59
import config.Strings
610
import lib.icons.IconMap
711

@@ -17,15 +21,15 @@ object About {
1721
titlebar = createHeaderBar(this)
1822
transientFor = window
1923
modal = true
20-
show()
24+
present()
2125
}
2226
}
2327

2428
private fun createHeaderBar(aboutDialog: AboutDialog): HeaderBar {
2529
return HeaderBar().apply {
2630
showTitleButtons = false
2731
packEnd(Button().apply {
28-
setLabel(Strings.CLOSE)
32+
setLabel(I18n.getString("close"))
2933
onClicked {
3034
aboutDialog.close()
3135
}

src/main/kotlin/view/MainMenu.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ import ch.bailu.gtk.gtk.MenuButton
66
import ch.bailu.gtk.lib.handler.action.ActionHandler
77
import ch.bailu.gtk.type.Str
88
import config.Keys
9-
import config.Strings
109
import controller.Controller
1110
import lib.extension.ellipsize
1211
import model.Model
12+
import config.I18n
1313

1414
class MainMenu(app: Application) {
1515
private var places = ArrayList<String>()
@@ -33,8 +33,8 @@ class MainMenu(app: Application) {
3333
}
3434
})
3535
appendSection(Str.NULL, Menu().apply {
36-
append(Strings.AUTO_CENTER, "app.${Keys.AUTO_CYCLE}")
37-
append(Strings.INFO, "app.${Keys.ABOUT}")
36+
append(I18n.getString(Keys.AUTO_CYCLE), "app.${Keys.AUTO_CYCLE}")
37+
append(I18n.getString(Keys.ABOUT), "app.${Keys.ABOUT}")
3838
})
3939
}
4040
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
close=Close
2+
about=Info…
3+
auto_cycle=Center map when changing place
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
close=Schliessen
2+
auto_center=Karte zentrieren bei Ortwechsel

0 commit comments

Comments
 (0)