Skip to content
This repository was archived by the owner on Mar 15, 2023. It is now read-only.

Commit d7da636

Browse files
author
Jacob van Mourik
committed
Renamed plain JSON option to flatten JSON. #41
1 parent 35ea5da commit d7da636

11 files changed

+74
-66
lines changed

src/main/java/com/jvms/i18neditor/Main.java

+3
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ public class Main {
2121
private final static Logger log = LoggerFactory.getLogger(Main.class);
2222

2323
public static void main(String[] args) {
24+
// Override locale for testing
25+
//Locale.setDefault(new Locale("nl"));
26+
2427
SwingUtilities.invokeLater(() -> {
2528
// Enable global menu on MAC OS
2629
if (SystemUtils.IS_OS_MAC) {

src/main/java/com/jvms/i18neditor/editor/Editor.java

+6-6
Original file line numberDiff line numberDiff line change
@@ -216,7 +216,7 @@ public boolean saveProject() {
216216
if (project != null) {
217217
for (Resource resource : project.getResources()) {
218218
try {
219-
Resources.write(resource, !project.isMinifyResources(), project.isPlainJSON());
219+
Resources.write(resource, !project.isMinifyResources(), project.isFlattenJSON());
220220
} catch (IOException e) {
221221
error = true;
222222
log.error("Error saving resource file " + resource.getPath(), e);
@@ -850,7 +850,7 @@ private void updateTreeNodeStatus(String key) {
850850
private void storeProjectState() {
851851
ExtendedProperties props = new ExtendedProperties();
852852
props.setProperty("minify_resources", project.isMinifyResources());
853-
props.setProperty("plain_json", project.isPlainJSON());
853+
props.setProperty("flatten_json", project.isFlattenJSON());
854854
props.setProperty("resource_type", project.getResourceType().toString());
855855
props.setProperty("resource_definition", project.getResourceFileDefinition());
856856
props.setProperty("resource_directories", project.isUseResourceDirectories());
@@ -863,7 +863,7 @@ private void restoreProjectState(EditorProject project) {
863863
if (Files.exists(path)) {
864864
props.load(Paths.get(project.getPath().toString(), PROJECT_FILE));
865865
project.setMinifyResources(props.getBooleanProperty("minify_resources", settings.isMinifyResources()));
866-
project.setPlainJSON(props.getBooleanProperty("plain_json", settings.isPlainJSON()));
866+
project.setFlattenJSON(props.getBooleanProperty("flatten_json", settings.isFlattenJSON()));
867867
project.setResourceType(props.getEnumProperty("resource_type", ResourceType.class));
868868
String resourceName = props.getProperty("resource_name"); // for backwards compatibility
869869
if (Strings.isNullOrEmpty(resourceName)) {
@@ -875,7 +875,7 @@ private void restoreProjectState(EditorProject project) {
875875
}
876876
} else {
877877
project.setMinifyResources(settings.isMinifyResources());
878-
project.setPlainJSON(settings.isPlainJSON());
878+
project.setFlattenJSON(settings.isFlattenJSON());
879879
project.setResourceFileDefinition(settings.getResourceFileDefinition());
880880
project.setUseResourceDirectories(settings.isUseResourceDirectories());
881881
}
@@ -889,7 +889,7 @@ private void storeEditorState() {
889889
props.setProperty("window_pos_y", getY());
890890
props.setProperty("window_div_pos", contentPane.getDividerLocation());
891891
props.setProperty("minify_resources", settings.isMinifyResources());
892-
props.setProperty("plain_json", settings.isPlainJSON());
892+
props.setProperty("flatten_json", settings.isFlattenJSON());
893893
props.setProperty("resource_definition", settings.getResourceFileDefinition());
894894
props.setProperty("resource_directories", settings.isUseResourceDirectories());
895895
props.setProperty("check_version", settings.isCheckVersionOnStartup());
@@ -925,7 +925,7 @@ private void restoreEditorState() {
925925
settings.setKeyFieldEnabled(props.getBooleanProperty("key_field_enabled", true));
926926
settings.setDoubleClickTreeToggling(props.getBooleanProperty("double_click_tree_toggling", false));
927927
settings.setMinifyResources(props.getBooleanProperty("minify_resources", false));
928-
settings.setPlainJSON(props.getBooleanProperty("plain_json", false));
928+
settings.setFlattenJSON(props.getBooleanProperty("flatten_json", false));
929929
settings.setHistory(props.getListProperty("history"));
930930
settings.setLastExpandedNodes(props.getListProperty("last_expanded"));
931931
settings.setLastSelectedNode(props.getProperty("last_selected"));

src/main/java/com/jvms/i18neditor/editor/EditorProject.java

+5-5
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ public class EditorProject {
1919
private ResourceType resourceType;
2020
private List<Resource> resources;
2121
private boolean minifyResources;
22-
private boolean plainJSON;
22+
private boolean flattenJSON;
2323
private boolean resourceDirectories;
2424

2525
public EditorProject(Path path) {
@@ -83,11 +83,11 @@ public void setMinifyResources(boolean minifyResources) {
8383
this.minifyResources = minifyResources;
8484
}
8585

86-
public boolean isPlainJSON() {
87-
return plainJSON;
86+
public boolean isFlattenJSON() {
87+
return flattenJSON;
8888
}
8989

90-
public void setPlainJSON(boolean plainJSON) {
91-
this.plainJSON = plainJSON;
90+
public void setFlattenJSON(boolean flattenJSON) {
91+
this.flattenJSON = flattenJSON;
9292
}
9393
}

src/main/java/com/jvms/i18neditor/editor/EditorProjectSettingsPane.java

+4-4
Original file line numberDiff line numberDiff line change
@@ -43,10 +43,10 @@ private void setupUI() {
4343
}
4444

4545
if (project.getResourceType().equals(ResourceType.JSON)) {
46-
JCheckBox plainJSONBox = new JCheckBox(MessageBundle.get("settings.plainJSON.title"));
47-
plainJSONBox.setSelected(project.isPlainJSON());
48-
plainJSONBox.addChangeListener(e -> project.setPlainJSON(plainJSONBox.isSelected()));
49-
fieldset1.add(plainJSONBox, createVerticalGridBagConstraints());
46+
JCheckBox flattenJSONBox = new JCheckBox(MessageBundle.get("settings.flattenjson.title"));
47+
flattenJSONBox.setSelected(project.isFlattenJSON());
48+
flattenJSONBox.addChangeListener(e -> project.setFlattenJSON(flattenJSONBox.isSelected()));
49+
fieldset1.add(flattenJSONBox, createVerticalGridBagConstraints());
5050
}
5151

5252
JCheckBox useResourceDirsBox = new JCheckBox(MessageBundle.get("settings.resourcedirs.title"));

src/main/java/com/jvms/i18neditor/editor/EditorSettings.java

+8-9
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public class EditorSettings {
1414
private int windowWidth;
1515
private int windowHeight;
1616
private boolean minifyResources;
17-
private boolean plainJSON;
17+
private boolean flattenJSON;
1818
private List<String> history;
1919
private List<String> lastExpandedNodes;
2020
private String lastSelectedNode;
@@ -136,14 +136,6 @@ public boolean isDoubleClickTreeToggling() {
136136
public void setDoubleClickTreeToggling(boolean doubleClickTreeToggling) {
137137
this.doubleClickTreeToggling = doubleClickTreeToggling;
138138
}
139-
140-
public boolean isPlainJSON() {
141-
return plainJSON;
142-
}
143-
144-
public void setPlainJSON(boolean plainJSON) {
145-
this.plainJSON = plainJSON;
146-
}
147139

148140
public boolean isUseResourceDirectories() {
149141
return resourceDirectories;
@@ -152,4 +144,11 @@ public boolean isUseResourceDirectories() {
152144
public void setUseResourceDirectories(boolean resourceDirectories) {
153145
this.resourceDirectories = resourceDirectories;
154146
}
147+
public boolean isFlattenJSON() {
148+
return flattenJSON;
149+
}
150+
151+
public void setFlattenJSON(boolean flattenJSON) {
152+
this.flattenJSON = flattenJSON;
153+
}
155154
}

src/main/java/com/jvms/i18neditor/editor/EditorSettingsPane.java

+5
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@ private void setupUI() {
4848
minifyBox.addChangeListener(e -> settings.setMinifyResources(minifyBox.isSelected()));
4949
fieldset2.add(minifyBox, createVerticalGridBagConstraints());
5050

51+
JCheckBox flattenJSONBox = new JCheckBox(MessageBundle.get("settings.flattenjson.title"));
52+
flattenJSONBox.setSelected(settings.isFlattenJSON());
53+
flattenJSONBox.addChangeListener(e -> settings.setFlattenJSON(flattenJSONBox.isSelected()));
54+
fieldset2.add(flattenJSONBox, createVerticalGridBagConstraints());
55+
5156
JCheckBox useResourceDirsBox = new JCheckBox(MessageBundle.get("settings.resourcedirs.title"));
5257
useResourceDirsBox.setSelected(settings.isUseResourceDirectories());
5358
useResourceDirsBox.addChangeListener(e -> settings.setUseResourceDirectories(useResourceDirsBox.isSelected()));

src/main/java/com/jvms/i18neditor/editor/TranslationTreeNodeMenu.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@ public TranslationTreeNodeMenu(Editor editor, TranslationTreeNode node) {
2222
if (!node.isRoot()) {
2323
addSeparator();
2424
add(new RenameTranslationMenuItem(editor, true));
25-
add(new CopyTranslationKeyToClipboardMenuItem(editor, true));
2625
add(new DuplicateTranslationMenuItem(editor, true));
26+
add(new CopyTranslationKeyToClipboardMenuItem(editor, true));
2727
add(new RemoveTranslationMenuItem(editor, true));
2828
}
2929
}

src/main/java/com/jvms/i18neditor/util/Resources.java

+7-7
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ public static void load(Resource resource) throws IOException {
137137
* @param plainKeys
138138
* @throws IOException if an I/O error occurs writing the file.
139139
*/
140-
public static void write(Resource resource, boolean prettyPrinting, boolean plainKeys) throws IOException {
140+
public static void write(Resource resource, boolean prettyPrinting, boolean flattenKeys) throws IOException {
141141
if (resource.getChecksum() != null) {
142142
String checksum = createChecksum(resource);
143143
if (!checksum.equals(resource.getChecksum())) {
@@ -149,7 +149,7 @@ public static void write(Resource resource, boolean prettyPrinting, boolean plai
149149
ExtendedProperties content = toProperties(resource.getTranslations());
150150
content.store(resource.getPath());
151151
} else {
152-
String content = toJson(resource.getTranslations(), prettyPrinting, plainKeys);
152+
String content = toJson(resource.getTranslations(), prettyPrinting, flattenKeys);
153153
if (type == ResourceType.ES6) {
154154
content = jsonToEs6(content);
155155
}
@@ -233,28 +233,28 @@ private static void fromJson(String key, JsonElement elem, Map<String,String> co
233233
}
234234
}
235235

236-
private static String toJson(Map<String,String> translations, boolean prettify, boolean plainKeys) {
236+
private static String toJson(Map<String,String> translations, boolean prettify, boolean flattenKeys) {
237237
List<String> keys = Lists.newArrayList(translations.keySet());
238-
JsonElement elem = !plainKeys ? toJson(translations, null, keys) : toPlainJson(translations, keys);
238+
JsonElement elem = !flattenKeys ? toJson(translations, null, keys) : toFlatJson(translations, keys);
239239
GsonBuilder builder = new GsonBuilder().disableHtmlEscaping();
240240
if (prettify) {
241241
builder.setPrettyPrinting();
242242
}
243243
return builder.create().toJson(elem);
244244
}
245245

246-
private static JsonElement toPlainJson(Map<String, String> translations, List<String> keys) {
246+
private static JsonElement toFlatJson(Map<String, String> translations, List<String> keys) {
247247
JsonObject object = new JsonObject();
248248
if (keys.size() > 0) {
249249
translations.forEach((k, v) -> {
250-
if (translations.get(k)!=null){
250+
if (translations.get(k) != null){
251251
object.add(k, new JsonPrimitive(translations.get(k)));
252252
}
253253
});
254254
}
255255
return object;
256256
}
257-
257+
258258
private static JsonElement toJson(Map<String,String> translations, String key, List<String> keys) {
259259
if (keys.size() > 0) {
260260
JsonObject object = new JsonObject();

src/main/resources/bundles/messages.properties

+11-10
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,14 @@ dialogs.translation.add.text = Enter translation key:
2020
dialogs.translation.add.title = Add Translation
2121
dialogs.translation.conflict.text.replace = There already exists a translation with this key, do you want to replace it?
2222
dialogs.translation.conflict.text.merge = There already exists a translation with this key, do you want to merge it?
23-
dialogs.translation.conflict.title = Translation conflict
24-
dialogs.translation.duplicate.error = The key you entered is invalid.
23+
dialogs.translation.conflict.title = Conflict
24+
dialogs.translation.duplicate.error = The entered value is invalid.
2525
dialogs.translation.duplicate.text = Enter new key:
2626
dialogs.translation.duplicate.title = Duplicate Translation
2727
dialogs.translation.find.error = No translation found.
2828
dialogs.translation.find.text = Enter translation key:
2929
dialogs.translation.find.title = Find Translation
30-
dialogs.translation.rename.error = The key you entered is invalid.
30+
dialogs.translation.rename.error = The entered value is invalid.
3131
dialogs.translation.rename.text = Enter new key:
3232
dialogs.translation.rename.title = Rename Translation
3333
dialogs.version.link = Click here to download
@@ -41,7 +41,7 @@ menu.edit.delete.title = Delete Translation
4141
menu.edit.duplicate.title = Duplicate Translation...
4242
menu.edit.find.translation.title = Find Translation...
4343
menu.edit.rename.title = Rename Translation...
44-
menu.edit.copy.key.title = Copy Translation Key...
44+
menu.edit.copy.key.title = Copy Translation Key
4545
menu.edit.title = Edit
4646
menu.edit.vk = E
4747
menu.file.exit.title = Exit
@@ -71,8 +71,8 @@ menu.settings.preferences.editor.title = Preferences...
7171
menu.settings.preferences.project.title = Project Preferences...
7272
menu.settings.title = Settings
7373
menu.settings.vk = S
74-
menu.view.collapse.title = Collapse All Translations
75-
menu.view.expand.title = Expand All Translations
74+
menu.view.collapse.title = Collapse All Translation Keys
75+
menu.view.expand.title = Expand All Translation Keys
7676
menu.view.title = View
7777
menu.view.vk = V
7878

@@ -88,13 +88,14 @@ settings.fieldset.general = General
8888
settings.fieldset.newprojects = New Projects
8989
settings.inputheight.title = Default height of input fields
9090
settings.keyfield.title = Show translation key field
91-
settings.minify.title = Minify translations on save
91+
settings.minify.title = Minify translation files on save
9292
settings.resourcedef.help = <html>You can use '{' '}' tags to specify the locale part within the filename.<br>The text LOCALE within this tags will be replaced by the actual locale.<br>Example: translations'{'_LOCALE'}' will become translations_en_US.</html>
9393
settings.resourcedef.title = Translations filename
94-
settings.resourcedirs.title = Save translation files in separate folders
95-
settings.treetogglemode.title = Expand and collapse translations using double click
94+
settings.resourcedirs.title = Store translation files in separate folders
95+
settings.treetogglemode.title = Expand and collapse translation keys using double click
9696
settings.checkversion.title = Check for new version on startup
97-
settings.plainJSON.title= Plain JSON keys
97+
settings.flattenjson.title = Flatten JSON translation files on save
98+
9899
swing.action.copy = Copy
99100
swing.action.cut = Cut
100101
swing.action.delete = Delete

src/main/resources/bundles/messages_nl.properties

+22-22
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ core.intro.text = Sleep een bestaand project hierheen of ga naar Bestand\ufe65Ni
33

44
dialogs.about.title = Over {0}
55
dialogs.error.title = Fout
6-
dialogs.locale.add.error.create = Er is iets fout gegaan bij het toevoegen van de nieuwe locale.
7-
dialogs.locale.add.error.invalid = De opgegeven locale is niet geldig of bestaat al.
8-
dialogs.locale.add.text = Locale (bijv. nl_NL):
9-
dialogs.locale.add.title = Locale Toevoegen
6+
dialogs.locale.add.error.create = Er is iets fout gegaan bij het toevoegen van de nieuwe taal.
7+
dialogs.locale.add.error.invalid = De opgegeven taal is niet geldig of bestaat al.
8+
dialogs.locale.add.text = Taal (bijv. nl_NL):
9+
dialogs.locale.add.title = Taal Toevoegen
1010
dialogs.preferences.editor.title = Voorkeuren
1111
dialogs.preferences.project.title = Projectvoorkeuren
1212
dialogs.project.import.title = Importeer Project
@@ -15,33 +15,33 @@ dialogs.project.new.conflict.title = Conflict
1515
dialogs.project.new.title = Nieuw Project
1616
dialogs.save.text = U heeft nog onopgeslagen wijzigingen, wilt u deze opslaan?
1717
dialogs.save.title = Vertalingen Opslaan
18-
dialogs.translation.add.error = De opgegeven key voor de vertaling is niet geldig.
19-
dialogs.translation.add.text = Key voor de vertaling:
18+
dialogs.translation.add.error = De opgegeven vertaalsleutel is niet geldig.
19+
dialogs.translation.add.text = Vertaalsleutel:
2020
dialogs.translation.add.title = Vertaling Toevoegen
21-
dialogs.translation.conflict.text.replace = Er bestaat al een vertaling met deze key, wilt u deze vervangen?
22-
dialogs.translation.conflict.text.merge = Er bestaat al een vertaling met deze key, wilt u deze samenvoegen?
23-
dialogs.translation.conflict.title = Vertalingsconflict
24-
dialogs.translation.duplicate.error = De opgegeven key is niet geldig.
21+
dialogs.translation.conflict.text.replace = Er bestaat al een vertaling met deze vertaalsleutel, wilt u deze vervangen?
22+
dialogs.translation.conflict.text.merge = Er bestaat al een vertaling met deze vertaalsleutel, wilt u deze samenvoegen?
23+
dialogs.translation.conflict.title = Conflict
24+
dialogs.translation.duplicate.error = De opgegeven waarde is niet geldig.
2525
dialogs.translation.duplicate.text = Nieuwe naam:
2626
dialogs.translation.duplicate.title = Vertaling Dupliceren
2727
dialogs.translation.find.error = Geen vertaling gevonden.
28-
dialogs.translation.find.text = Key van de vertaling:
28+
dialogs.translation.find.text = Vertaalsleutel:
2929
dialogs.translation.find.title = Vertaling Zoeken
30-
dialogs.translation.rename.error = De opgegeven key is niet geldig.
31-
dialogs.translation.rename.text = Nieuwe key:
30+
dialogs.translation.rename.error = De opgegeven waarde is niet geldig.
31+
dialogs.translation.rename.text = Nieuwe vertaalsleutel:
3232
dialogs.translation.rename.title = Vertaling Hernoemen
3333
dialogs.version.link = Klik hier om te downloaden
3434
dialogs.version.new = Een nieuwe versie is beschikbaar:
3535
dialogs.version.title = Beschikbare Updates
3636
dialogs.version.uptodate = Je gebruikt de nieuwste versie.
3737

38-
menu.edit.add.locale.title = Locale Toevoegen...
38+
menu.edit.add.locale.title = Taal Toevoegen...
3939
menu.edit.add.translation.title = Vertaling Toevoegen...
4040
menu.edit.delete.title = Vertaling Verwijderen
4141
menu.edit.duplicate.title = Vertaling Dupliceren...
4242
menu.edit.find.translation.title = Vertaling Zoeken...
4343
menu.edit.rename.title = Vertaling Hernoemen...
44-
menu.edit.copy.key.title = Copy Translation Key...
44+
menu.edit.copy.key.title = Vertaalsleutel Kopi\u00EBren
4545
menu.edit.title = Bewerken
4646
menu.edit.vk = W
4747
menu.file.exit.title = Sluiten
@@ -71,8 +71,8 @@ menu.settings.preferences.editor.title = Voorkeuren...
7171
menu.settings.preferences.project.title = Projectvoorkeuren...
7272
menu.settings.title = Instellingen
7373
menu.settings.vk = I
74-
menu.view.collapse.title = Alle Vertalingen Invouwen
75-
menu.view.expand.title = Alle Vertalingen Uitvouwen
74+
menu.view.collapse.title = Alle Vertaalsleutels Invouwen
75+
menu.view.expand.title = Alle Vertaalsleutels Uitvouwen
7676
menu.view.title = Beeld
7777
menu.view.vk = L
7878

@@ -87,14 +87,14 @@ settings.fieldset.editing = Weergave
8787
settings.fieldset.general = Algemeen
8888
settings.fieldset.newprojects = Nieuwe Projecten
8989
settings.inputheight.title = Standaardhoogte van invoervelden
90-
settings.keyfield.title = Toon vertalingskey veld
91-
settings.minify.title = Comprimeer vertalingen bij opslaan
90+
settings.keyfield.title = Toon vertaalsleutelveld
91+
settings.minify.title = Sla vertalingsbestanden gecomprimeerd op
9292
settings.resourcedef.help = <html>U kunt met '{' '}' tags het locale gedeelte aangeven binnen de bestandsnaam.<br>De tekst LOCALE binnen deze tags zal vervangen worden door de werkelijke locale.<br>Voorbeeld: translations'{'_LOCALE'}' wordt translations_nl_NL.</html>
9393
settings.resourcedef.title = Bestandsnaam vertalingen
94-
settings.resourcedirs.title = Vertalingsbestanden opslaan in afzonderlijke mappen
95-
settings.treetogglemode.title = Vertalingen in- en uitvouwen met dubbelklik
94+
settings.resourcedirs.title = Sla vertalingsbestanden in afzonderlijke mappen op
95+
settings.treetogglemode.title = Vertaalsleutels in- en uitvouwen met dubbelklik
9696
settings.checkversion.title = Controleer op nieuwe versie bij opstarten
97-
settings.plainJSON.title= Plain JSON keys
97+
settings.flattenjson.title = Sla JSON vertalingsbestanden in platte structuur op
9898

9999
swing.action.copy = Kopi\u00ebren
100100
swing.action.cut = Knippen

src/main/resources/bundles/messages_pt_BR.properties

+2-2
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ menu.edit.delete.title = Excluir Tradu\u00e7\u00e3o
4141
menu.edit.duplicate.title = Duplicar Tradu\u00e7\u00e3o...
4242
menu.edit.find.translation.title = Localizar Tradu\u00e7\u00e3o...
4343
menu.edit.rename.title = Renomear Tradu\u00e7\u00e3o...
44-
menu.edit.copy.key.title = Copy Translation Key...
44+
menu.edit.copy.key.title = Copy Translation Key
4545
menu.edit.title = Editar
4646
menu.edit.vk = E
4747
menu.file.exit.title = Sair
@@ -94,7 +94,7 @@ settings.resourcedef.title = Nome do arquivo de tradu\u00e7\u00e3es
9494
settings.resourcedirs.title = Save translation files in locale folders
9595
settings.treetogglemode.title = Expandir e contrair tradu\u00e7\u00f5es usando duplo clique
9696
settings.checkversion.title = Verificar a nova vers\u00e3o na inicializa\u00e7\u00e3o
97-
settings.plainJSON.title= Plain JSON keys
97+
settings.flattenjson.title = Flatten JSON translation files on save
9898

9999
swing.action.copy = Copiar
100100
swing.action.cut = Cortar

0 commit comments

Comments
 (0)