diff --git a/src/main/java/de/marhali/easyi18n/settings/presets/DefaultPreset.java b/src/main/java/de/marhali/easyi18n/settings/presets/DefaultPreset.java new file mode 100644 index 0000000..fb515fe --- /dev/null +++ b/src/main/java/de/marhali/easyi18n/settings/presets/DefaultPreset.java @@ -0,0 +1,79 @@ +package de.marhali.easyi18n.settings.presets; + +import de.marhali.easyi18n.io.parser.ParserStrategyType; +import de.marhali.easyi18n.model.FolderStrategyType; +import de.marhali.easyi18n.settings.ProjectSettings; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Default preset. Used if none has been defined. + * @author marhali + */ +public class DefaultPreset implements ProjectSettings { + @Override + public String getLocalesDirectory() { + return null; + } + + @Override + public @NotNull FolderStrategyType getFolderStrategy() { + return FolderStrategyType.SINGLE; + } + + @Override + public @NotNull ParserStrategyType getParserStrategy() { + return ParserStrategyType.JSON; + } + + @Override + public @NotNull String getFilePattern() { + return "*.*"; + } + + @Override + public boolean isSorting() { + return true; + } + + @Override + public String getNamespaceDelimiter() { + return ":"; + } + + @Override + public @NotNull String getSectionDelimiter() { + return "."; + } + + @Override + public String getContextDelimiter() { + return "_"; + } + + @Override + public String getPluralDelimiter() { + return "_"; + } + + @Override + public @Nullable String getDefaultNamespace() { + return null; + } + + @Override + public @NotNull String getPreviewLocale() { + return "en"; + } + + @Override + public boolean isNestedKeys() { + return true; + } + + @Override + public boolean isAssistance() { + return true; + } +} diff --git a/src/main/java/de/marhali/easyi18n/settings/presets/Preset.java b/src/main/java/de/marhali/easyi18n/settings/presets/Preset.java new file mode 100644 index 0000000..7a7155a --- /dev/null +++ b/src/main/java/de/marhali/easyi18n/settings/presets/Preset.java @@ -0,0 +1,33 @@ +package de.marhali.easyi18n.settings.presets; + +import de.marhali.easyi18n.settings.ProjectSettings; + +/** + * Enumeration of all available configuration presets. + * Every preset needs to be registered here to be properly recognized. + * @author marhali + */ +public enum Preset { + DEFAULT(DefaultPreset.class), + VUE_I18N(VueI18nPreset.class), + REACT_I18NEXT(ReactI18NextPreset.class); + + private final Class clazz; + + Preset(Class clazz) { + this.clazz = clazz; + } + + public ProjectSettings config() { + try { + return this.clazz.getDeclaredConstructor().newInstance(); + } catch (Exception e) { + throw new RuntimeException(e); + } + } + + @Override + public String toString() { + return super.name().toLowerCase(); + } +} diff --git a/src/main/java/de/marhali/easyi18n/settings/presets/ReactI18NextPreset.java b/src/main/java/de/marhali/easyi18n/settings/presets/ReactI18NextPreset.java new file mode 100644 index 0000000..2a76af3 --- /dev/null +++ b/src/main/java/de/marhali/easyi18n/settings/presets/ReactI18NextPreset.java @@ -0,0 +1,79 @@ +package de.marhali.easyi18n.settings.presets; + +import de.marhali.easyi18n.io.parser.ParserStrategyType; +import de.marhali.easyi18n.model.FolderStrategyType; +import de.marhali.easyi18n.settings.ProjectSettings; + +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Preset for React - i18n-next + * @author marhali + */ +public class ReactI18NextPreset implements ProjectSettings { + @Override + public @Nullable String getLocalesDirectory() { + return null; + } + + @Override + public @NotNull FolderStrategyType getFolderStrategy() { + return FolderStrategyType.MODULARIZED_NAMESPACE; + } + + @Override + public @NotNull ParserStrategyType getParserStrategy() { + return ParserStrategyType.JSON; + } + + @Override + public @NotNull String getFilePattern() { + return "*.json"; + } + + @Override + public boolean isSorting() { + return true; + } + + @Override + public @Nullable String getNamespaceDelimiter() { + return ":"; + } + + @Override + public @NotNull String getSectionDelimiter() { + return "."; + } + + @Override + public @Nullable String getContextDelimiter() { + return "_"; + } + + @Override + public @Nullable String getPluralDelimiter() { + return "_"; + } + + @Override + public @Nullable String getDefaultNamespace() { + return "common"; + } + + @Override + public @NotNull String getPreviewLocale() { + return "en"; + } + + @Override + public boolean isNestedKeys() { + return false; + } + + @Override + public boolean isAssistance() { + return true; + } +} diff --git a/src/main/java/de/marhali/easyi18n/settings/presets/VueI18nPreset.java b/src/main/java/de/marhali/easyi18n/settings/presets/VueI18nPreset.java new file mode 100644 index 0000000..83c3276 --- /dev/null +++ b/src/main/java/de/marhali/easyi18n/settings/presets/VueI18nPreset.java @@ -0,0 +1,78 @@ +package de.marhali.easyi18n.settings.presets; + +import de.marhali.easyi18n.io.parser.ParserStrategyType; +import de.marhali.easyi18n.model.FolderStrategyType; +import de.marhali.easyi18n.settings.ProjectSettings; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +/** + * Preset for Vue.js - vue-i18n + * @author marhali + */ +public class VueI18nPreset implements ProjectSettings { + @Override + public @Nullable String getLocalesDirectory() { + return null; + } + + @Override + public @NotNull FolderStrategyType getFolderStrategy() { + return FolderStrategyType.SINGLE; + } + + @Override + public @NotNull ParserStrategyType getParserStrategy() { + return ParserStrategyType.JSON; + } + + @Override + public @NotNull String getFilePattern() { + return "*.json"; + } + + @Override + public boolean isSorting() { + return true; + } + + @Override + public @Nullable String getNamespaceDelimiter() { + return null; + } + + @Override + public @NotNull String getSectionDelimiter() { + return "."; + } + + @Override + public @Nullable String getContextDelimiter() { + return null; + } + + @Override + public @Nullable String getPluralDelimiter() { + return null; + } + + @Override + public @Nullable String getDefaultNamespace() { + return null; + } + + @Override + public @NotNull String getPreviewLocale() { + return "en"; + } + + @Override + public boolean isNestedKeys() { + return true; + } + + @Override + public boolean isAssistance() { + return true; + } +}