all done
This commit is contained in:
@@ -0,0 +1,263 @@
|
||||
package localization
|
||||
|
||||
import javafx.beans.property.ObjectProperty
|
||||
import javafx.beans.property.SimpleObjectProperty
|
||||
import javafx.scene.control.Labeled
|
||||
import java.util.Locale
|
||||
|
||||
object AppLocale {
|
||||
|
||||
val currentLocale: ObjectProperty<Locale> = SimpleObjectProperty(Locale("ru"))
|
||||
|
||||
private val strings: Map<Locale, Map<String, String>> = mapOf(
|
||||
Locale("ru") to mapOf(
|
||||
"auth.title" to "Вход / Регистрация",
|
||||
"auth.login" to "Вход",
|
||||
"auth.register" to "Регистрация",
|
||||
"auth.username" to "Имя пользователя",
|
||||
"auth.password" to "Пароль",
|
||||
"auth.host" to "Сервер",
|
||||
"auth.port" to "Порт",
|
||||
"auth.error.invalid.port" to "Некорректный порт (1–65535)",
|
||||
"auth.submit.login" to "Войти",
|
||||
"auth.submit.register" to "Зарегистрироваться",
|
||||
"auth.error.empty" to "Заполните все поля",
|
||||
"auth.error.failed" to "Ошибка входа. Проверьте логин и пароль.",
|
||||
"auth.error.register.failed" to "Ошибка регистрации. Возможно, пользователь уже существует.",
|
||||
"auth.error.server" to "Сервер недоступен",
|
||||
"auth.success.login" to "Успешный вход",
|
||||
"auth.success.register" to "Успешная регистрация",
|
||||
"main.title" to "Коллекция HumanBeing",
|
||||
"main.user" to "Пользователь",
|
||||
"main.logout" to "Выйти",
|
||||
"main.locale" to "Язык",
|
||||
"main.filter" to "Фильтр",
|
||||
"visualization.title" to "Визуализация",
|
||||
"table.name" to "Имя",
|
||||
"table.coordinates.x" to "X",
|
||||
"table.coordinates.y" to "Y",
|
||||
"table.creationDate" to "Дата создания",
|
||||
"table.realHero" to "Герой",
|
||||
"table.hasToothpick" to "Зубочистка",
|
||||
"table.impactSpeed" to "Скорость",
|
||||
"table.soundtrackName" to "Саундтрек",
|
||||
"table.minutesOfWaiting" to "Минуты ожидания",
|
||||
"table.weaponType" to "Оружие",
|
||||
"table.car.cool" to "Крутая тачка",
|
||||
"table.owner" to "Владелец",
|
||||
"button.add" to "Добавить",
|
||||
"button.edit" to "Редактировать",
|
||||
"button.delete" to "Удалить",
|
||||
"button.refresh" to "Обновить",
|
||||
"dialog.title.add" to "Добавление объекта",
|
||||
"dialog.title.edit" to "Редактирование объекта",
|
||||
"dialog.ok" to "OK",
|
||||
"dialog.cancel" to "Отмена",
|
||||
"dialog.error.validation" to "Ошибка валидации",
|
||||
"dialog.error.name" to "Имя не может быть пустым",
|
||||
"dialog.error.number" to "Некорректное число",
|
||||
"dialog.error.no.user" to "Ошибка: пользователь не идентифицирован",
|
||||
"info.title" to "Информация об объекте",
|
||||
"info.owner" to "Владелец",
|
||||
"info.id" to "ID",
|
||||
"delete.confirm" to "Удалить этот объект?",
|
||||
"delete.confirm.title" to "Подтверждение удаления",
|
||||
"error.no.selection" to "Объект не выбран",
|
||||
"error.not.owner" to "Вы не владелец этого объекта",
|
||||
),
|
||||
Locale("nl") to mapOf(
|
||||
"auth.title" to "Inloggen / Registreren",
|
||||
"auth.login" to "Inloggen",
|
||||
"auth.register" to "Registreren",
|
||||
"auth.username" to "Gebruikersnaam",
|
||||
"auth.password" to "Wachtwoord",
|
||||
"auth.host" to "Server",
|
||||
"auth.port" to "Poort",
|
||||
"auth.error.invalid.port" to "Ongeldige poort (1–65535)",
|
||||
"auth.submit.login" to "Inloggen",
|
||||
"auth.submit.register" to "Registreren",
|
||||
"auth.error.empty" to "Vul alle velden in",
|
||||
"auth.error.failed" to "Inloggen mislukt. Controleer uw gegevens.",
|
||||
"auth.error.register.failed" to "Registratie mislukt. Gebruiker bestaat mogelijk al.",
|
||||
"auth.error.server" to "Server niet bereikbaar",
|
||||
"auth.success.login" to "Succesvol ingelogd",
|
||||
"auth.success.register" to "Succesvol geregistreerd",
|
||||
"main.title" to "HumanBeing Collectie",
|
||||
"main.user" to "Gebruiker",
|
||||
"main.logout" to "Uitloggen",
|
||||
"main.locale" to "Taal",
|
||||
"main.filter" to "Filter",
|
||||
"visualization.title" to "Visualisatie",
|
||||
"table.name" to "Naam",
|
||||
"table.coordinates.x" to "X",
|
||||
"table.coordinates.y" to "Y",
|
||||
"table.creationDate" to "Aanmaakdatum",
|
||||
"table.realHero" to "Held",
|
||||
"table.hasToothpick" to "Tandenstoker",
|
||||
"table.impactSpeed" to "Snelheid",
|
||||
"table.soundtrackName" to "Soundtrack",
|
||||
"table.minutesOfWaiting" to "Wachtminuten",
|
||||
"table.weaponType" to "Wapen",
|
||||
"table.car.cool" to "Coole auto",
|
||||
"table.owner" to "Eigenaar",
|
||||
"button.add" to "Toevoegen",
|
||||
"button.edit" to "Bewerken",
|
||||
"button.delete" to "Verwijderen",
|
||||
"button.refresh" to "Vernieuwen",
|
||||
"dialog.title.add" to "Object toevoegen",
|
||||
"dialog.title.edit" to "Object bewerken",
|
||||
"dialog.ok" to "OK",
|
||||
"dialog.cancel" to "Annuleren",
|
||||
"dialog.error.validation" to "Validatiefout",
|
||||
"dialog.error.name" to "Naam mag niet leeg zijn",
|
||||
"dialog.error.number" to "Ongeldig nummer",
|
||||
"dialog.error.no.user" to "Fout: gebruiker niet geïdentificeerd",
|
||||
"info.title" to "Objectinformatie",
|
||||
"info.owner" to "Eigenaar",
|
||||
"info.id" to "ID",
|
||||
"delete.confirm" to "Dit object verwijderen?",
|
||||
"delete.confirm.title" to "Verwijderen bevestigen",
|
||||
"error.no.selection" to "Geen object geselecteerd",
|
||||
"error.not.owner" to "U bent niet de eigenaar van dit object",
|
||||
),
|
||||
Locale("hu") to mapOf(
|
||||
"auth.title" to "Bejelentkezés / Regisztráció",
|
||||
"auth.login" to "Bejelentkezés",
|
||||
"auth.register" to "Regisztráció",
|
||||
"auth.username" to "Felhasználónév",
|
||||
"auth.password" to "Jelszó",
|
||||
"auth.host" to "Szerver",
|
||||
"auth.port" to "Port",
|
||||
"auth.error.invalid.port" to "Érvénytelen port (1–65535)",
|
||||
"auth.submit.login" to "Belépés",
|
||||
"auth.submit.register" to "Regisztrálás",
|
||||
"auth.error.empty" to "Töltse ki az összes mezőt",
|
||||
"auth.error.failed" to "Sikertelen bejelentkezés. Ellenőrizze adatait.",
|
||||
"auth.error.register.failed" to "Sikertelen regisztráció. Lehet, hogy a felhasználó már létezik.",
|
||||
"auth.error.server" to "Szerver nem elérhető",
|
||||
"auth.success.login" to "Sikeres bejelentkezés",
|
||||
"auth.success.register" to "Sikeres regisztráció",
|
||||
"main.title" to "HumanBeing Gyűjtemény",
|
||||
"main.user" to "Felhasználó",
|
||||
"main.logout" to "Kijelentkezés",
|
||||
"main.locale" to "Nyelv",
|
||||
"main.filter" to "Szűrő",
|
||||
"visualization.title" to "Vizualizáció",
|
||||
"table.name" to "Név",
|
||||
"table.coordinates.x" to "X",
|
||||
"table.coordinates.y" to "Y",
|
||||
"table.creationDate" to "Létrehozás dátuma",
|
||||
"table.realHero" to "Hős",
|
||||
"table.hasToothpick" to "Fogpiszkáló",
|
||||
"table.impactSpeed" to "Sebesség",
|
||||
"table.soundtrackName" to "Soundtrack",
|
||||
"table.minutesOfWaiting" to "Várakozási percek",
|
||||
"table.weaponType" to "Fegyver",
|
||||
"table.car.cool" to "Menő autó",
|
||||
"table.owner" to "Tulajdonos",
|
||||
"button.add" to "Hozzáadás",
|
||||
"button.edit" to "Szerkesztés",
|
||||
"button.delete" to "Törlés",
|
||||
"button.refresh" to "Frissítés",
|
||||
"dialog.title.add" to "Objektum hozzáadása",
|
||||
"dialog.title.edit" to "Objektum szerkesztése",
|
||||
"dialog.ok" to "OK",
|
||||
"dialog.cancel" to "Mégse",
|
||||
"dialog.error.validation" to "Érvényesítési hiba",
|
||||
"dialog.error.name" to "A név nem lehet üres",
|
||||
"dialog.error.number" to "Érvénytelen szám",
|
||||
"dialog.error.no.user" to "Hiba: a felhasználó nincs azonosítva",
|
||||
"info.title" to "Objektum információ",
|
||||
"info.owner" to "Tulajdonos",
|
||||
"info.id" to "ID",
|
||||
"delete.confirm" to "Törli ezt az objektumot?",
|
||||
"delete.confirm.title" to "Törlés megerősítése",
|
||||
"error.no.selection" to "Nincs objektum kiválasztva",
|
||||
"error.not.owner" to "Ön nem a tulajdonosa ennek az objektumnak",
|
||||
),
|
||||
Locale("en", "AU") to mapOf(
|
||||
"auth.title" to "Sign In / Sign Up",
|
||||
"auth.login" to "Sign In",
|
||||
"auth.register" to "Sign Up",
|
||||
"auth.username" to "Username",
|
||||
"auth.password" to "Password",
|
||||
"auth.host" to "Server",
|
||||
"auth.port" to "Port",
|
||||
"auth.error.invalid.port" to "Invalid port (1–65535)",
|
||||
"auth.submit.login" to "Sign In",
|
||||
"auth.submit.register" to "Sign Up",
|
||||
"auth.error.empty" to "Fill in all fields, mate",
|
||||
"auth.error.failed" to "Login failed. Check ya credentials.",
|
||||
"auth.error.register.failed" to "Registration failed. Reckon that user already exists.",
|
||||
"auth.error.server" to "Server's cactus",
|
||||
"auth.success.login" to "G'day! Logged in successfully",
|
||||
"auth.success.register" to "Registered, bonza!",
|
||||
"main.title" to "HumanBeing Collection",
|
||||
"main.user" to "User",
|
||||
"main.logout" to "Logout",
|
||||
"main.locale" to "Language",
|
||||
"main.filter" to "Filter",
|
||||
"visualization.title" to "Visualisation",
|
||||
"table.name" to "Name",
|
||||
"table.coordinates.x" to "X",
|
||||
"table.coordinates.y" to "Y",
|
||||
"table.creationDate" to "Creation Date",
|
||||
"table.realHero" to "Hero",
|
||||
"table.hasToothpick" to "Toothpick",
|
||||
"table.impactSpeed" to "Impact Speed",
|
||||
"table.soundtrackName" to "Soundtrack",
|
||||
"table.minutesOfWaiting" to "Minutes of Waitin'",
|
||||
"table.weaponType" to "Weapon",
|
||||
"table.car.cool" to "Carn't",
|
||||
"table.owner" to "Owner",
|
||||
"button.add" to "Add",
|
||||
"button.edit" to "Edit",
|
||||
"button.delete" to "Delete",
|
||||
"button.refresh" to "Refresh",
|
||||
"dialog.title.add" to "Add Object",
|
||||
"dialog.title.edit" to "Edit Object",
|
||||
"dialog.ok" to "OK",
|
||||
"dialog.cancel" to "Cancel",
|
||||
"dialog.error.validation" to "Validation Error",
|
||||
"dialog.error.name" to "Name can't be empty",
|
||||
"dialog.error.number" to "Invalid number, mate",
|
||||
"dialog.error.no.user" to "Error: user not identified, mate",
|
||||
"info.title" to "Object Info",
|
||||
"info.owner" to "Owner",
|
||||
"info.id" to "ID",
|
||||
"delete.confirm" to "Reckon you wanna delete this?",
|
||||
"delete.confirm.title" to "Confirm Deletion",
|
||||
"error.no.selection" to "No object selected",
|
||||
"error.not.owner" to "You're not the owner of this object",
|
||||
),
|
||||
)
|
||||
|
||||
fun get(key: String): String {
|
||||
return strings[currentLocale.value]?.get(key) ?: key
|
||||
}
|
||||
|
||||
fun bind(property: javafx.beans.property.Property<String>, key: String) {
|
||||
property.value = get(key)
|
||||
currentLocale.addListener { _, _, _ ->
|
||||
property.value = get(key)
|
||||
}
|
||||
}
|
||||
|
||||
fun bindLabel(labeled: Labeled, key: String) {
|
||||
bind(labeled.textProperty(), key)
|
||||
}
|
||||
|
||||
fun bindPrompt(textField: javafx.scene.control.TextInputControl, key: String) {
|
||||
bind(textField.promptTextProperty(), key)
|
||||
}
|
||||
|
||||
fun availableLocales(): List<Locale> = strings.keys.toList()
|
||||
|
||||
fun localeDisplayName(locale: Locale): String = when (locale) {
|
||||
Locale("ru") -> "Русский"
|
||||
Locale("nl") -> "Nederlands"
|
||||
Locale("hu") -> "Magyar"
|
||||
Locale("en", "AU") -> "English (Australia)"
|
||||
else -> locale.displayName
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user