Skip to content

Commit 18e4dfc

Browse files
committed
I18n: tab.untitled + JFileChooser-Strings (nach LaF/Sprache)
applyFileChooserStrings setzt UIManager nach Theme und UI-Update; Reiter-Standardtitel aus tab.untitled. Made-with: Cursor
1 parent 31fbaf7 commit 18e4dfc

7 files changed

Lines changed: 125 additions & 2 deletions

File tree

src/main/java/de/visustruct/control/Controlling.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ private void applyConfiguredTheme() {
150150
}
151151

152152
UiTheme.applyAfterTheme();
153+
I18n.applyFileChooserStrings();
153154
} catch (Exception e) {
154155
e.printStackTrace();
155156
}
@@ -398,6 +399,7 @@ private void changeUiLanguageIfNeeded(String tag) {
398399
gui.rebuildMenuBar();
399400
SwingUtilities.updateComponentTreeUI(gui);
400401
gui.validate();
402+
I18n.applyFileChooserStrings();
401403
// Nach updateComponentTreeUI (FlatLaf), sonst bleiben Paletten-Buttons oft auf der alten Sprache.
402404
aktualisierePalettenBeschriftungen();
403405
SwingUtilities.invokeLater(this::aktualisierePalettenBeschriftungen);
@@ -430,6 +432,7 @@ private void changeTheme(int themeIndex){
430432
applyConfiguredTheme();
431433
SwingUtilities.updateComponentTreeUI(gui);
432434
gui.validate();
435+
I18n.applyFileChooserStrings();
433436
aktualisierePalettenBeschriftungen();
434437
SwingUtilities.invokeLater(this::aktualisierePalettenBeschriftungen);
435438
gui.gibTabbedpane().refreshAllStruktogrammeNachThemeWechsel();

src/main/java/de/visustruct/i18n/I18n.java

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
import java.util.MissingResourceException;
66
import java.util.ResourceBundle;
77

8+
import javax.swing.UIManager;
9+
810
import de.visustruct.control.GlobalSettings;
911

1012
/**
@@ -62,4 +64,34 @@ public static String trf(String key, Object... args) {
6264
public static Locale currentLocale() {
6365
return bundle.getLocale();
6466
}
67+
68+
/**
69+
* {@link javax.swing.JFileChooser}-Texte im aktuellen Bundle; nach jedem {@link UIManager#setLookAndFeel}
70+
* bzw. {@link javax.swing.SwingUtilities#updateComponentTreeUI} erneut aufrufen.
71+
*/
72+
public static void applyFileChooserStrings() {
73+
UIManager.put("FileChooser.acceptAllFileFilterText", tr("fileChooser.acceptAll"));
74+
UIManager.put("FileChooser.cancelButtonText", tr("fileChooser.cancel"));
75+
UIManager.put("FileChooser.cancelButtonToolTipText", tr("fileChooser.cancelTooltip"));
76+
UIManager.put("FileChooser.directoryOpenButtonText", tr("fileChooser.open"));
77+
UIManager.put("FileChooser.directoryOpenButtonToolTipText", tr("fileChooser.openTooltip"));
78+
UIManager.put("FileChooser.fileNameHeaderText", tr("fileChooser.fileName"));
79+
UIManager.put("FileChooser.fileNameLabelText", tr("fileChooser.fileName"));
80+
UIManager.put("FileChooser.filesOfTypeLabelText", tr("fileChooser.filesOfType"));
81+
UIManager.put("FileChooser.helpButtonText", tr("fileChooser.help"));
82+
UIManager.put("FileChooser.helpButtonToolTipText", tr("fileChooser.helpTooltip"));
83+
UIManager.put("FileChooser.lookInLabelText", tr("fileChooser.lookIn"));
84+
UIManager.put("FileChooser.newFolderErrorText", tr("fileChooser.newFolderError"));
85+
UIManager.put("FileChooser.openButtonText", tr("fileChooser.open"));
86+
UIManager.put("FileChooser.openButtonToolTipText", tr("fileChooser.openTooltip"));
87+
UIManager.put("FileChooser.openDialogTitleText", tr("fileChooser.openTitle"));
88+
UIManager.put("FileChooser.saveButtonText", tr("fileChooser.save"));
89+
UIManager.put("FileChooser.saveButtonToolTipText", tr("fileChooser.saveTooltip"));
90+
UIManager.put("FileChooser.saveDialogTitleText", tr("fileChooser.saveTitle"));
91+
UIManager.put("FileChooser.saveInLabelText", tr("fileChooser.saveIn"));
92+
UIManager.put("FileChooser.updateButtonText", tr("fileChooser.update"));
93+
UIManager.put("FileChooser.updateButtonToolTipText", tr("fileChooser.updateTooltip"));
94+
UIManager.put("FileChooser.newFolderButtonText", tr("fileChooser.newFolder"));
95+
UIManager.put("FileChooser.newFolderButtonToolTipText", tr("fileChooser.newFolderTooltip"));
96+
}
6597
}

src/main/java/de/visustruct/view/StrTabbedPane.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,7 @@ public void titelFuerStruktogrammBearbeitetMarkieren(Struktogramm str, boolean b
128128
String titel = getTitleAt(i);
129129
if (bearbeitet) {
130130
if (titel.isEmpty()) {
131-
titel = "Untitled*";
131+
titel = I18n.tr("tab.untitled") + "*";
132132
} else if (titel.charAt(titel.length() - 1) != '*') {
133133
titel += "*";
134134
}
@@ -162,7 +162,7 @@ public Struktogramm struktogrammHinzufuegen(){
162162
bc = Color.LIGHT_GRAY;
163163
}
164164
scroll.setBorder(BorderFactory.createLineBorder(bc, 1, true));
165-
add("Untitled", scroll);
165+
add(I18n.tr("tab.untitled"), scroll);
166166
//stateChangedFreigegeben = false; //changeListener kurz deaktivieren...
167167
setSelectedIndex(getTabCount() -1); //...weil es sonst in graphicsInitialisieren Probleme gibt
168168
//stateChangedFreigegeben = true;

src/main/resources/de/visustruct/i18n/Messages.properties

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,28 @@ dialog.caseSelectFirst.message=Please select a case in the list first.
7474
dialog.codeInvalidInput.title=Invalid input
7575
dialog.codeInvalidInput.message=Please enter whole numbers in the fields.
7676

77+
tab.untitled=Untitled
78+
fileChooser.openTitle=Open
79+
fileChooser.saveTitle=Save
80+
fileChooser.lookIn=Look in:
81+
fileChooser.saveIn=Save in:
82+
fileChooser.fileName=File name:
83+
fileChooser.filesOfType=Files of type:
84+
fileChooser.open=Open
85+
fileChooser.openTooltip=Open selected file.
86+
fileChooser.save=Save
87+
fileChooser.saveTooltip=Save selected file.
88+
fileChooser.cancel=Cancel
89+
fileChooser.cancelTooltip=Close dialog
90+
fileChooser.update=Update
91+
fileChooser.updateTooltip=Refresh listing
92+
fileChooser.newFolder=New folder
93+
fileChooser.newFolderTooltip=Create new folder
94+
fileChooser.acceptAll=All files
95+
fileChooser.help=Help
96+
fileChooser.helpTooltip=Help
97+
fileChooser.newFolderError=Could not create new folder.
98+
7799
# Structure block names (didactic; order = element types 0–9)
78100
structure.element.statement=Statement
79101
structure.element.decision=Decision

src/main/resources/de/visustruct/i18n/Messages_de.properties

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,28 @@ dialog.caseSelectFirst.message=Bitte zuerst einen Fall in der Liste auswählen.
7474
dialog.codeInvalidInput.title=Ungültige Eingabe
7575
dialog.codeInvalidInput.message=Bitte ganze Zahlen in den Feldern eintragen.
7676

77+
tab.untitled=Ohne Titel
78+
fileChooser.openTitle=Öffnen
79+
fileChooser.saveTitle=Speichern
80+
fileChooser.lookIn=Ordner:
81+
fileChooser.saveIn=Speichern in:
82+
fileChooser.fileName=Dateiname:
83+
fileChooser.filesOfType=Dateityp:
84+
fileChooser.open=Öffnen
85+
fileChooser.openTooltip=Ausgewählte Datei öffnen
86+
fileChooser.save=Speichern
87+
fileChooser.saveTooltip=Ausgewählte Datei speichern
88+
fileChooser.cancel=Abbrechen
89+
fileChooser.cancelTooltip=Dialog schließen
90+
fileChooser.update=Aktualisieren
91+
fileChooser.updateTooltip=Anzeige aktualisieren
92+
fileChooser.newFolder=Neuer Ordner
93+
fileChooser.newFolderTooltip=Neuen Ordner anlegen
94+
fileChooser.acceptAll=Alle Dateien
95+
fileChooser.help=Hilfe
96+
fileChooser.helpTooltip=Hilfe
97+
fileChooser.newFolderError=Neuer Ordner konnte nicht angelegt werden.
98+
7799
# Didaktische / fachliche Namen der Strukturblöcke (Reihenfolge = Elementtypen 0–9)
78100
structure.element.statement=Anweisung
79101
structure.element.decision=Verzweigung

src/main/resources/de/visustruct/i18n/Messages_en.properties

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,28 @@ dialog.caseSelectFirst.message=Please select a case in the list first.
7474
dialog.codeInvalidInput.title=Invalid input
7575
dialog.codeInvalidInput.message=Please enter whole numbers in the fields.
7676

77+
tab.untitled=Untitled
78+
fileChooser.openTitle=Open
79+
fileChooser.saveTitle=Save
80+
fileChooser.lookIn=Look in:
81+
fileChooser.saveIn=Save in:
82+
fileChooser.fileName=File name:
83+
fileChooser.filesOfType=Files of type:
84+
fileChooser.open=Open
85+
fileChooser.openTooltip=Open selected file.
86+
fileChooser.save=Save
87+
fileChooser.saveTooltip=Save selected file.
88+
fileChooser.cancel=Cancel
89+
fileChooser.cancelTooltip=Close dialog
90+
fileChooser.update=Update
91+
fileChooser.updateTooltip=Refresh listing
92+
fileChooser.newFolder=New folder
93+
fileChooser.newFolderTooltip=Create new folder
94+
fileChooser.acceptAll=All files
95+
fileChooser.help=Help
96+
fileChooser.helpTooltip=Help
97+
fileChooser.newFolderError=Could not create new folder.
98+
7799
# Structure block names (didactic; order = element types 0–9)
78100
structure.element.statement=Statement
79101
structure.element.decision=Decision

src/main/resources/de/visustruct/i18n/Messages_pt_PT.properties

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,28 @@ dialog.caseSelectFirst.message=Selecione primeiro um caso na lista.
7474
dialog.codeInvalidInput.title=Entrada inválida
7575
dialog.codeInvalidInput.message=Introduza números inteiros nos campos.
7676

77+
tab.untitled=Sem título
78+
fileChooser.openTitle=Abrir
79+
fileChooser.saveTitle=Guardar
80+
fileChooser.lookIn=Procurar em:
81+
fileChooser.saveIn=Guardar em:
82+
fileChooser.fileName=Nome do ficheiro:
83+
fileChooser.filesOfType=Tipo de ficheiros:
84+
fileChooser.open=Abrir
85+
fileChooser.openTooltip=Abrir o ficheiro selecionado.
86+
fileChooser.save=Guardar
87+
fileChooser.saveTooltip=Guardar o ficheiro selecionado.
88+
fileChooser.cancel=Cancelar
89+
fileChooser.cancelTooltip=Fechar a caixa de diálogo
90+
fileChooser.update=Atualizar
91+
fileChooser.updateTooltip=Atualizar a lista
92+
fileChooser.newFolder=Nova pasta
93+
fileChooser.newFolderTooltip=Criar nova pasta
94+
fileChooser.acceptAll=Todos os ficheiros
95+
fileChooser.help=Ajuda
96+
fileChooser.helpTooltip=Ajuda
97+
fileChooser.newFolderError=Não foi possível criar a pasta.
98+
7799
# Nomes didáticos dos blocos de estrutura (ordem = tipos de elemento 0–9)
78100
structure.element.statement=Instrução
79101
structure.element.decision=Decisão

0 commit comments

Comments
 (0)