introduce configuration presets

This commit is contained in:
marhali 2022-04-09 13:00:43 +02:00
parent 31ad2e3464
commit 289f168e88
4 changed files with 269 additions and 0 deletions

View File

@ -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;
}
}

View File

@ -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<? extends ProjectSettings> clazz;
Preset(Class<? extends ProjectSettings> 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();
}
}

View File

@ -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;
}
}

View File

@ -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;
}
}