diff --git a/src/main/java/de/marhali/easyi18n/settings/ProjectSettings.java b/src/main/java/de/marhali/easyi18n/settings/ProjectSettings.java index 5da91a5..019408a 100644 --- a/src/main/java/de/marhali/easyi18n/settings/ProjectSettings.java +++ b/src/main/java/de/marhali/easyi18n/settings/ProjectSettings.java @@ -33,4 +33,5 @@ public interface ProjectSettings { // Experimental Configuration boolean isAlwaysFold(); + String getFlavorTemplate(); } diff --git a/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsComponent.java b/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsComponent.java index 9018437..4f8fbbb 100644 --- a/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsComponent.java +++ b/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsComponent.java @@ -26,6 +26,7 @@ import java.util.ResourceBundle; /** * Configuration panel with all possible options for this plugin. + * * @author marhali */ public class ProjectSettingsComponent extends ProjectSettingsComponentState { @@ -64,10 +65,12 @@ public class ProjectSettingsComponent extends ProjectSettingsComponentState { .addVerticalGap(24) .addComponent(new TitledSeparator(bundle.getString("settings.experimental.title"))) .addComponent(constructAlwaysFoldField()) + .addLabeledComponent(bundle.getString("settings.experimental.flavor-template"), constructFlavorTemplate(), 1, false) .addComponentFillVertically(new JPanel(), 0) .getPanel(); } + private JComponent constructPresetField() { preset = new ComboBox<>(Preset.values()); preset.setToolTipText(bundle.getString("settings.preset.tooltip")); @@ -219,9 +222,15 @@ public class ProjectSettingsComponent extends ProjectSettingsComponentState { return alwaysFold; } + private JComponent constructFlavorTemplate() { + flavorTemplate = new ExtendableTextField(20); + flavorTemplate.setToolTipText(bundle.getString("settings.experimental.flavor-template-tooltip")); + return flavorTemplate; + } + private ItemListener handleParserChange() { return e -> { - if(e.getStateChange() == ItemEvent.SELECTED) { + if (e.getStateChange() == ItemEvent.SELECTED) { // Automatically suggest file pattern option on parser change ParserStrategyType newStrategy = ParserStrategyType.fromIndex(parserStrategy.getSelectedIndex()); filePattern.setText(newStrategy.getExampleFilePattern()); diff --git a/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsComponentState.java b/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsComponentState.java index 863dd44..e3cb792 100644 --- a/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsComponentState.java +++ b/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsComponentState.java @@ -40,6 +40,8 @@ public class ProjectSettingsComponentState { // Experimental configuration protected JCheckBox alwaysFold; + protected JTextField flavorTemplate; + protected ProjectSettingsState getState() { // Every field needs to provide its state ProjectSettingsState state = new ProjectSettingsState(); @@ -63,6 +65,7 @@ public class ProjectSettingsComponentState { state.setAssistance(assistance.isSelected()); state.setAlwaysFold(alwaysFold.isSelected()); + state.setFlavorTemplate(flavorTemplate.getText()); return state; } @@ -88,5 +91,7 @@ public class ProjectSettingsComponentState { assistance.setSelected(state.isAssistance()); alwaysFold.setSelected(state.isAlwaysFold()); + + flavorTemplate.setText(state.getFlavorTemplate()); } } diff --git a/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsState.java b/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsState.java index a8648a2..10a5947 100644 --- a/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsState.java +++ b/src/main/java/de/marhali/easyi18n/settings/ProjectSettingsState.java @@ -39,6 +39,7 @@ public class ProjectSettingsState implements ProjectSettings { // Experimental configuration @Property private Boolean alwaysFold; + @Property private String flavorTemplate; public ProjectSettingsState() { this(new DefaultPreset()); @@ -65,6 +66,7 @@ public class ProjectSettingsState implements ProjectSettings { this.assistance = defaults.isAssistance(); this.alwaysFold = defaults.isAlwaysFold(); + this.flavorTemplate = defaults.getFlavorTemplate(); } @Override @@ -143,6 +145,11 @@ public class ProjectSettingsState implements ProjectSettings { return alwaysFold; } + @Override + public String getFlavorTemplate() { + return this.flavorTemplate; + } + public void setLocalesDirectory(String localesDirectory) { this.localesDirectory = localesDirectory; } @@ -202,6 +209,9 @@ public class ProjectSettingsState implements ProjectSettings { public void setAlwaysFold(Boolean alwaysFold) { this.alwaysFold = alwaysFold; } + public void setFlavorTemplate(String flavorTemplate){ + this.flavorTemplate = flavorTemplate; + } @Override public boolean equals(Object o) { @@ -222,7 +232,8 @@ public class ProjectSettingsState implements ProjectSettings { && Objects.equals(previewLocale, that.previewLocale) && Objects.equals(nestedKeys, that.nestedKeys) && Objects.equals(assistance, that.assistance) - && Objects.equals(alwaysFold, that.alwaysFold); + && Objects.equals(alwaysFold, that.alwaysFold) + && Objects.equals(flavorTemplate,that.flavorTemplate); } @Override @@ -230,7 +241,7 @@ public class ProjectSettingsState implements ProjectSettings { return Objects.hash( localesDirectory, folderStrategy, parserStrategy, filePattern, includeSubDirs, sorting, namespaceDelimiter, sectionDelimiter, contextDelimiter, pluralDelimiter, - defaultNamespace, previewLocale, nestedKeys, assistance, alwaysFold + defaultNamespace, previewLocale, nestedKeys, assistance, alwaysFold,flavorTemplate ); } @@ -252,6 +263,7 @@ public class ProjectSettingsState implements ProjectSettings { ", nestedKeys=" + nestedKeys + ", assistance=" + assistance + ", alwaysFold=" + alwaysFold + + ", flavorTemplate=" + flavorTemplate + '}'; } } diff --git a/src/main/java/de/marhali/easyi18n/settings/presets/ReactI18NextPreset.java b/src/main/java/de/marhali/easyi18n/settings/presets/ReactI18NextPreset.java index ef536d3..26c16b7 100644 --- a/src/main/java/de/marhali/easyi18n/settings/presets/ReactI18NextPreset.java +++ b/src/main/java/de/marhali/easyi18n/settings/presets/ReactI18NextPreset.java @@ -86,4 +86,9 @@ public class ReactI18NextPreset implements ProjectSettings { public boolean isAlwaysFold() { return false; } + + @Override + public String getFlavorTemplate() { + return "$i18n.t"; + } } diff --git a/src/main/java/de/marhali/easyi18n/settings/presets/VueI18nPreset.java b/src/main/java/de/marhali/easyi18n/settings/presets/VueI18nPreset.java index 55ddfbe..491edf8 100644 --- a/src/main/java/de/marhali/easyi18n/settings/presets/VueI18nPreset.java +++ b/src/main/java/de/marhali/easyi18n/settings/presets/VueI18nPreset.java @@ -85,4 +85,9 @@ public class VueI18nPreset implements ProjectSettings { public boolean isAlwaysFold() { return false; } + + @Override + public String getFlavorTemplate() { + return "$i18n.t"; + } } diff --git a/src/main/resources/messages.properties b/src/main/resources/messages.properties index 69ac416..f9a8831 100644 --- a/src/main/resources/messages.properties +++ b/src/main/resources/messages.properties @@ -60,6 +60,8 @@ settings.editor.assistance.tooltip=Activates editor support to reference, auto-c settings.experimental.title=Experimental Configuration settings.experimental.always-fold.title=Always fold translation keys settings.experimental.always-fold.tooltip=Forces the editor to always display the value behind a translation key. The value cannot be unfolded when this function is active. +settings.experimental.flavor-template =I18n flavor template +settings.experimental.flavor-template-tooltip = Specify How to replace strings with i18n representation. error.io=An error occurred while processing translation files. \n\ Config: {0} => {1} ({2}) \n\ Path: {3} \n\