From 4471ca5bd0e00a0d8276d1a22becd9ca516d2e7c Mon Sep 17 00:00:00 2001 From: Tobias Diez Date: Sat, 28 Oct 2017 13:48:16 +0800 Subject: [PATCH 1/3] Update entry for every change in the source panel --- .../jabref/gui/entryeditor/EntryEditor.java | 8 -- .../org/jabref/gui/entryeditor/SourceTab.java | 116 +++++++----------- .../org/jabref/gui/util/BindingsHelper.java | 62 ++++++++++ .../java/org/jabref/model/entry/BibEntry.java | 4 + 4 files changed, 108 insertions(+), 82 deletions(-) diff --git a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java index b663ace6e7f..9a02d5adeca 100644 --- a/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java +++ b/src/main/java/org/jabref/gui/entryeditor/EntryEditor.java @@ -83,7 +83,6 @@ import org.jabref.model.database.BibDatabase; import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.EntryType; -import org.jabref.model.entry.event.EntryChangedEvent; import org.jabref.model.entry.event.FieldAddedOrRemovedEvent; import org.jabref.preferences.JabRefPreferences; @@ -196,7 +195,6 @@ public EntryEditor(BasePanel panel) { public void setEntry(BibEntry entry) { this.entry = Objects.requireNonNull(entry); - entry.registerListener(this); entryType = EntryTypes.getTypeOrDefault(entry.getType(), this.frame.getCurrentBasePanel().getBibDatabaseContext().getMode()); @@ -223,11 +221,6 @@ public synchronized void listen(FieldAddedOrRemovedEvent event) { recalculateVisibleTabs(); } - @Subscribe - public synchronized void listen(EntryChangedEvent event) { - DefaultTaskExecutor.runInJavaFXThread(() -> sourceTab.updateSourcePane(entry)); - } - /** * Set-up key bindings specific for the entry editor. */ @@ -520,7 +513,6 @@ public void setMovingToDifferentEntry() { } private void unregisterListeners() { - this.entry.unregisterListener(this); removeSearchListeners(); } diff --git a/src/main/java/org/jabref/gui/entryeditor/SourceTab.java b/src/main/java/org/jabref/gui/entryeditor/SourceTab.java index 0cf7dd39f53..c5f804b9a9a 100644 --- a/src/main/java/org/jabref/gui/entryeditor/SourceTab.java +++ b/src/main/java/org/jabref/gui/entryeditor/SourceTab.java @@ -8,17 +8,19 @@ import javax.swing.undo.UndoManager; -import javafx.scene.Node; +import javafx.application.Platform; +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.SimpleObjectProperty; +import javafx.collections.ListChangeListener; import javafx.scene.control.Tooltip; import org.jabref.Globals; import org.jabref.gui.BasePanel; -import org.jabref.gui.DialogService; -import org.jabref.gui.FXDialogService; import org.jabref.gui.IconTheme; import org.jabref.gui.undo.NamedCompound; import org.jabref.gui.undo.UndoableChangeType; import org.jabref.gui.undo.UndoableFieldChange; +import org.jabref.gui.util.BindingsHelper; import org.jabref.logic.bibtex.BibEntryWriter; import org.jabref.logic.bibtex.InvalidFieldValueException; import org.jabref.logic.bibtex.LatexFieldFormatter; @@ -30,9 +32,11 @@ import org.jabref.model.entry.BibEntry; import org.jabref.model.entry.InternalBibtexFields; +import de.saxsys.mvvmfx.utils.validation.ObservableRuleBasedValidator; +import de.saxsys.mvvmfx.utils.validation.ValidationMessage; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.fxmisc.easybind.EasyBind; +import org.controlsfx.control.NotificationPane; import org.fxmisc.flowless.VirtualizedScrollPane; import org.fxmisc.richtext.CodeArea; @@ -40,13 +44,12 @@ public class SourceTab extends EntryEditorTab { private static final Log LOGGER = LogFactory.getLog(SourceTab.class); private final BibDatabaseMode mode; - private final BasePanel panel; - private CodeArea codeArea; private UndoManager undoManager; + private final ObjectProperty sourceIsValid = new SimpleObjectProperty<>(); + private final ObservableRuleBasedValidator sourceValidator = new ObservableRuleBasedValidator(sourceIsValid); public SourceTab(BasePanel panel) { this.mode = panel.getBibDatabaseContext().getMode(); - this.panel = panel; this.setText(Localization.lang("%0 source", mode.getFormattedName())); this.setTooltip(new Tooltip(Localization.lang("Show/edit %0 source", mode.getFormattedName()))); this.setGraphic(IconTheme.JabRefIcon.SOURCE.getGraphicNode()); @@ -62,50 +65,12 @@ private static String getSourceString(BibEntry entry, BibDatabaseMode type) thro return stringWriter.getBuffer().toString(); } - public void updateSourcePane(BibEntry entry) { - if (codeArea != null) { - try { - codeArea.clear(); - codeArea.appendText(getSourceString(entry, mode)); - } catch (IOException ex) { - codeArea.appendText(ex.getMessage() + "\n\n" + - Localization.lang("Correct the entry, and reopen editor to display/edit source.")); - codeArea.setEditable(false); - LOGGER.debug("Incorrect entry", ex); - } - } - } - - private Node createSourceEditor(BibDatabaseMode mode) { - codeArea = new CodeArea(); + private CodeArea createSourceEditor() { + CodeArea codeArea = new CodeArea(); codeArea.setWrapText(true); codeArea.lookup(".styled-text-area").setStyle( "-fx-font-size: " + Globals.prefs.getFontSizeFX() + "pt;"); - // store source if new tab is selected (if this one is not focused anymore) - EasyBind.subscribe(codeArea.focusedProperty(), focused -> { - if (!focused) { - storeSource(); - } - }); - - try { - String srcString = getSourceString(this.currentEntry, mode); - codeArea.appendText(srcString); - } catch (IOException ex) { - codeArea.appendText(ex.getMessage() + "\n\n" + - Localization.lang("Correct the entry, and reopen editor to display/edit source.")); - codeArea.setEditable(false); - LOGGER.debug("Incorrect entry", ex); - } - - // set the database to dirty when something is changed in the source tab - EasyBind.subscribe(codeArea.beingUpdatedProperty(), updated -> { - if (updated) { - panel.markBaseChanged(); - } - }); - - return new VirtualizedScrollPane<>(codeArea); + return codeArea; } @Override @@ -115,17 +80,40 @@ public boolean shouldShow(BibEntry entry) { @Override protected void bindToEntry(BibEntry entry) { - this.setContent(createSourceEditor(mode)); + CodeArea codeArea = createSourceEditor(); + VirtualizedScrollPane node = new VirtualizedScrollPane<>(codeArea); + NotificationPane notificationPane = new NotificationPane(node); + notificationPane.setShowFromTop(false); + sourceValidator.getValidationStatus().getMessages().addListener((ListChangeListener) c -> { + while (c.next()) { + Platform.runLater(() -> sourceValidator.getValidationStatus().getHighestMessage().ifPresent(validationMessage -> notificationPane.show(validationMessage.getMessage()))); + } + }); + this.setContent(notificationPane); + + // Store source for every change in the source code + // and update source code for every change of entry field values + BindingsHelper.bindContentBidirectional(entry.getFieldsObservable(), codeArea.textProperty(), this::storeSource, fields -> { + codeArea.clear(); + try { + codeArea.appendText(getSourceString(entry, mode)); + } catch (IOException ex) { + codeArea.setEditable(false); + codeArea.appendText(ex.getMessage() + "\n\n" + + Localization.lang("Correct the entry, and reopen editor to display/edit source.")); + LOGGER.debug("Incorrect entry", ex); + } + }); } - private void storeSource() { - if (codeArea.getText().isEmpty()) { + private void storeSource(String text) { + if (text.isEmpty()) { return; } BibtexParser bibtexParser = new BibtexParser(Globals.prefs.getImportFormatPreferences()); try { - ParserResult parserResult = bibtexParser.parse(new StringReader(codeArea.getText())); + ParserResult parserResult = bibtexParser.parse(new StringReader(text)); BibDatabase database = parserResult.getDatabase(); if (database.getEntryCount() > 1) { @@ -185,29 +173,9 @@ private void storeSource() { } compound.end(); undoManager.addEdit(compound); - - } catch (InvalidFieldValueException | IOException ex) { - // The source couldn't be parsed, so the user is given an - // error message, and the choice to keep or revert the contents - // of the source text field. - + } catch (InvalidFieldValueException | IllegalStateException | IOException ex) { + sourceIsValid.setValue(ValidationMessage.error(Localization.lang("Problem with parsing entry") + ": " + ex.getMessage())); LOGGER.debug("Incorrect source", ex); - DialogService dialogService = new FXDialogService(); - boolean keepEditing = dialogService.showConfirmationDialogAndWait( - Localization.lang("Problem with parsing entry"), - Localization.lang("Error") + ": " + ex.getMessage(), - Localization.lang("Edit"), - Localization.lang("Revert to original source") - ); - - if (!keepEditing) { - // Revert - try { - codeArea.replaceText(0, codeArea.getText().length(), getSourceString(this.currentEntry, mode)); - } catch (IOException e) { - LOGGER.debug("Incorrect source", e); - } - } } } } diff --git a/src/main/java/org/jabref/gui/util/BindingsHelper.java b/src/main/java/org/jabref/gui/util/BindingsHelper.java index 246ad43ff50..22b26f2db82 100644 --- a/src/main/java/org/jabref/gui/util/BindingsHelper.java +++ b/src/main/java/org/jabref/gui/util/BindingsHelper.java @@ -1,6 +1,7 @@ package org.jabref.gui.util; import java.util.List; +import java.util.Map; import java.util.function.Consumer; import java.util.function.Function; import java.util.function.Predicate; @@ -14,7 +15,9 @@ import javafx.beans.value.ChangeListener; import javafx.beans.value.ObservableValue; import javafx.collections.ListChangeListener; +import javafx.collections.MapChangeListener; import javafx.collections.ObservableList; +import javafx.collections.ObservableMap; import javafx.css.PseudoClass; import javafx.scene.Node; @@ -128,6 +131,25 @@ public static void bindContentBidirectional(ListProperty listProperty, updateB); } + public static void bindContentBidirectional(ObservableMap propertyA, ObservableValue propertyB, Consumer updateA, Consumer> updateB) { + final BidirectionalMapBinding binding = new BidirectionalMapBinding<>(propertyA, propertyB, updateA, updateB); + + // use list as initial source + updateB.accept(propertyA); + + propertyA.addListener(binding); + propertyB.addListener(binding); + } + + public static void bindContentBidirectional(ObservableMap propertyA, Property propertyB, Consumer updateA, Function, B> mapToB) { + Consumer> updateB = newValueList -> propertyB.setValue(mapToB.apply(newValueList)); + bindContentBidirectional( + propertyA, + propertyB, + updateA, + updateB); + } + private static class BidirectionalBinding { private final ObservableValue propertyA; @@ -208,4 +230,44 @@ public void onChanged(Change c) { } } } + + private static class BidirectionalMapBinding implements MapChangeListener, ChangeListener { + + private final ObservableMap mapProperty; + private final ObservableValue property; + private final Consumer updateA; + private final Consumer> updateB; + private boolean updating = false; + + public BidirectionalMapBinding(ObservableMap mapProperty, ObservableValue property, Consumer updateA, Consumer> updateB) { + this.mapProperty = mapProperty; + this.property = property; + this.updateA = updateA; + this.updateB = updateB; + } + + @Override + public void changed(ObservableValue observable, B oldValue, B newValue) { + if (!updating) { + try { + updating = true; + updateA.accept(newValue); + } finally { + updating = false; + } + } + } + + @Override + public void onChanged(Change c) { + if (!updating) { + try { + updating = true; + updateB.accept(mapProperty); + } finally { + updating = false; + } + } + } + } } diff --git a/src/main/java/org/jabref/model/entry/BibEntry.java b/src/main/java/org/jabref/model/entry/BibEntry.java index d383b09b5c9..db5bba9469c 100644 --- a/src/main/java/org/jabref/model/entry/BibEntry.java +++ b/src/main/java/org/jabref/model/entry/BibEntry.java @@ -843,6 +843,10 @@ public Optional addFile(LinkedFile file) { return setFiles(linkedFiles); } + public ObservableMap getFieldsObservable() { + return fields; + } + private interface GetFieldInterface { Optional getValueForField(String fieldName); From 71c3aee1e90ab39e3f7e0233dcb75cfc005f8477 Mon Sep 17 00:00:00 2001 From: Tobias Diez Date: Sat, 28 Oct 2017 23:49:37 +0800 Subject: [PATCH 2/3] Fix exception thrown when entry is updated while source code view is open --- .../org/jabref/gui/entryeditor/SourceTab.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/src/main/java/org/jabref/gui/entryeditor/SourceTab.java b/src/main/java/org/jabref/gui/entryeditor/SourceTab.java index c5f804b9a9a..edbb62dcd57 100644 --- a/src/main/java/org/jabref/gui/entryeditor/SourceTab.java +++ b/src/main/java/org/jabref/gui/entryeditor/SourceTab.java @@ -21,6 +21,7 @@ import org.jabref.gui.undo.UndoableChangeType; import org.jabref.gui.undo.UndoableFieldChange; import org.jabref.gui.util.BindingsHelper; +import org.jabref.gui.util.DefaultTaskExecutor; import org.jabref.logic.bibtex.BibEntryWriter; import org.jabref.logic.bibtex.InvalidFieldValueException; import org.jabref.logic.bibtex.LatexFieldFormatter; @@ -94,15 +95,17 @@ protected void bindToEntry(BibEntry entry) { // Store source for every change in the source code // and update source code for every change of entry field values BindingsHelper.bindContentBidirectional(entry.getFieldsObservable(), codeArea.textProperty(), this::storeSource, fields -> { - codeArea.clear(); - try { - codeArea.appendText(getSourceString(entry, mode)); - } catch (IOException ex) { - codeArea.setEditable(false); - codeArea.appendText(ex.getMessage() + "\n\n" + - Localization.lang("Correct the entry, and reopen editor to display/edit source.")); - LOGGER.debug("Incorrect entry", ex); - } + DefaultTaskExecutor.runInJavaFXThread(() -> { + codeArea.clear(); + try { + codeArea.appendText(getSourceString(entry, mode)); + } catch (IOException ex) { + codeArea.setEditable(false); + codeArea.appendText(ex.getMessage() + "\n\n" + + Localization.lang("Correct the entry, and reopen editor to display/edit source.")); + LOGGER.debug("Incorrect entry", ex); + } + }); }); } From d68496b01a7c27063698c6c1aedd64d3f8802c76 Mon Sep 17 00:00:00 2001 From: Tobias Diez Date: Tue, 31 Oct 2017 20:18:34 +0800 Subject: [PATCH 3/3] Fix language --- src/main/resources/l10n/JabRef_da.properties | 2 -- src/main/resources/l10n/JabRef_de.properties | 2 -- src/main/resources/l10n/JabRef_el.properties | 2 -- src/main/resources/l10n/JabRef_en.properties | 2 -- src/main/resources/l10n/JabRef_es.properties | 2 -- src/main/resources/l10n/JabRef_fa.properties | 2 -- src/main/resources/l10n/JabRef_fr.properties | 2 -- src/main/resources/l10n/JabRef_in.properties | 2 -- src/main/resources/l10n/JabRef_it.properties | 2 -- src/main/resources/l10n/JabRef_ja.properties | 2 -- src/main/resources/l10n/JabRef_nl.properties | 2 -- src/main/resources/l10n/JabRef_no.properties | 2 -- src/main/resources/l10n/JabRef_pt_BR.properties | 2 -- src/main/resources/l10n/JabRef_ru.properties | 2 -- src/main/resources/l10n/JabRef_sv.properties | 2 -- src/main/resources/l10n/JabRef_tr.properties | 2 -- src/main/resources/l10n/JabRef_vi.properties | 2 -- src/main/resources/l10n/JabRef_zh.properties | 2 -- 18 files changed, 36 deletions(-) diff --git a/src/main/resources/l10n/JabRef_da.properties b/src/main/resources/l10n/JabRef_da.properties index 65cd98df5d2..ea2a4edf45c 100644 --- a/src/main/resources/l10n/JabRef_da.properties +++ b/src/main/resources/l10n/JabRef_da.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only=Slå_kun_strenge_op_for_standard resolved=løst -Revert_to_original_source=Ret_tilbage_til_oprindelig_kildekode - Review=Kommentarer Review_changes=Gennemse_ændringer diff --git a/src/main/resources/l10n/JabRef_de.properties b/src/main/resources/l10n/JabRef_de.properties index 83dea0b6cfb..ccfa3850681 100644 --- a/src/main/resources/l10n/JabRef_de.properties +++ b/src/main/resources/l10n/JabRef_de.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only=Strings_nur_für_Standard-BibTeX resolved=davon_aufgelöst -Revert_to_original_source=Original_wiederherstellen - Review=Überprüfung Review_changes=Änderungen_überprüfen diff --git a/src/main/resources/l10n/JabRef_el.properties b/src/main/resources/l10n/JabRef_el.properties index 05f875c196a..679dbe3cb43 100644 --- a/src/main/resources/l10n/JabRef_el.properties +++ b/src/main/resources/l10n/JabRef_el.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only= resolved= -Revert_to_original_source= - Review= Review_changes= diff --git a/src/main/resources/l10n/JabRef_en.properties b/src/main/resources/l10n/JabRef_en.properties index 87abfe1ce71..f9bc1b5fb4e 100644 --- a/src/main/resources/l10n/JabRef_en.properties +++ b/src/main/resources/l10n/JabRef_en.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only=Resolve_strings_for_standard_Bib resolved=resolved -Revert_to_original_source=Revert_to_original_source - Review=Review Review_changes=Review_changes diff --git a/src/main/resources/l10n/JabRef_es.properties b/src/main/resources/l10n/JabRef_es.properties index 542112d1651..3907820c9ce 100644 --- a/src/main/resources/l10n/JabRef_es.properties +++ b/src/main/resources/l10n/JabRef_es.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only=Resolver_cadenas_únicamente_par resolved=resuelto -Revert_to_original_source=Volver_a_la_fuente_original - Review=Revisar Review_changes=Revisar_cambios diff --git a/src/main/resources/l10n/JabRef_fa.properties b/src/main/resources/l10n/JabRef_fa.properties index 24dd3b29d54..ce453356635 100644 --- a/src/main/resources/l10n/JabRef_fa.properties +++ b/src/main/resources/l10n/JabRef_fa.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only= resolved= -Revert_to_original_source= - Review= Review_changes= diff --git a/src/main/resources/l10n/JabRef_fr.properties b/src/main/resources/l10n/JabRef_fr.properties index d190a6b8fd5..9e30d0fdf7f 100644 --- a/src/main/resources/l10n/JabRef_fr.properties +++ b/src/main/resources/l10n/JabRef_fr.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only=Traiter_les_chaînes_pour_les_ch resolved=résolu -Revert_to_original_source=Rétablir_le_contenu_initial - Review=Remarques Review_changes=Revoir_les_changements diff --git a/src/main/resources/l10n/JabRef_in.properties b/src/main/resources/l10n/JabRef_in.properties index 9e3c200840a..622362c0a07 100644 --- a/src/main/resources/l10n/JabRef_in.properties +++ b/src/main/resources/l10n/JabRef_in.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only=Selesaikan_masalah_string_hanya_ resolved=sudah_diselesaikan -Revert_to_original_source=Kembalikan_ke_sumber_asli - Review=Periksa_ulang Review_changes=Periksa_ulang_perubahan diff --git a/src/main/resources/l10n/JabRef_it.properties b/src/main/resources/l10n/JabRef_it.properties index 737394f837b..6deab86e64f 100644 --- a/src/main/resources/l10n/JabRef_it.properties +++ b/src/main/resources/l10n/JabRef_it.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only=Risolve_le_stringhe_solo_per_i_c resolved=risolto -Revert_to_original_source=Ripristina_il_contenuto_iniziale - Review=Rivedi Review_changes=Rivedi_le_modifiche diff --git a/src/main/resources/l10n/JabRef_ja.properties b/src/main/resources/l10n/JabRef_ja.properties index 1064e1fcf0a..6cc96198a66 100644 --- a/src/main/resources/l10n/JabRef_ja.properties +++ b/src/main/resources/l10n/JabRef_ja.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only=文字列をBibTeX標準フィ resolved=解消しました -Revert_to_original_source=元のソースに復帰する - Review=論評 Review_changes=変更を検査する diff --git a/src/main/resources/l10n/JabRef_nl.properties b/src/main/resources/l10n/JabRef_nl.properties index b16c2f31a2e..8caf09ab157 100644 --- a/src/main/resources/l10n/JabRef_nl.properties +++ b/src/main/resources/l10n/JabRef_nl.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only= resolved=opgelost -Revert_to_original_source=Herstel_naar_originele_bron - Review=Recensie Review_changes=Bekijk_veranderingen diff --git a/src/main/resources/l10n/JabRef_no.properties b/src/main/resources/l10n/JabRef_no.properties index 1b8348287ae..57668394554 100644 --- a/src/main/resources/l10n/JabRef_no.properties +++ b/src/main/resources/l10n/JabRef_no.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only=Sl\u00e5_opp_strenger_kun_for_st resolved=tatt_h\u00e5nd_om -Revert_to_original_source=Resett_til_opprinnelig_kildekode - Review=Kommentarer Review_changes=Se_over_endringer diff --git a/src/main/resources/l10n/JabRef_pt_BR.properties b/src/main/resources/l10n/JabRef_pt_BR.properties index afc2cf1cc07..fe0c865c65d 100644 --- a/src/main/resources/l10n/JabRef_pt_BR.properties +++ b/src/main/resources/l10n/JabRef_pt_BR.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only=Resolver_strings_apenas_para_cam resolved=resolvido -Revert_to_original_source=Reverter_para_o_original - Review=Revisar Review_changes=Revisar_mudanças diff --git a/src/main/resources/l10n/JabRef_ru.properties b/src/main/resources/l10n/JabRef_ru.properties index a26fdb69084..327a2a8a5c5 100644 --- a/src/main/resources/l10n/JabRef_ru.properties +++ b/src/main/resources/l10n/JabRef_ru.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only=Разрешение_для_ст resolved=разрешено -Revert_to_original_source=Восстановить_исходный_источник - Review=Просмотр Review_changes=Просмотр_изменений diff --git a/src/main/resources/l10n/JabRef_sv.properties b/src/main/resources/l10n/JabRef_sv.properties index 5c457860186..af8832d88b2 100644 --- a/src/main/resources/l10n/JabRef_sv.properties +++ b/src/main/resources/l10n/JabRef_sv.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only=Ersätt_bara_strängar_för_de_v resolved= -Revert_to_original_source= - Review= Review_changes=Kontrollera_ändringar diff --git a/src/main/resources/l10n/JabRef_tr.properties b/src/main/resources/l10n/JabRef_tr.properties index 985f5187150..cdca5d0efda 100644 --- a/src/main/resources/l10n/JabRef_tr.properties +++ b/src/main/resources/l10n/JabRef_tr.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only=Yalnızca_standart_BibTeX_alan_d resolved=çözümlendi -Revert_to_original_source=Orijinal_kaynağa_döndür - Review=Gözden_geçir Review_changes=Değişklikleri_incele diff --git a/src/main/resources/l10n/JabRef_vi.properties b/src/main/resources/l10n/JabRef_vi.properties index 79b95120b63..41d582e3299 100644 --- a/src/main/resources/l10n/JabRef_vi.properties +++ b/src/main/resources/l10n/JabRef_vi.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only=Chỉ_giải_các_chuỗi_cho_c resolved=được_giải -Revert_to_original_source=Trả_ngược_lại_nguồn_ban_đầu - Review=Xem_xét_lại Review_changes=Xem_xét_lại_các_thay_đổi diff --git a/src/main/resources/l10n/JabRef_zh.properties b/src/main/resources/l10n/JabRef_zh.properties index 8d56d18cd9e..3085049edd0 100644 --- a/src/main/resources/l10n/JabRef_zh.properties +++ b/src/main/resources/l10n/JabRef_zh.properties @@ -1025,8 +1025,6 @@ Resolve_strings_for_standard_BibTeX_fields_only=只处理标准_BibTeX_域的简 resolved=已解决 -Revert_to_original_source=恢复到初始源 - Review=评论 Review_changes=复查修改