GradleScriptNotifications: extract and fix i18n strings

This commit is contained in:
Sergey Rostov
2020-06-11 17:02:51 +03:00
parent 632e88459e
commit 9096d21fcd
5 changed files with 39 additions and 38 deletions
@@ -1,5 +1,28 @@
action.text.standalone=Add as standalone script notification.outsideAnything.text=Code insight unavailable (related Gradle project not linked)
action.label.text.load.script.configuration=Load related Gradle project notification.outsideAnything.linkAction=Link Gradle project
notification.wasNotImportedAfterCreation.text=Code insight unavailable (Gradle project not imported)
action.label.import.project=Import Project
action.text.load.script.configurations=Load Script Configurations
action.description.load.script.configurations=Gradle Kotlin DSL script configuration has been changed. Load changes to get script code insight without loading the external Gradle project.
action.label.enable.auto.import=Enable Auto-Import
notification.notEvaluatedInLastImport.text=Code insight unavailable (configuration for this script wasn't received during last import)
notification.notEvaluatedInLastImport.addAsStandaloneAction=Add as standalone script
notification.notEvaluatedInLastImport.info=<div width=400>\
<p>The Gradle project that evaluates this script needs to be imported to get it analyzed by the IDE.\
Try reimport linked Gradle project or link a new Gradle project that evaluates this script.</p>\
<br/>\
<p>Alternatively, you can mark this script as standalone and its configuration will be loaded separately.</p>\
<br/> \
<p><b>NOTE:</b> Each standalone script requires separate Gradle configuration phase to be executed on update. \
This can be expensive for large Gradle projects.</p>\
</div>
notification.standalone.text=Standalone script
notification.standalone.disableScriptAction=Disable script
notification.standalone.info=<div width=400>\
<p>Configuration for this script will be loaded separately from Gradle project Sync. \
<br/>\
<p>This can be expensive for large Gradle projects.</p>\
</div>
action.text.install=Install action.text.install=Install
action.text.show.kotlin.gradle.dsl.logs.in=Show Kotlin Gradle DSL Logs in {0} action.text.show.kotlin.gradle.dsl.logs.in=Show Kotlin Gradle DSL Logs in {0}
build.0.project=Build {0} build.0.project=Build {0}
@@ -38,12 +61,10 @@ text.couldn.t.configure.kotlin.gradle.plugin.automatically=Couldn't configure ko
text.default.kotlin.gradle.script=Default Kotlin Gradle Script text.default.kotlin.gradle.script=Default Kotlin Gradle Script
text.gradle.dsl.logs.cannot.be.found.automatically.see.how.to.find.logs=Gradle DSL Logs cannot be found automatically.<br/>See how to find logs <a href="{0}">here</a>. text.gradle.dsl.logs.cannot.be.found.automatically.see.how.to.find.logs=Gradle DSL Logs cannot be found automatically.<br/>See how to find logs <a href="{0}">here</a>.
text.see.manual.installation.instructions=See manual installation instructions <a href="https://kotlinlang.org/docs/reference/using-gradle.html">here</a>. text.see.manual.installation.instructions=See manual installation instructions <a href="https://kotlinlang.org/docs/reference/using-gradle.html">here</a>.
text.the.associated.gradle.project.isn.t.imported=Cannot find related Gradle project. Kotlin DSL Code insight unavailable.
text.was.modified={0} was modified text.was.modified={0} was modified
title.configure.kotlin.gradle.plugin=Configure Kotlin-Gradle Plugin title.configure.kotlin.gradle.plugin=Configure Kotlin-Gradle Plugin
title.kotlin.build.script=Gradle Kotlin DSL Scripts errors title.kotlin.build.script=Gradle Kotlin DSL Scripts errors
title.update.language.version=Update Language Version title.update.language.version=Update Language Version
tool.tip.text.the.external.gradle.project.needs.to.be.imported.to.get.this.script.analyzed=The external Gradle project needs to be imported to get this script analyzed. <br/>Load related Gradle project to add it to the list of imported Gradle Projects.
display.name.kotlin.multiplatform=Kotlin/Multiplatform display.name.kotlin.multiplatform=Kotlin/Multiplatform
display.name.kotlin.jvm=Kotlin/JVM display.name.kotlin.jvm=Kotlin/JVM
display.name.kotlin.js.for.node.js=Kotlin/JS for Node.js display.name.kotlin.js.for.node.js=Kotlin/JS for Node.js
@@ -52,9 +73,3 @@ comman.name.configure.kotlin=Configure Kotlin
command.name.configure.0=Configure {0} command.name.configure.0=Configure {0}
notification.title.script.configuration.has.been.changed=Script configurations has been changed. notification.title.script.configuration.has.been.changed=Script configurations has been changed.
notification.text.script.configuration.has.been.changed=Gradle Project needs to be imported to load changes. notification.text.script.configuration.has.been.changed=Gradle Project needs to be imported to load changes.
script.configurations.will.be.available.after.import=Gradle Kotlin DSL script configuration is missing. Import project to get script code insight.
script.configurations.will.be.available.after.load.changes=Gradle Kotlin DSL script configuration is missing. Load Script Configurations to get script code insight.
action.label.import.project=Import Project
action.label.enable.auto.import=Enable Auto-Import
action.text.load.script.configurations=Load Script Configurations
action.description.load.script.configurations=Gradle Kotlin DSL script configuration has been changed. Load changes to get script code insight without loading the external Gradle project.
@@ -33,7 +33,6 @@ fun runPartialGradleImport(project: Project) {
} }
} }
fun getMissingConfigurationNotificationText() = KotlinIdeaGradleBundle.message("script.configurations.will.be.available.after.import")
fun getMissingConfigurationActionText() = KotlinIdeaGradleBundle.message("action.label.import.project") fun getMissingConfigurationActionText() = KotlinIdeaGradleBundle.message("action.label.import.project")
fun autoReloadScriptConfigurations(project: Project): Boolean { fun autoReloadScriptConfigurations(project: Project): Boolean {
@@ -29,48 +29,37 @@ class MissingGradleScriptConfigurationNotificationProvider(private val project:
val scriptUnderRoot = rootsManager.findScriptBuildRoot(file) ?: return null val scriptUnderRoot = rootsManager.findScriptBuildRoot(file) ?: return null
return when (scriptUnderRoot.notificationKind) { return when (scriptUnderRoot.notificationKind) {
dontCare -> null dontCare -> null
outsideAnyting -> EditorNotificationPanel().apply { outsideAnything -> EditorNotificationPanel().apply {
text("Code insight unavailable (related Gradle project not linked)") text(KotlinIdeaGradleBundle.message("notification.outsideAnything.text"))
// todo: Code insight unavailable (cannot find related Gradle project) createActionLabel(KotlinIdeaGradleBundle.message("notification.outsideAnything.linkAction")) {
createActionLabel("Link related Gradle project") {
runPartialGradleImport(project) runPartialGradleImport(project)
} }
} }
wasNotImportedAfterCreation -> EditorNotificationPanel().apply { wasNotImportedAfterCreation -> EditorNotificationPanel().apply {
text("Code insight unavailable (Gradle project Sync required)") text(KotlinIdeaGradleBundle.message("notification.wasNotImportedAfterCreation.text"))
createActionLabel(getMissingConfigurationActionText()) { createActionLabel(getMissingConfigurationActionText()) {
runPartialGradleImport(project) runPartialGradleImport(project)
} }
} }
notEvaluatedInLastImport -> EditorNotificationPanel().apply { notEvaluatedInLastImport -> EditorNotificationPanel().apply {
text(KotlinIdeaGradleBundle.message("text.the.associated.gradle.project.isn.t.imported")) text(KotlinIdeaGradleBundle.message(KotlinIdeaGradleBundle.message("notification.notEvaluatedInLastImport.text")))
createActionLabel(KotlinIdeaGradleBundle.message("action.text.standalone")) { createActionLabel(KotlinIdeaGradleBundle.message("notification.notEvaluatedInLastImport.info")) {
rootsManager.updateStandaloneScripts { rootsManager.updateStandaloneScripts {
addStandaloneScript(file.path) addStandaloneScript(file.path)
} }
} }
contextHelp( contextHelp(KotlinIdeaGradleBundle.message("notification.notEvaluatedInLastImport.addAsStandaloneAction"))
KotlinIdeaGradleBundle.message("tool.tip.text.the.external.gradle.project.needs.to.be.imported.to.get.this.script.analyzed")
)
} }
standalone -> EditorNotificationPanel().apply { standalone -> EditorNotificationPanel().apply {
text("Standalone script") text(KotlinIdeaGradleBundle.message("notification.standalone.text"))
createActionLabel("Disable script") { createActionLabel(KotlinIdeaGradleBundle.message("notification.standalone.disableScriptAction")) {
rootsManager.updateStandaloneScripts { rootsManager.updateStandaloneScripts {
removeStandaloneScript(file.path) removeStandaloneScript(file.path)
} }
} }
contextHelp( contextHelp(KotlinIdeaGradleBundle.message("notification.standalone.info"))
"""
<div width=400>\
<p>Configuration for this script will be loaded separately from Gradle project Sync. \
<br/>
<p>This can be expensive for large Gradle projects.</p>\
</div>
"""
)
} }
} }
} }
@@ -53,9 +53,10 @@ abstract class GradleBuildRootsLocator {
return findScriptBuildRoot(filePath, searchNearestLegacy = false)?.root as? GradleBuildRoot return findScriptBuildRoot(filePath, searchNearestLegacy = false)?.root as? GradleBuildRoot
} }
@Suppress("EnumEntryName")
enum class NotificationKind { enum class NotificationKind {
dontCare, // one of: imported, inside linked legacy gradle build dontCare, // one of: imported, inside linked legacy gradle build
outsideAnyting, // suggest link related gradle build or just say that there is no one outsideAnything, // suggest link related gradle build or just say that there is no one
wasNotImportedAfterCreation, // project not yet imported after this file was created wasNotImportedAfterCreation, // project not yet imported after this file was created
notEvaluatedInLastImport, // all other scripts, suggest to sync or mark as standalone notEvaluatedInLastImport, // all other scripts, suggest to sync or mark as standalone
standalone standalone
@@ -78,7 +79,7 @@ abstract class GradleBuildRootsLocator {
get() = when { get() = when {
isImported -> NotificationKind.dontCare isImported -> NotificationKind.dontCare
standalone -> NotificationKind.standalone standalone -> NotificationKind.standalone
nearest == null -> NotificationKind.outsideAnyting nearest == null -> NotificationKind.outsideAnything
nearest.importing -> NotificationKind.dontCare nearest.importing -> NotificationKind.dontCare
else -> when (nearest) { else -> when (nearest) {
is Legacy -> NotificationKind.dontCare is Legacy -> NotificationKind.dontCare
@@ -137,10 +137,7 @@ class GradleBuildRootsManager(val project: Project) : GradleBuildRootsLocator(),
val mergedData = if (sync.failed && oldRoot is Imported) merge(oldRoot.data, newData) else newData val mergedData = if (sync.failed && oldRoot is Imported) merge(oldRoot.data, newData) else newData
val lastModifiedFilesReset = LastModifiedFiles() val lastModifiedFilesReset = LastModifiedFiles()
val newRoot = tryCreateImportedRoot( val newRoot = tryCreateImportedRoot(sync.workingDir, lastModifiedFilesReset) { mergedData } ?: return
sync.workingDir,
lastModifiedFilesReset
) { mergedData } ?: return
GradleBuildRootDataSerializer.write(newRoot.dir ?: return, mergedData) GradleBuildRootDataSerializer.write(newRoot.dir ?: return, mergedData)
newRoot.saveLastModifiedFiles() newRoot.saveLastModifiedFiles()