Localizer.scala 3.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. /*
  2. This file is part of karl-marx.
  3. karl-marx is free software: you can redistribute it and/or modify
  4. it under the terms of the GNU Affero General Public License as published by
  5. the Free Software Foundation, either version 3 of the License, or
  6. (at your option) any later version.
  7. karl-marx is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  10. GNU Affero General Public License for more details.
  11. You should have received a copy of the GNU Affero General Public License
  12. along with karl-marx. If not, see <https://www.gnu.org/licenses/>.
  13. */
  14. package org.congressodeiradicali.karlmarx
  15. import org.congressodeiradicali.karlmarx.Locales.Locale
  16. object LocalizableString extends Enumeration {
  17. type LocalizableString = Value
  18. val DONE = Value
  19. val BAN_UNAUTHORIZED, BAN_SUCCESSFUL, BAN_FAILED, BAN_FAILED_INVALID_USER, BAN_FAILED_BAN_ADMIN, BAN_FAILED_REPLY, KICK_UNAUTHORIZED = Value
  20. val NO_SUCH_PLUGIN, PLUGIN_ENABLED, PLUGIN_DISABLED = Value
  21. }
  22. object Locales {
  23. type Locale = Map[LocalizableString.Value, String]
  24. val ENGLISH_LOCALE: Locale = Map(
  25. (LocalizableString.DONE, "Done"),
  26. (LocalizableString.BAN_UNAUTHORIZED, "Only an administrator can ban users"),
  27. (LocalizableString.BAN_SUCCESSFUL, "User was banned successfully"),
  28. (LocalizableString.BAN_FAILED_INVALID_USER, "Cannot ban, invalid user"),
  29. (LocalizableString.BAN_FAILED_BAN_ADMIN, "Cannot ban an admin user"),
  30. (LocalizableString.BAN_FAILED_REPLY, "Please reply to a message to ban someone"),
  31. (LocalizableString.KICK_UNAUTHORIZED, "Only an administrator can kick users"),
  32. (LocalizableString.NO_SUCH_PLUGIN, "No such plugin"),
  33. (LocalizableString.PLUGIN_ENABLED, "Plugin enabled"),
  34. (LocalizableString.PLUGIN_DISABLED, "Plugin disabled")
  35. )
  36. val ITALIAN_LOCALE: Locale = Map(
  37. (LocalizableString.DONE, "Fatto"),
  38. (LocalizableString.BAN_UNAUTHORIZED, "Solo un amministratore può bannare gli utenti"),
  39. (LocalizableString.BAN_SUCCESSFUL, "Utente bannato con successo"),
  40. (LocalizableString.BAN_FAILED_INVALID_USER, "Impossibile bannare, utente non valido"),
  41. (LocalizableString.BAN_FAILED_BAN_ADMIN, "Non puoi bannare un admin"),
  42. (LocalizableString.BAN_FAILED_REPLY, "Rispondi a un messaggio per bannare qualcuno"),
  43. (LocalizableString.KICK_UNAUTHORIZED, "Solo un amministratore può kickare gli utenti"),
  44. (LocalizableString.NO_SUCH_PLUGIN, "Il plugin selezionato non esiste"),
  45. (LocalizableString.PLUGIN_ENABLED, "Plugin abilitato"),
  46. (LocalizableString.PLUGIN_DISABLED, "Plugin disabilitato")
  47. )
  48. }
  49. class Localizer(val localeName: String) {
  50. val currentLocale: Locale = localeName match {
  51. case "en_EN" => Locales.ENGLISH_LOCALE
  52. case "it_IT" => Locales.ITALIAN_LOCALE
  53. case _ => throw new RuntimeException(s"No such locale: $localeName")
  54. }
  55. def getString(name: LocalizableString.Value): String = {
  56. if (currentLocale.contains(name))
  57. currentLocale(name)
  58. else
  59. throw new RuntimeException(s"Locale does not implement LocalizableString $name")
  60. }
  61. }