diff --git a/src/main/java/cz/muni/fi/pv168/project/ui/i18n/I18N.java b/src/main/java/cz/muni/fi/pv168/project/ui/i18n/I18N.java
new file mode 100644
index 0000000000000000000000000000000000000000..fd79fb98e1775286cea3a3994a171078cb1bd222
--- /dev/null
+++ b/src/main/java/cz/muni/fi/pv168/project/ui/i18n/I18N.java
@@ -0,0 +1,29 @@
+package cz.muni.fi.pv168.project.ui.i18n;
+
+import java.text.MessageFormat;
+import java.util.ResourceBundle;
+
+public final class I18N {
+
+    private final ResourceBundle bundle;
+    private final String prefix;
+
+    public I18N(Class<?> clazz) {
+        var packagePath = clazz.getPackageName().replace(".", "/") + '/';
+        System.out.println(packagePath);
+        bundle = ResourceBundle.getBundle(packagePath + "i18n");
+        prefix = clazz.getSimpleName() + ".";
+    }
+
+    public String getString(String key) {
+        return bundle.getString(prefix + key);
+    }
+
+    public String getFormattedMessage(String key, Object... arguments) {
+        return MessageFormat.format(getString(key), arguments);
+    }
+
+    public <E extends Enum<E>> String getString(E key) {
+        return bundle.getString(key.getClass().getSimpleName() + "." + key.name());
+    }
+}