├── src
├── test
│ ├── resources
│ │ └── single
│ │ │ ├── yaml
│ │ │ ├── de.yaml
│ │ │ └── en.yaml
│ │ │ ├── properties
│ │ │ ├── de.properties
│ │ │ └── en.properties
│ │ │ ├── json
│ │ │ ├── en.json
│ │ │ └── de.json
│ │ │ └── json5
│ │ │ ├── de.json5
│ │ │ └── en.json5
│ └── java
│ │ ├── de
│ │ └── marhali
│ │ │ └── easyi18n
│ │ │ ├── e2e
│ │ │ ├── single
│ │ │ │ ├── SingleJsonTest.java
│ │ │ │ ├── SingleYamlTest.java
│ │ │ │ ├── SingleJson5Test.java
│ │ │ │ └── SinglePropertiesTest.java
│ │ │ ├── TestSettingsState.java
│ │ │ └── EndToEndTestCase.java
│ │ │ ├── mapper
│ │ │ └── AbstractMapperTest.java
│ │ │ ├── WildcardRegexMatcherTest.java
│ │ │ └── settings
│ │ │ ├── NamingConventionTest.java
│ │ │ ├── ProjectSettingsServiceTest.java
│ │ │ └── SettingsTestPreset.java
│ │ └── util
│ │ └── TranslationUtilTest.java
└── main
│ ├── resources
│ ├── icons
│ │ ├── translate13.svg
│ │ └── translate13_dark.svg
│ └── META-INF
│ │ ├── de.marhali.easyi18n-php.xml
│ │ ├── de.marhali.easyi18n-java.xml
│ │ ├── de.marhali.easyi18n-kotlin.xml
│ │ ├── de.marhali.easyi18n-xml.xml
│ │ ├── de.marhali.easyi18n-javascript.xml
│ │ ├── pluginIcon.svg
│ │ └── plugin.xml
│ └── java
│ └── de
│ └── marhali
│ └── easyi18n
│ ├── model
│ ├── bus
│ │ ├── ExpandAllListener.java
│ │ ├── FilteredBusListener.java
│ │ ├── FilterIncompleteListener.java
│ │ ├── BusListener.java
│ │ ├── FilterDuplicateListener.java
│ │ ├── FocusKeyListener.java
│ │ ├── UpdateDataListener.java
│ │ └── SearchQueryListener.java
│ ├── action
│ │ ├── TranslationCreate.java
│ │ ├── TranslationDelete.java
│ │ └── TranslationUpdate.java
│ ├── KeyPath.java
│ ├── TranslationFile.java
│ ├── Translation.java
│ └── TranslationValue.java
│ ├── exception
│ ├── EmptyLocalesDirException.java
│ └── SyntaxException.java
│ ├── assistance
│ ├── OptionalAssistance.java
│ ├── completion
│ │ ├── JavaCompletionContributor.java
│ │ ├── JsCompletionContributor.java
│ │ ├── XmlCompletionContributor.java
│ │ ├── KtCompletionContributor.java
│ │ ├── PhpCompletionContributor.java
│ │ └── KeyCompletionProvider.java
│ ├── intention
│ │ ├── PhpTranslationIntention.java
│ │ ├── KtTranslationIntention.java
│ │ ├── JavaTranslationIntention.java
│ │ ├── XmlTranslationIntention.java
│ │ └── JsTranslationIntention.java
│ ├── documentation
│ │ └── CommonDocumentationProvider.java
│ ├── folding
│ │ ├── XmlFoldingBuilder.java
│ │ ├── JsFoldingBuilder.java
│ │ ├── PhpFoldingBuilder.java
│ │ ├── JavaFoldingBuilder.java
│ │ └── KtFoldingBuilder.java
│ └── reference
│ │ ├── JavaKeyReferenceContributor.java
│ │ ├── PhpKeyReferenceContributor.java
│ │ ├── XmlKeyReferenceContributor.java
│ │ ├── JsKeyReferenceContributor.java
│ │ ├── KtKeyReferenceContributor.java
│ │ ├── AbstractKeyReferenceContributor.java
│ │ └── PsiKeyReference.java
│ ├── io
│ ├── parser
│ │ ├── yaml
│ │ │ ├── YamlArrayMapper.java
│ │ │ ├── YamlParserStrategy.java
│ │ │ └── YamlMapper.java
│ │ ├── properties
│ │ │ ├── PropertiesArrayMapper.java
│ │ │ ├── PropertiesMapper.java
│ │ │ └── PropertiesParserStrategy.java
│ │ ├── json
│ │ │ ├── JsonArrayMapper.java
│ │ │ ├── JsonParserStrategy.java
│ │ │ └── JsonMapper.java
│ │ ├── ParserStrategyType.java
│ │ ├── json5
│ │ │ ├── Json5ArrayMapper.java
│ │ │ ├── Json5ParserStrategy.java
│ │ │ └── Json5Mapper.java
│ │ ├── ArrayMapper.java
│ │ └── ParserStrategy.java
│ └── folder
│ │ ├── FolderStrategyType.java
│ │ ├── SingleFolderStrategy.java
│ │ ├── ModularNamespaceFolderStrategy.java
│ │ └── FolderStrategy.java
│ ├── util
│ ├── WildcardRegexMatcher.java
│ ├── IntelliJBufferedWriter.java
│ ├── UiUtil.java
│ ├── TreeUtil.java
│ ├── DocumentUtil.java
│ ├── NotificationHelper.java
│ └── TranslationUtil.java
│ ├── listener
│ ├── DeleteKeyListener.java
│ ├── ReturnKeyListener.java
│ └── PopupClickListener.java
│ ├── action
│ ├── ReloadAction.java
│ ├── treeview
│ │ ├── ExpandTreeViewAction.java
│ │ └── CollapseTreeViewAction.java
│ ├── SettingsAction.java
│ ├── FilterIncompleteAction.java
│ ├── FilterDuplicateAction.java
│ ├── OpenFileAction.java
│ ├── SearchAction.java
│ └── AddAction.java
│ ├── settings
│ ├── presets
│ │ ├── Preset.java
│ │ ├── VueI18nPreset.java
│ │ ├── ReactI18NextPreset.java
│ │ ├── DefaultPreset.java
│ │ └── NamingConvention.java
│ ├── ProjectSettingsService.java
│ ├── ProjectSettings.java
│ └── ProjectSettingsConfigurable.java
│ ├── dialog
│ ├── descriptor
│ │ └── DeleteActionDescriptor.java
│ ├── EditDialog.java
│ └── AddDialog.java
│ ├── tabs
│ ├── TableView.form
│ ├── TreeView.form
│ └── renderer
│ │ ├── TreeRenderer.java
│ │ └── TableRenderer.java
│ ├── service
│ ├── WindowManager.java
│ ├── FileChangeListener.java
│ └── TranslatorToolWindowFactory.java
│ ├── DataBus.java
│ └── InstanceManager.java
├── .gitignore
├── example
├── images
│ ├── key-edit.PNG
│ ├── settings.PNG
│ ├── table-view.PNG
│ ├── tree-view.PNG
│ ├── key-annotation.PNG
│ └── key-completion.PNG
├── modularized-json
│ ├── locale-en
│ │ ├── account.json
│ │ ├── auth.json
│ │ └── user.json
│ └── locale-de
│ │ ├── account.json
│ │ ├── auth.json
│ │ └── user.json
├── resource-bundle
│ ├── locale_en.properties
│ └── locale_de.properties
├── yaml
│ ├── locale-en.yml
│ └── locale-de.yml
└── json
│ ├── locale-en.json
│ └── locale-de.json
├── gradle
├── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
└── libs.versions.toml
├── settings.gradle.kts
├── codecov.yml
├── qodana.yml
├── .github
├── dependabot.yml
└── workflows
│ └── run-ui-tests.yml
├── LICENSE
├── .run
├── Run Tests.run.xml
├── Run Plugin.run.xml
└── Run Verifications.run.xml
├── gradle.properties
└── gradlew.bat
/src/test/resources/single/yaml/de.yaml:
--------------------------------------------------------------------------------
1 | title: Titel
2 | nested:
3 | title: Titel
4 |
--------------------------------------------------------------------------------
/src/test/resources/single/yaml/en.yaml:
--------------------------------------------------------------------------------
1 | title: Title
2 | nested:
3 | title: Title
4 |
--------------------------------------------------------------------------------
/src/test/resources/single/properties/de.properties:
--------------------------------------------------------------------------------
1 | breakLine=eins\nzwei
2 | title=Titel
3 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | .gradle
3 | .idea
4 | .intellijPlatform
5 | .kotlin
6 | .qodana
7 | build
--------------------------------------------------------------------------------
/src/test/resources/single/properties/en.properties:
--------------------------------------------------------------------------------
1 | breakLine=first\nsecond
2 | title=Title
3 |
--------------------------------------------------------------------------------
/example/images/key-edit.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marhali/easy-i18n/HEAD/example/images/key-edit.PNG
--------------------------------------------------------------------------------
/example/images/settings.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marhali/easy-i18n/HEAD/example/images/settings.PNG
--------------------------------------------------------------------------------
/example/images/table-view.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marhali/easy-i18n/HEAD/example/images/table-view.PNG
--------------------------------------------------------------------------------
/example/images/tree-view.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marhali/easy-i18n/HEAD/example/images/tree-view.PNG
--------------------------------------------------------------------------------
/example/images/key-annotation.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marhali/easy-i18n/HEAD/example/images/key-annotation.PNG
--------------------------------------------------------------------------------
/example/images/key-completion.PNG:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marhali/easy-i18n/HEAD/example/images/key-completion.PNG
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/marhali/easy-i18n/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/example/modularized-json/locale-en/account.json:
--------------------------------------------------------------------------------
1 | {
2 | "subscription": "Subscription",
3 | "support": "Support",
4 | "delete": "Delete"
5 | }
--------------------------------------------------------------------------------
/example/modularized-json/locale-de/account.json:
--------------------------------------------------------------------------------
1 | {
2 | "subscription": "Abonnement",
3 | "support": "Unterstützung",
4 | "delete": "Löschen"
5 | }
--------------------------------------------------------------------------------
/settings.gradle.kts:
--------------------------------------------------------------------------------
1 | rootProject.name = "easy-i18n"
2 |
3 | plugins {
4 | id("org.gradle.toolchains.foojay-resolver-convention") version "1.0.0"
5 | }
--------------------------------------------------------------------------------
/example/resource-bundle/locale_en.properties:
--------------------------------------------------------------------------------
1 | account.subscription=Subscription
2 | auth.login=Login
3 | auth.logout=Logout
4 | auth.register=Register
5 | user.email=Email Address
6 | user.username=Username
--------------------------------------------------------------------------------
/src/test/resources/single/json/en.json:
--------------------------------------------------------------------------------
1 | {
2 | "title": "Title",
3 | "number": -187,
4 | "object": {
5 | "title": "Title"
6 | },
7 | "array": [
8 | "item1",
9 | "item2"
10 | ]
11 | }
--------------------------------------------------------------------------------
/example/modularized-json/locale-en/auth.json:
--------------------------------------------------------------------------------
1 | {
2 | "title": [
3 | "Some",
4 | "array",
5 | "title"
6 | ],
7 | "login": "Login",
8 | "logout": "Logout",
9 | "register": "Register"
10 | }
--------------------------------------------------------------------------------
/example/resource-bundle/locale_de.properties:
--------------------------------------------------------------------------------
1 | account.subscription=Abonnement
2 | auth.login=Einloggen
3 | auth.logout=Ausloggen
4 | auth.register=Registrieren
5 | user.email=Email-Adresse
6 | user.username=Benutzername
--------------------------------------------------------------------------------
/src/test/resources/single/json/de.json:
--------------------------------------------------------------------------------
1 | {
2 | "title": "Titel",
3 | "number": 187,
4 | "object": {
5 | "title": "Titel"
6 | },
7 | "array": [
8 | "element1",
9 | "element2"
10 | ]
11 | }
--------------------------------------------------------------------------------
/codecov.yml:
--------------------------------------------------------------------------------
1 | coverage:
2 | status:
3 | project:
4 | default:
5 | informational: true
6 | threshold: 0%
7 | base: auto
8 | patch:
9 | default:
10 | informational: true
--------------------------------------------------------------------------------
/example/modularized-json/locale-de/auth.json:
--------------------------------------------------------------------------------
1 | {
2 | "title": [
3 | "Ein",
4 | "array",
5 | "Titel"
6 | ],
7 | "login": "Einloggen",
8 | "logout": "Ausloggen",
9 | "register": "Registrieren"
10 | }
--------------------------------------------------------------------------------
/src/test/resources/single/json5/de.json5:
--------------------------------------------------------------------------------
1 | {
2 | "title": "Titel",
3 | "number": 187,
4 | "hex": 0x187,
5 | "object": {
6 | "title": "Titel",
7 | },
8 | "array": [
9 | "element1",
10 | "element2",
11 | ],
12 | }
--------------------------------------------------------------------------------
/src/test/resources/single/json5/en.json5:
--------------------------------------------------------------------------------
1 | {
2 | "title": "Title",
3 | "number": -187,
4 | "hex": -0x187,
5 | "object": {
6 | "title": "Title",
7 | },
8 | "array": [
9 | "item1",
10 | "item2",
11 | ],
12 | }
--------------------------------------------------------------------------------
/example/modularized-json/locale-en/user.json:
--------------------------------------------------------------------------------
1 | {
2 | "username": "Username",
3 | "email": "Email Address",
4 | "address": {
5 | "zip": "ZIP code",
6 | "city": "City",
7 | "street": "Street",
8 | "number": "House number"
9 | }
10 | }
--------------------------------------------------------------------------------
/example/modularized-json/locale-de/user.json:
--------------------------------------------------------------------------------
1 | {
2 | "username": "Benutzername",
3 | "email": "Email-Adresse",
4 | "address": {
5 | "zip": "Postleitzahl",
6 | "city": "Ort",
7 | "street": "Straße",
8 | "number": "Hausnummer"
9 | }
10 | }
--------------------------------------------------------------------------------
/qodana.yml:
--------------------------------------------------------------------------------
1 | # Qodana configuration:
2 | # https://www.jetbrains.com/help/qodana/qodana-yaml.html
3 |
4 | version: "1.0"
5 | linter: jetbrains/qodana-jvm-community:2024.3
6 | projectJDK: "21"
7 | profile:
8 | name: qodana.recommended
9 | exclude:
10 | - name: All
11 | paths:
12 | - .qodana
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-9.0.0-bin.zip
4 | networkTimeout=10000
5 | validateDistributionUrl=true
6 | zipStoreBase=GRADLE_USER_HOME
7 | zipStorePath=wrapper/dists
8 |
--------------------------------------------------------------------------------
/src/main/resources/icons/translate13.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/resources/icons/translate13_dark.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/main/java/de/marhali/easyi18n/model/bus/ExpandAllListener.java:
--------------------------------------------------------------------------------
1 | package de.marhali.easyi18n.model.bus;
2 |
3 | /**
4 | * Single event listener.
5 | * @see #onExpandAll()
6 | * @author marhali
7 | */
8 | public interface ExpandAllListener {
9 | /**
10 | * Action to expand all nodes
11 | */
12 | void onExpandAll();
13 | }
--------------------------------------------------------------------------------
/example/yaml/locale-en.yml:
--------------------------------------------------------------------------------
1 | alpha:
2 | spacing: ' leading space'
3 | first: Example Translation
4 | beta:
5 | title: Title
6 | nested:
7 | title: some nested title
8 | gamma:
9 | array:
10 | escaped:
11 | - first;element
12 | - second element
13 | - third;element
14 | simple:
15 | - first element
16 | - second element
17 | title: gamma title
18 |
--------------------------------------------------------------------------------
/src/main/java/de/marhali/easyi18n/model/bus/FilteredBusListener.java:
--------------------------------------------------------------------------------
1 | package de.marhali.easyi18n.model.bus;
2 |
3 | import de.marhali.easyi18n.FilteredDataBus;
4 |
5 | /**
6 | * Interface to replicate the state of {@link FilteredDataBus} to underlying components.
7 | * @author marhali
8 | */
9 | public interface FilteredBusListener extends UpdateDataListener, FocusKeyListener, ExpandAllListener {}
10 |
--------------------------------------------------------------------------------
/example/yaml/locale-de.yml:
--------------------------------------------------------------------------------
1 | alpha:
2 | spacing: ' führendes Leerzeichen'
3 | first: Beispiel Übersetzung
4 | beta:
5 | title: Titel
6 | nested:
7 | title: Ein verschachtelter Titel
8 | gamma:
9 | array:
10 | escaped:
11 | - Erstes;Element
12 | - Zweites Element
13 | - Drittes;Element
14 | simple:
15 | - Erstes Element
16 | - Zweites Element
17 | title: Gamma Titel
18 |
--------------------------------------------------------------------------------
/src/main/java/de/marhali/easyi18n/exception/EmptyLocalesDirException.java:
--------------------------------------------------------------------------------
1 | package de.marhali.easyi18n.exception;
2 |
3 | /**
4 | * Indicates that the translation's directory has not been configured yet
5 | * @author marhali
6 | */
7 | public class EmptyLocalesDirException extends IllegalArgumentException {
8 | public EmptyLocalesDirException(String message) {
9 | super(message);
10 | }
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/de/marhali/easyi18n/model/bus/FilterIncompleteListener.java:
--------------------------------------------------------------------------------
1 | package de.marhali.easyi18n.model.bus;
2 |
3 | /**
4 | * Single event listener.
5 | * @author marhali
6 | */
7 | public interface FilterIncompleteListener {
8 | /**
9 | * Toggles filter of missing translations
10 | * @param filter True if only translations with missing values should be shown
11 | */
12 | void onFilterIncomplete(boolean filter);
13 | }
--------------------------------------------------------------------------------
/src/main/java/de/marhali/easyi18n/model/bus/BusListener.java:
--------------------------------------------------------------------------------
1 | package de.marhali.easyi18n.model.bus;
2 |
3 | /**
4 | * Interface for communication of changes for participants of the data bus.
5 | * Every listener needs to be registered via {@link de.marhali.easyi18n.DataBus}.
6 | *
7 | * @author marhali
8 | */
9 | public interface BusListener extends UpdateDataListener, FilterIncompleteListener,
10 | FilterDuplicateListener, SearchQueryListener, FocusKeyListener {}
--------------------------------------------------------------------------------
/src/main/java/de/marhali/easyi18n/model/bus/FilterDuplicateListener.java:
--------------------------------------------------------------------------------
1 | package de.marhali.easyi18n.model.bus;
2 |
3 | /**
4 | * Single event listener
5 | * @see #onFilterDuplicate(boolean)
6 | * @author marhali
7 | */
8 | public interface FilterDuplicateListener {
9 | /**
10 | * Toggles filter of duplicated translation values
11 | * @param filter True if only translations with duplicates values should be shown
12 | */
13 | void onFilterDuplicate(boolean filter);
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/de/marhali/easyi18n/model/action/TranslationCreate.java:
--------------------------------------------------------------------------------
1 | package de.marhali.easyi18n.model.action;
2 |
3 | import de.marhali.easyi18n.model.Translation;
4 |
5 | import org.jetbrains.annotations.NotNull;
6 |
7 | /**
8 | * Represents update request to create a new translation.
9 | * @author marhali
10 | */
11 | public class TranslationCreate extends TranslationUpdate {
12 | public TranslationCreate(@NotNull Translation translation) {
13 | super(null, translation);
14 | }
15 | }
--------------------------------------------------------------------------------
/src/main/java/de/marhali/easyi18n/model/action/TranslationDelete.java:
--------------------------------------------------------------------------------
1 | package de.marhali.easyi18n.model.action;
2 |
3 | import de.marhali.easyi18n.model.Translation;
4 |
5 | import org.jetbrains.annotations.NotNull;
6 |
7 | /**
8 | * Represents update request to delete a existing translation.
9 | * @author marhali
10 | */
11 | public class TranslationDelete extends TranslationUpdate {
12 | public TranslationDelete(@NotNull Translation translation) {
13 | super(translation, null);
14 | }
15 | }
--------------------------------------------------------------------------------
/src/main/java/de/marhali/easyi18n/model/bus/FocusKeyListener.java:
--------------------------------------------------------------------------------
1 | package de.marhali.easyi18n.model.bus;
2 |
3 | import de.marhali.easyi18n.model.KeyPath;
4 |
5 | import org.jetbrains.annotations.NotNull;
6 |
7 | /**
8 | * Single event listener.
9 | * @author marhali
10 | */
11 | public interface FocusKeyListener {
12 | /**
13 | * Move the specified translation key (full-key) into focus.
14 | * @param key Absolute translation key
15 | */
16 | void onFocusKey(@NotNull KeyPath key);
17 | }
--------------------------------------------------------------------------------
/src/main/java/de/marhali/easyi18n/model/bus/UpdateDataListener.java:
--------------------------------------------------------------------------------
1 | package de.marhali.easyi18n.model.bus;
2 |
3 | import de.marhali.easyi18n.model.TranslationData;
4 | import org.jetbrains.annotations.NotNull;
5 |
6 | /**
7 | * Single event listener.
8 | * @author marhali
9 | */
10 | public interface UpdateDataListener {
11 | /**
12 | * Update the underlying translation data set.
13 | * @param data Updated translations
14 | */
15 | void onUpdateData(@NotNull TranslationData data);
16 | }
--------------------------------------------------------------------------------
/example/json/locale-en.json:
--------------------------------------------------------------------------------
1 | {
2 | "alpha": {
3 | "first": "example translation",
4 | "second": "another translation"
5 | },
6 | "beta": {
7 | "title": "some title",
8 | "nested": {
9 | "title": "some nested title"
10 | }
11 | },
12 | "gamma": {
13 | "title": "gamma title",
14 | "array": {
15 | "simple": [
16 | "first element",
17 | "second element"
18 | ],
19 | "escaped": [
20 | "first;element",
21 | "second element",
22 | "third;element"
23 | ]
24 | }
25 | }
26 | }
--------------------------------------------------------------------------------
/src/main/java/de/marhali/easyi18n/assistance/OptionalAssistance.java:
--------------------------------------------------------------------------------
1 | package de.marhali.easyi18n.assistance;
2 |
3 | import com.intellij.openapi.project.Project;
4 |
5 | import de.marhali.easyi18n.settings.ProjectSettingsService;
6 |
7 | import org.jetbrains.annotations.NotNull;
8 |
9 | /**
10 | * Used to define editor hooks as assistable.
11 | * @author marhali
12 | */
13 | public interface OptionalAssistance {
14 | default boolean isAssistance(@NotNull Project project) {
15 | return ProjectSettingsService.get(project).getState().isAssistance();
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/example/json/locale-de.json:
--------------------------------------------------------------------------------
1 | {
2 | "alpha": {
3 | "first": "Beispiel Übersetzung",
4 | "second": "Andere Übersetzung"
5 | },
6 | "beta": {
7 | "title": "Ein Titel",
8 | "nested": {
9 | "title": "Ein verschachtelter Titel"
10 | }
11 | },
12 | "gamma": {
13 | "title": "Gamma Titel",
14 | "array": {
15 | "simple": [
16 | "Erstes Element",
17 | "Zweites Element"
18 | ],
19 | "escaped": [
20 | "Erstes;Element",
21 | "Zweites Element",
22 | "Drittes;Element"
23 | ]
24 | }
25 | }
26 | }
--------------------------------------------------------------------------------
/.github/dependabot.yml:
--------------------------------------------------------------------------------
1 | # Dependabot configuration:
2 | # https://docs.github.com/en/free-pro-team@latest/github/administering-a-repository/configuration-options-for-dependency-updates
3 |
4 | version: 2
5 | updates:
6 | # Maintain dependencies for Gradle dependencies
7 | - package-ecosystem: "gradle"
8 | directory: "/"
9 | target-branch: "next"
10 | schedule:
11 | interval: "daily"
12 | # Maintain dependencies for GitHub Actions
13 | - package-ecosystem: "github-actions"
14 | directory: "/"
15 | target-branch: "next"
16 | schedule:
17 | interval: "daily"
--------------------------------------------------------------------------------
/src/main/java/de/marhali/easyi18n/model/bus/SearchQueryListener.java:
--------------------------------------------------------------------------------
1 | package de.marhali.easyi18n.model.bus;
2 |
3 | import org.jetbrains.annotations.Nullable;
4 |
5 | /**
6 | * Single event listener.
7 | * @author marhali
8 | */
9 | public interface SearchQueryListener {
10 | /**
11 | * Filter the displayed data according to the search query. Supply 'null' to return to the normal state.
12 | * The keys and the content itself should be considered (full-text-search).
13 | * @param query Filter key or content
14 | */
15 | void onSearchQuery(@Nullable String query);
16 | }
--------------------------------------------------------------------------------
/src/main/java/de/marhali/easyi18n/io/parser/yaml/YamlArrayMapper.java:
--------------------------------------------------------------------------------
1 | package de.marhali.easyi18n.io.parser.yaml;
2 |
3 | import de.marhali.easyi18n.io.parser.ArrayMapper;
4 |
5 | import java.util.ArrayList;
6 | import java.util.List;
7 |
8 | public class YamlArrayMapper extends ArrayMapper {
9 | public static String read(List