diff --git a/idea/idea-jvm/resources/messages/KotlinJvmBundle.properties b/idea/idea-jvm/resources/messages/KotlinJvmBundle.properties index 71e03a6290a..3193f283d2a 100644 --- a/idea/idea-jvm/resources/messages/KotlinJvmBundle.properties +++ b/idea/idea-jvm/resources/messages/KotlinJvmBundle.properties @@ -66,4 +66,108 @@ script.choose.file=Choose script file editor.editor.only=Editor only editor.preview.only=Preview only -editor.editor.and.preview=Editor and preview \ No newline at end of file +editor.editor.and.preview=Editor and preview +choose.configurator=Choose Configurator +ignore=Ignore +configure=Configure +kotlin.not.configured=Kotlin not configured +there.aren.t.configurators.available=There aren't configurators available +all.modules.with.kotlin.files.are.configured=All modules with Kotlin files are configured +added.0.requirement.to.module.info.in.1=Added {0} requirement to module-info in {1} +updated.javascript.libraries.in.module.0=Updated JavaScript libraries in module {0} +added.0.to.library.configuration=Added {0} to library configuration +couldn.t.configure.library.jar.file.0.may.be.corrupted=Couldn''t configure library; JAR file {0} may be corrupted +can.t.find.library.jar.file.0=Can''t find library JAR file {0} +0.was.copied.to.1={0} was copied to {1} +0.library.scope.has.changed.from.1.to.2.for.module.3={0} library scope has changed from {1} to {2} for module {3} +0.library.was.added.to.module.1={0} library was added to module {1} +0.library.was.created={0} library was created +configure.kotlin=Configure Kotlin +configure.0.in.1.project.br.2=Configure {0} in ''{1}'' project
{2} +kotlin.code.style=Kotlin Code Style +default.code.style.was.updated.to.kotlin.coding.conventions=Default code style was updated to Kotlin Coding Conventions. +apply.new.code.style=Apply new code style +restore.old.settings=Restore old settings +libraries.for.the.following.platform.are.also.present.in.the.module.dependencies.0=Libraries for the following platform are also present in the module dependencies: {0} +no.target.platforms.selected=No target platforms selected +kotlin.common.standard.library=Kotlin Common Standard Library +create.kotlin.common.standard.library=Create Kotlin Common Standard Library +kotlin.js=Kotlin/​JS +kotlin.java.runtime.library=Kotlin Java Runtime Library +create.kotlin.java.runtime.library=Create Kotlin Java Runtime Library +kotlin.javascript.library=Kotlin JavaScript Library +create.kotlin.javascript.library=Create Kotlin JavaScript Library +javascript.library.creation=JavaScript Library Creation +java.runtime.library.creation=Java Runtime Library Creation +js.files=JS files +kotlin.project.with.a.javascript.target.based.on.the.intellij.idea.build.system=Kotlin project with a JavaScript target based on the IntelliJ IDEA build system +kotlin.project.with.a.jvm.target.based.on.the.intellij.idea.build.system=Kotlin project with a JVM target based on the IntelliJ IDEA build system +add.injection.comment=Add injection comment +add.injection.annotation=Add injection annotation +remove.injection.in.code.instructions=remove injection in-code instructions +this.java.file.is.outside.of.java.source.roots.and.won.t.be.added.to.the.classpath=This .java file is outside of Java source roots and won't be added to the classpath. +incompatible.api=Incompatible API +kotlin.bytecode.decompiler=Kotlin Bytecode Decompiler +failed.to.decompile.0.1=Failed to decompile {0}: {1} +decompile=Decompile +ir=IR +jvm.8.target=JVM 8 target +assertions=Assertions +optimization=Optimization +inline=Inline +cannot.compile.0.to.bytecode=Cannot compile {0} to bytecode. +create.backup.for.debugging.kotlin.incremental.compilation=Create backup for debugging Kotlin incremental compilation +creating.backup.for.debugging.kotlin.incremental.compilation=Creating backup for debugging Kotlin incremental compilation +creating.patch.0=Creating patch {0} +copying.logs=Copying logs +copying.project.s.system.dir=Copying project's system dir +scanning.project.dir.0=Scanning project dir: {0} +adding.file.to.backup.0=Adding file to backup: {0} +created.backup=Created backup +successfully.created.backup.0=Successfully created backup {0} +update.runtime.library=Update Runtime Library +this.language.feature.requires.version.0.or.later.of.the.kotlin.runtime.library.would.you.like.to.update.the.runtime.library.in.your.project=This language feature requires version {0} or later of the Kotlin runtime library. Would you like to update the runtime library in your project? +could.not.find.script.file.0=Could not find script file: {0} +file.was.not.specified=File was not specified +run.kotlin.script=Run Kotlin script +kotlin.script=Kotlin script +exception.occurs.during.run.scratch.action=Exception occurs during Run Scratch Action +there.were.compilation.errors.in.module.0=There were compilation errors in module {0} +other.scratch.file.execution.is.in.progress=Other Scratch file execution is in progress +exception.occurs.during.run.scratch.action1=Exception occurs during Run Scratch Action +couldn.t.extract.line.info.from.line.0=Couldn''t extract line info from line: {0} +couldn.t.compile.0=Couldn''t compile {0} +couldn.t.find.ktfile.for.current.editor=Couldn't find KtFile for current editor +couldn.t.get.scratch.execution.result.stopped.by.timeout.0.ms=Couldn''t get scratch execution result - stopped by timeout ({0} ms) +running.kotlin.scratch=Running Kotlin Scratch... +couldn.t.execute.statement.0=Couldn''t execute statement: {0} +couldn.t.stop.repl.process=Couldn't stop REPL process +check.bunch.files=Check &bunch files +commit=Commit +review=Review +forgotten.bunch.files=Forgotten Bunch Files +several.bunch.files.haven.t.been.updated.0.do.you.want.to.review.them.before.commit=Several bunch files haven''t been updated:\n\n{0}\n\nDo you want to review them before commit? +update.kotlin.runtime.library=Update Kotlin Runtime Library +automatic.library.version.update.for.maven.and.gradle.projects.is.currently.unsupported.please.update.your.build.scripts.manually=Automatic library version update for Maven and Gradle projects is currently unsupported. Please update your build scripts manually. +library.update.failed=Library update failed +failed.to.update.0.1=Failed to update {0}: {1} +library.update.failed1=Library update failed +failed.to.find.root.for.file.0=Failed to find root for file: {0} +html.b.0.choice.0.1.1.some.kotlin.runtime.librar.0.choice.0.1.y.1.ies.b.1.choice.0.1.and.one.other.jar.1.and.1.other.jars.1.choice.0.has.0.have.an.unsupported.binary.format.html={0,choice,0#|1#|1{1,choice,0#|1# and one other jar|1< and {1} other jars} {1,choice,0#has|0 +replace=Replace +downgrade=Downgrade +update=Update +0.choice.0.1.1.all.kotlin.runtime.librar.0.choice.0.1.y.1.ies={0,choice,0#|1#|1Kotlin library '{'0'}' has outdated binary format and can''t be read by current plugin. Please update the library. +html.kotlin.library.b.0.b.was.compiled.with.a.newer.kotlin.compiler.and.can.t.be.read.please.update.kotlin.plugin.html=Kotlin library '{'0'}' was compiled with a newer Kotlin compiler and can''t be read. Please update Kotlin plugin. +some.kotlin.libraries.attached.to.this.project.have.unsupported.binary.format.please.update.the.libraries.or.the.plugin=Some Kotlin libraries attached to this project have unsupported binary format. Please update the libraries or the plugin. +some.kotlin.libraries.attached.to.this.project.have.outdated.binary.format.and.can.t.be.read.by.current.plugin.please.update.found.libraries=Some Kotlin libraries attached to this project have outdated binary format and can't be read by current plugin. Please update found libraries. +some.kotlin.libraries.attached.to.this.project.were.compiled.with.a.newer.kotlin.compiler.and.can.t.be.read.please.update.kotlin.plugin=Some Kotlin libraries attached to this project were compiled with a newer Kotlin compiler and can't be read. Please update Kotlin plugin. +go.to.0=Go to {0} +details=Details +update.plugin=Update plugin +check=\ Check... +can.t.show.all.paths.during.index.update=Can't show all paths during index update +unsupported.format.plugin.version.0=Unsupported format, plugin version: {0} +no.updates.found=No updates found +0.1.expected.2={0} ({1}) - expected: {2} \ No newline at end of file diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinInProjectAction.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinInProjectAction.kt index 5ee30322f8e..6d0bba9c3af 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinInProjectAction.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/actions/ConfigureKotlinInProjectAction.kt @@ -1,5 +1,5 @@ /* - * Copyright 2000-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -10,6 +10,7 @@ import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.project.Project import com.intellij.openapi.ui.Messages import com.intellij.util.PlatformUtils +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.configuration.* import org.jetbrains.kotlin.idea.util.projectStructure.allModules import org.jetbrains.kotlin.platform.js.isJs @@ -24,7 +25,7 @@ abstract class ConfigureKotlinInProjectAction : AnAction() { val modules = getConfigurableModules(project) if (modules.all(::isModuleConfigured)) { - Messages.showInfoMessage("All modules with Kotlin files are configured", e.presentation.text!!) + Messages.showInfoMessage(KotlinJvmBundle.message("all.modules.with.kotlin.files.are.configured"), e.presentation.text!!) return } @@ -32,7 +33,10 @@ abstract class ConfigureKotlinInProjectAction : AnAction() { when { configurators.size == 1 -> configurators.first().configure(project, emptyList()) - configurators.isEmpty() -> Messages.showErrorDialog("There aren't configurators available", e.presentation.text!!) + configurators.isEmpty() -> Messages.showErrorDialog( + KotlinJvmBundle.message("there.aren.t.configurators.available"), + e.presentation.text!! + ) else -> { val configuratorsPopup = KotlinSetupEnvironmentNotificationProvider.createConfiguratorsPopup(project, configurators.toList()) diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt index 54040607304..0b712b87ca6 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt @@ -1,5 +1,5 @@ /* - * Copyright 2000-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -23,6 +23,7 @@ import com.intellij.psi.search.FileTypeIndex import com.intellij.psi.search.GlobalSearchScope import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.idea.KotlinFileType +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.core.util.getKotlinJvmRuntimeMarkerClass import org.jetbrains.kotlin.idea.framework.JSLibraryKind import org.jetbrains.kotlin.idea.framework.effectiveKind @@ -307,6 +308,6 @@ fun addStdlibToJavaModuleInfo(module: Module, collector: NotificationMessageColl if (!success) return false - collector.addMessage("Added $KOTLIN_STDLIB_MODULE_NAME requirement to module-info in ${module.name}") + collector.addMessage(KotlinJvmBundle.message("added.0.requirement.to.module.info.in.1", KOTLIN_STDLIB_MODULE_NAME, module.name)) return true } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJsModuleConfigurator.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJsModuleConfigurator.kt index 0e3ed8f188c..4bfb198aae8 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJsModuleConfigurator.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinJsModuleConfigurator.kt @@ -1,17 +1,6 @@ /* - * Copyright 2010-2016 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ package org.jetbrains.kotlin.idea.configuration @@ -25,6 +14,7 @@ import com.intellij.openapi.roots.impl.libraries.LibraryEx import com.intellij.openapi.roots.libraries.DummyLibraryProperties import com.intellij.openapi.roots.libraries.Library import com.intellij.openapi.roots.libraries.LibraryType +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.framework.JSLibraryKind import org.jetbrains.kotlin.idea.framework.JSLibraryStdDescription import org.jetbrains.kotlin.idea.framework.JSLibraryType @@ -102,7 +92,7 @@ open class KotlinJsModuleConfigurator : KotlinWithLibraryConfigurator() { } } } - collector.addMessage("Updated JavaScript libraries in module ${module.name}") + collector.addMessage(KotlinJvmBundle.message("updated.javascript.libraries.in.module.0", module.name)) } return brokenStdlib } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinSetupEnvironmentNotificationProvider.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinSetupEnvironmentNotificationProvider.kt index 11072eb0c1f..9ed60b36e0f 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinSetupEnvironmentNotificationProvider.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinSetupEnvironmentNotificationProvider.kt @@ -1,5 +1,5 @@ /* - * Copyright 2000-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -24,6 +24,7 @@ import com.intellij.psi.PsiManager import com.intellij.ui.EditorNotificationPanel import com.intellij.ui.EditorNotifications import org.jetbrains.kotlin.idea.KotlinFileType +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.idea.configuration.ui.KotlinConfigurationCheckerComponent import org.jetbrains.kotlin.idea.project.TargetPlatformDetector @@ -93,10 +94,10 @@ class KotlinSetupEnvironmentNotificationProvider(private val myProject: Project) private fun createKotlinNotConfiguredPanel(module: Module): EditorNotificationPanel { return EditorNotificationPanel().apply { - setText("Kotlin not configured") + setText(KotlinJvmBundle.message("kotlin.not.configured")) val configurators = getAbleToRunConfigurators(module).toList() if (configurators.isNotEmpty()) { - createComponentActionLabel("Configure") { label -> + createComponentActionLabel(KotlinJvmBundle.message("configure")) { label -> val singleConfigurator = configurators.singleOrNull() if (singleConfigurator != null) { singleConfigurator.apply(module.project) @@ -106,7 +107,7 @@ class KotlinSetupEnvironmentNotificationProvider(private val myProject: Project) } } - createComponentActionLabel("Ignore") { + createComponentActionLabel(KotlinJvmBundle.message("ignore")) { SuppressNotificationState.suppressKotlinNotConfigured(module) EditorNotifications.getInstance(module.project).updateAllNotifications() } @@ -121,7 +122,10 @@ class KotlinSetupEnvironmentNotificationProvider(private val myProject: Project) } fun createConfiguratorsPopup(project: Project, configurators: List): ListPopup { - val step = object : BaseListPopupStep("Choose Configurator", configurators) { + val step = object : BaseListPopupStep( + KotlinJvmBundle.message("choose.configurator"), + configurators + ) { override fun getTextFor(value: KotlinProjectConfigurator?) = value?.presentableText ?: "" override fun onChosen(selectedValue: KotlinProjectConfigurator?, finalChoice: Boolean): PopupStep<*>? { diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinWithLibraryConfigurator.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinWithLibraryConfigurator.kt index b0f3e130732..70cbf481f60 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinWithLibraryConfigurator.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/KotlinWithLibraryConfigurator.kt @@ -1,5 +1,5 @@ /* - * Copyright 2000-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -23,6 +23,7 @@ import org.jetbrains.kotlin.config.ApiVersion import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.config.LanguageVersion +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.facet.getCleanRuntimeLibraryVersion import org.jetbrains.kotlin.idea.facet.getRuntimeLibraryVersion import org.jetbrains.kotlin.idea.facet.toApiVersion @@ -192,19 +193,19 @@ abstract class KotlinWithLibraryConfigurator protected constructor() : KotlinPro val jarVFile = LocalFileSystem.getInstance().findFileByIoFile(jarFile) if (jarVFile == null) { - collector.addMessage("Can't find library JAR file " + jarFile) + collector.addMessage(KotlinJvmBundle.message("can.t.find.library.jar.file.0", jarFile)) return } val jarRoot = JarFileSystem.getInstance().getJarRootForLocalFile(jarVFile) if (jarRoot == null) { - collector.addMessage("Couldn't configure library; JAR file $jarVFile may be corrupted") + collector.addMessage(KotlinJvmBundle.message("couldn.t.configure.library.jar.file.0.may.be.corrupted", jarVFile)) return } if (jarRoot !in library.getFiles(libraryJarDescriptor.orderRootType)) { library.addRoot(jarRoot, libraryJarDescriptor.orderRootType) - collector.addMessage("Added $jarFile to library configuration") + collector.addMessage(KotlinJvmBundle.message("added.0.to.library.configuration", jarFile)) } } @@ -219,7 +220,7 @@ abstract class KotlinWithLibraryConfigurator protected constructor() : KotlinPro val copy = FileUIUtils.copyWithOverwriteDialog(messageForOverrideDialog, toDir, file) if (copy != null) { - collector.addMessage(file.name + " was copied to " + toDir) + collector.addMessage(KotlinJvmBundle.message("0.was.copied.to.1", file.name, toDir)) } return copy } @@ -233,7 +234,7 @@ abstract class KotlinWithLibraryConfigurator protected constructor() : KotlinPro val kotlinLibrary = getKotlinLibrary(module) if (kotlinLibrary == null) { ModuleRootModificationUtil.addDependency(module, library, expectedDependencyScope, false) - collector.addMessage(library.name + " library was added to module " + module.name) + collector.addMessage(KotlinJvmBundle.message("0.library.was.added.to.module.1", library.name.toString(), module.name)) } else { val libraryEntry = findLibraryOrderEntry(ModuleRootManager.getInstance(module).orderEntries, kotlinLibrary) if (libraryEntry != null) { @@ -242,8 +243,13 @@ abstract class KotlinWithLibraryConfigurator protected constructor() : KotlinPro libraryEntry.scope = expectedDependencyScope collector.addMessage( - kotlinLibrary.name + " library scope has changed from " + libraryDependencyScope + - " to " + expectedDependencyScope + " for module " + module.name + KotlinJvmBundle.message( + "0.library.scope.has.changed.from.1.to.2.for.module.3", + kotlinLibrary.name.toString(), + libraryDependencyScope, + expectedDependencyScope, + module.name + ) ) } } @@ -263,13 +269,13 @@ abstract class KotlinWithLibraryConfigurator protected constructor() : KotlinPro } } - collector.addMessage(library.name!! + " library was created") + collector.addMessage(KotlinJvmBundle.message("0.library.was.created", library.name.toString())) return library } private fun isProjectLibraryPresent(project: Project): Boolean { val library = getKotlinLibrary(project) - return library != null && library.getUrls(OrderRootType.CLASSES).size > 0 + return library != null && library.getUrls(OrderRootType.CLASSES).isNotEmpty() } protected abstract val libraryMatcher: (Library, Project) -> Boolean diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/NotificationMessageCollector.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/NotificationMessageCollector.kt index bea5ae4c4b8..13f11b53a0e 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/NotificationMessageCollector.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/NotificationMessageCollector.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -9,6 +9,7 @@ import com.intellij.notification.Notification import com.intellij.notification.NotificationType import com.intellij.notification.Notifications import com.intellij.openapi.project.Project +import org.jetbrains.kotlin.idea.KotlinJvmBundle import java.util.* open class NotificationMessageCollector( @@ -37,5 +38,8 @@ open class NotificationMessageCollector( } } -fun createConfigureKotlinNotificationCollector(project: Project) = - NotificationMessageCollector(project, "Configure Kotlin: info notification", "Configure Kotlin") \ No newline at end of file +fun createConfigureKotlinNotificationCollector(project: Project): NotificationMessageCollector = NotificationMessageCollector( + project, + "Configure Kotlin: info notification", + KotlinJvmBundle.message("configure.kotlin") +) \ No newline at end of file diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ui/notifications/ConfigureKotlinNotification.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ui/notifications/ConfigureKotlinNotification.kt index 79500caa4d2..d010b948544 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ui/notifications/ConfigureKotlinNotification.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ui/notifications/ConfigureKotlinNotification.kt @@ -1,5 +1,5 @@ /* - * Copyright 2000-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -10,6 +10,7 @@ import com.intellij.notification.NotificationListener import com.intellij.notification.NotificationType import com.intellij.openapi.module.Module import com.intellij.openapi.project.Project +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.configuration.KotlinProjectConfigurator import org.jetbrains.kotlin.idea.configuration.getConfigurationPossibilitiesForConfigureNotification import org.jetbrains.kotlin.idea.configuration.getConfiguratorByName @@ -27,7 +28,7 @@ class ConfigureKotlinNotification( excludeModules: List, val notificationState: ConfigureKotlinNotificationState ) : Notification( - KotlinConfigurationCheckerComponent.CONFIGURE_NOTIFICATION_GROUP_ID, "Configure Kotlin", + KotlinConfigurationCheckerComponent.CONFIGURE_NOTIFICATION_GROUP_ID, KotlinJvmBundle.message("configure.kotlin"), notificationState.notificationString, NotificationType.WARNING, NotificationListener { notification, event -> @@ -69,7 +70,7 @@ class ConfigureKotlinNotification( return ConfigureKotlinNotificationState( project.name, - "Configure $modulesString in '${project.name}' project
$links", + KotlinJvmBundle.message("configure.0.in.1.project.br.2", modulesString, project.name, links), configurableModules.map { it.baseModule.name } ) } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ui/notifications/NewCodeStyleNotification.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ui/notifications/NewCodeStyleNotification.kt index 83d7c414000..f495cb9f3ae 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ui/notifications/NewCodeStyleNotification.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/configuration/ui/notifications/NewCodeStyleNotification.kt @@ -1,5 +1,5 @@ /* - * Copyright 2000-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -14,6 +14,7 @@ import com.intellij.openapi.application.runWriteAction import com.intellij.openapi.diagnostic.Logger import com.intellij.openapi.project.Project import com.intellij.psi.codeStyle.CodeStyleSettingsManager +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.facet.KotlinFacetType import org.jetbrains.kotlin.idea.formatter.* import org.jetbrains.kotlin.idea.util.isDefaultOfficialCodeStyle @@ -55,11 +56,7 @@ fun notifyKotlinStyleUpdateIfNeeded(project: Project) { private class KotlinCodeStyleChangedNotification(val project: Project, isProjectSettings: Boolean) : Notification( KOTLIN_UPDATE_CODE_STYLE_GROUP_ID, "Kotlin Code Style", - """ - - Default code style was updated to Kotlin Coding Conventions. - - """.trimIndent(), + "${KotlinJvmBundle.message("default.code.style.was.updated.to.kotlin.coding.conventions")}", NotificationType.WARNING, null ) { @@ -67,7 +64,7 @@ private class KotlinCodeStyleChangedNotification(val project: Project, isProject val ktFormattingSettings = ktCodeStyleSettings(project) if (isProjectSettings) { - addAction(object : NotificationAction("Apply new code style") { + addAction(object : NotificationAction(KotlinJvmBundle.message("apply.new.code.style")) { override fun actionPerformed(e: AnActionEvent, notification: Notification) { notification.expire() @@ -81,7 +78,7 @@ private class KotlinCodeStyleChangedNotification(val project: Project, isProject } if (ktFormattingSettings != null && ktFormattingSettings.canRestore()) { - addAction(object : NotificationAction("Restore old settings") { + addAction(object : NotificationAction(KotlinJvmBundle.message("restore.old.settings")) { override fun actionPerformed(e: AnActionEvent, notification: Notification) { notification.expire() diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/facet/FrameworkLibraryValidatorWithDynamicDescription.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/facet/FrameworkLibraryValidatorWithDynamicDescription.kt index 30c154e8eaf..c371776a0d5 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/facet/FrameworkLibraryValidatorWithDynamicDescription.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/facet/FrameworkLibraryValidatorWithDynamicDescription.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -14,6 +14,7 @@ import com.intellij.ide.IdeBundle import com.intellij.openapi.roots.ui.configuration.libraries.AddCustomLibraryDialog import com.intellij.openapi.roots.ui.configuration.libraries.CustomLibraryDescription import com.intellij.openapi.roots.ui.configuration.libraries.LibraryPresentationManager +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.platform.tooling import org.jetbrains.kotlin.platform.IdePlatformKind import org.jetbrains.kotlin.platform.TargetPlatform @@ -59,7 +60,7 @@ class FrameworkLibraryValidatorWithDynamicDescription( } override fun check(): ValidationResult { - val targetPlatform = getPlatform() ?: return ValidationResult("No target platforms selected") + val targetPlatform = getPlatform() ?: return ValidationResult(KotlinJvmBundle.message("no.target.platforms.selected")) if (checkLibraryIsConfigured(targetPlatform.idePlatformKind)) { val conflictingPlatforms = IdePlatformKind.ALL_KINDS @@ -70,7 +71,12 @@ class FrameworkLibraryValidatorWithDynamicDescription( if (conflictingPlatforms.isNotEmpty()) { val platformText = conflictingPlatforms.mapTo(LinkedHashSet()) { it.name }.joinToString() - return ValidationResult("Libraries for the following platform are also present in the module dependencies: $platformText") + return ValidationResult( + KotlinJvmBundle.message( + "libraries.for.the.following.platform.are.also.present.in.the.module.dependencies.0", + platformText + ) + ) } return ValidationResult.OK diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/CommonStandardLibraryDescription.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/CommonStandardLibraryDescription.kt index 228251c097d..5dd46e59aa6 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/CommonStandardLibraryDescription.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/CommonStandardLibraryDescription.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -7,6 +7,7 @@ package org.jetbrains.kotlin.idea.framework import com.intellij.openapi.project.Project import com.intellij.openapi.roots.libraries.LibraryKind +import org.jetbrains.kotlin.idea.KotlinJvmBundle class CommonStandardLibraryDescription(project: Project?) : CustomLibraryDescriptorWithDeferredConfig( // TODO: KotlinCommonModuleConfigurator @@ -16,8 +17,8 @@ class CommonStandardLibraryDescription(project: Project?) : CustomLibraryDescrip val KOTLIN_COMMON_STDLIB_KIND = LibraryKind.create("kotlin-stdlib-common") val LIBRARY_NAME = "KotlinStdlibCommon" - val DIALOG_TITLE = "Create Kotlin Common Standard Library" - val LIBRARY_CAPTION = "Kotlin Common Standard Library" + val DIALOG_TITLE get() = KotlinJvmBundle.message("create.kotlin.common.standard.library") + val LIBRARY_CAPTION get() = KotlinJvmBundle.message("kotlin.common.standard.library") val SUITABLE_LIBRARY_KINDS: Set = setOf(KOTLIN_COMMON_STDLIB_KIND) } } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JSLibraryStdDescription.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JSLibraryStdDescription.kt index 0931583d5cc..c56b6587878 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JSLibraryStdDescription.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JSLibraryStdDescription.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.idea.framework import com.intellij.openapi.project.Project import com.intellij.openapi.roots.libraries.NewLibraryConfiguration import org.jetbrains.annotations.TestOnly +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.configuration.KotlinJsModuleConfigurator /** @@ -31,9 +32,9 @@ class JSLibraryStdDescription(project: Project?) : CustomLibraryDescriptorWithDe companion object { val LIBRARY_NAME = "KotlinJavaScript" - val JAVA_SCRIPT_LIBRARY_CREATION = "JavaScript Library Creation" - val DIALOG_TITLE = "Create Kotlin JavaScript Library" - val LIBRARY_CAPTION = "Kotlin JavaScript Library" + val JAVA_SCRIPT_LIBRARY_CREATION get() = KotlinJvmBundle.message("javascript.library.creation") + val DIALOG_TITLE get() = KotlinJvmBundle.message("create.kotlin.javascript.library") + val LIBRARY_CAPTION get() = KotlinJvmBundle.message("kotlin.javascript.library") val SUITABLE_LIBRARY_KINDS = setOf(JSLibraryKind) } } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JSLibraryType.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JSLibraryType.kt index c22dbe34aae..bd5f73fee93 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JSLibraryType.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JSLibraryType.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -21,6 +21,7 @@ import com.intellij.openapi.util.text.StringUtil import com.intellij.openapi.vfs.VirtualFile import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.KotlinIcons +import org.jetbrains.kotlin.idea.KotlinJvmBundle import javax.swing.JComponent class JSLibraryType : LibraryType(JSLibraryKind) { @@ -66,7 +67,10 @@ class JSLibraryType : LibraryType(JSLibraryKind) { ) } - object JSRootFilter : FileTypeBasedRootFilter(OrderRootType.CLASSES, false, PlainTextFileType.INSTANCE, "JS files") { + object JSRootFilter : FileTypeBasedRootFilter( + OrderRootType.CLASSES, false, PlainTextFileType.INSTANCE, + KotlinJvmBundle.message("js.files") + ) { override fun isFileAccepted(virtualFile: VirtualFile) = isAcceptedForJsLibrary(virtualFile.extension) } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JavaFrameworkSupportProvider.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JavaFrameworkSupportProvider.kt index 9ffd29e80ea..0610e198ce1 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JavaFrameworkSupportProvider.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JavaFrameworkSupportProvider.kt @@ -1,5 +1,5 @@ /* - * Copyright 2000-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -16,6 +16,7 @@ import com.intellij.openapi.roots.ModifiableModelsProvider import com.intellij.openapi.roots.ModifiableRootModel import com.intellij.openapi.roots.ui.configuration.FacetsProvider import com.intellij.openapi.roots.ui.configuration.libraries.CustomLibraryDescription +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.configuration.BuildSystemType import org.jetbrains.kotlin.idea.configuration.getBuildSystemType import org.jetbrains.kotlin.idea.formatter.KotlinStyleGuideCodeStyle @@ -48,7 +49,7 @@ class JavaFrameworkSupportProvider : FrameworkSupportInModuleProvider() { FrameworksCompatibilityUtils.suggestRemoveIncompatibleFramework( rootModel, JSLibraryStdDescription.SUITABLE_LIBRARY_KINDS, - "Kotlin/\u200BJS" + KotlinJvmBundle.message("kotlin.js") ) description!!.finishLibConfiguration(module, rootModel, false) diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JavaRuntimeLibraryDescription.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JavaRuntimeLibraryDescription.kt index 69d4439c5df..9a1570a17be 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JavaRuntimeLibraryDescription.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/JavaRuntimeLibraryDescription.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -8,6 +8,7 @@ package org.jetbrains.kotlin.idea.framework import com.intellij.openapi.project.Project import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.roots.libraries.LibraryKind +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.compiler.configuration.Kotlin2JvmCompilerArgumentsHolder import org.jetbrains.kotlin.idea.configuration.KotlinJavaModuleConfigurator import org.jetbrains.kotlin.idea.versions.bundledRuntimeVersion @@ -39,9 +40,9 @@ class JavaRuntimeLibraryDescription(project: Project?) : CustomLibraryDescriptor val KOTLIN_JAVA_RUNTIME_KIND = LibraryKind.create("kotlin-java-runtime") val LIBRARY_NAME = "KotlinJavaRuntime" - val JAVA_RUNTIME_LIBRARY_CREATION = "Java Runtime Library Creation" - val DIALOG_TITLE = "Create Kotlin Java Runtime Library" - val LIBRARY_CAPTION = "Kotlin Java Runtime Library" + val JAVA_RUNTIME_LIBRARY_CREATION get() = KotlinJvmBundle.message("java.runtime.library.creation") + val DIALOG_TITLE get() = KotlinJvmBundle.message("create.kotlin.java.runtime.library") + val LIBRARY_CAPTION get() = KotlinJvmBundle.message("kotlin.java.runtime.library") val SUITABLE_LIBRARY_KINDS: Set = setOf(KOTLIN_JAVA_RUNTIME_KIND) } } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinTemplatesFactory.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinTemplatesFactory.kt index 9ad27fe729e..e209cfeb5e3 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinTemplatesFactory.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/framework/KotlinTemplatesFactory.kt @@ -1,17 +1,6 @@ /* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ package org.jetbrains.kotlin.idea.framework @@ -24,6 +13,7 @@ import com.intellij.platform.ProjectTemplate import com.intellij.platform.ProjectTemplatesFactory import com.intellij.platform.templates.BuilderBasedTemplate import org.jetbrains.kotlin.idea.KotlinIcons +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.platform.js.JsPlatforms import org.jetbrains.kotlin.platform.jvm.JvmPlatforms @@ -46,7 +36,7 @@ class KotlinTemplatesFactory : ProjectTemplatesFactory() { KotlinModuleBuilder( JvmPlatforms.unspecifiedJvmPlatform, "JVM | IDEA", - "Kotlin project with a JVM target based on the IntelliJ IDEA build system", + KotlinJvmBundle.message("kotlin.project.with.a.jvm.target.based.on.the.intellij.idea.build.system"), KotlinIcons.SMALL_LOGO ) ), @@ -54,7 +44,7 @@ class KotlinTemplatesFactory : ProjectTemplatesFactory() { BuilderBasedTemplate( KotlinModuleBuilder( JsPlatforms.defaultJsPlatform, "JS | IDEA", - "Kotlin project with a JavaScript target based on the IntelliJ IDEA build system", + KotlinJvmBundle.message("kotlin.project.with.a.javascript.target.based.on.the.intellij.idea.build.system"), KotlinIcons.JS ) ) diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt index d452252da31..26d9e49a8b9 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -19,6 +19,7 @@ import org.intellij.plugins.intelliLang.Configuration import org.intellij.plugins.intelliLang.inject.* import org.intellij.plugins.intelliLang.inject.config.BaseInjection import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.patterns.KotlinPatterns import org.jetbrains.kotlin.idea.util.addAnnotation import org.jetbrains.kotlin.idea.util.application.executeWriteCommand @@ -73,7 +74,7 @@ class KotlinLanguageInjectionSupport : AbstractLanguageInjectionSupport() { TemporaryPlacesRegistry.getInstance(project).removeHostWithUndo(project, psiElement) - project.executeWriteCommand("remove injection in-code instructions") { + project.executeWriteCommand(KotlinJvmBundle.message("remove.injection.in.code.instructions")) { injectInstructions.forEach(PsiElement::delete) } @@ -171,7 +172,7 @@ private fun addInjectionInstructionInCode(language: Language, host: PsiLanguageI val modifierListOwner = findElementToInjectWithAnnotation(ktHost) if (modifierListOwner != null && canInjectWithAnnotation(ktHost)) { - project.executeWriteCommand("Add injection annotation") { + project.executeWriteCommand(KotlinJvmBundle.message("add.injection.annotation")) { modifierListOwner.addAnnotation(FqName(AnnotationUtil.LANGUAGE), "\"${language.id}\"") } @@ -185,7 +186,7 @@ private fun addInjectionInstructionInCode(language: Language, host: PsiLanguageI val psiFactory = KtPsiFactory(project) val injectComment = psiFactory.createComment("//language=" + language.id) - project.executeWriteCommand("Add injection comment") { + project.executeWriteCommand(KotlinJvmBundle.message("add.injection.comment")) { commentBeforeAnchor.parent.addBefore(injectComment, commentBeforeAnchor) } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt.191 b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt.191 index 503a843c8e5..76a9d9c6d44 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt.191 +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/injection/KotlinLanguageInjectionSupport.kt.191 @@ -30,6 +30,7 @@ import org.intellij.plugins.intelliLang.Configuration import org.intellij.plugins.intelliLang.inject.* import org.intellij.plugins.intelliLang.inject.config.BaseInjection import org.jetbrains.annotations.NonNls +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.patterns.KotlinPatterns import org.jetbrains.kotlin.idea.util.addAnnotation import org.jetbrains.kotlin.idea.util.application.executeWriteCommand @@ -40,7 +41,8 @@ import org.jetbrains.kotlin.psi.psiUtil.endOffset import org.jetbrains.kotlin.psi.psiUtil.siblings import org.jetbrains.kotlin.psi.psiUtil.startOffset -@NonNls val KOTLIN_SUPPORT_ID = "kotlin" +@NonNls +val KOTLIN_SUPPORT_ID = "kotlin" class KotlinLanguageInjectionSupport : AbstractLanguageInjectionSupport() { override fun getId(): String = KOTLIN_SUPPORT_ID @@ -83,7 +85,7 @@ class KotlinLanguageInjectionSupport : AbstractLanguageInjectionSupport() { TemporaryPlacesRegistry.getInstance(project).removeHostWithUndo(project, psiElement) - project.executeWriteCommand("remove injection in-code instructions") { + project.executeWriteCommand(KotlinJvmBundle.message("remove.injection.in.code.instructions")) { injectInstructions.forEach(PsiElement::delete) } @@ -182,7 +184,7 @@ private fun addInjectionInstructionInCode(language: Language, host: PsiLanguageI val modifierListOwner = findElementToInjectWithAnnotation(ktHost) if (modifierListOwner != null && canInjectWithAnnotation(ktHost)) { - project.executeWriteCommand("Add injection annotation") { + project.executeWriteCommand(KotlinJvmBundle.message("add.injection.annotation")) { modifierListOwner.addAnnotation(FqName(AnnotationUtil.LANGUAGE), "\"${language.id}\"") } @@ -198,7 +200,7 @@ private fun addInjectionInstructionInCode(language: Language, host: PsiLanguageI val psiFactory = KtPsiFactory(project) val injectComment = psiFactory.createComment("//language=" + language.id) - project.executeWriteCommand("Add injection comment") { + project.executeWriteCommand(KotlinJvmBundle.message("add.injection.comment")) { commentBeforeAnchor.parent.addBefore(injectComment, commentBeforeAnchor) } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/inspections/JavaOutsideModuleDetector.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/inspections/JavaOutsideModuleDetector.kt index 4741af63a28..2aecbd376fc 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/inspections/JavaOutsideModuleDetector.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/inspections/JavaOutsideModuleDetector.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -13,6 +13,7 @@ import com.intellij.openapi.util.Key import com.intellij.openapi.vfs.VirtualFile import com.intellij.ui.EditorNotificationPanel import com.intellij.ui.EditorNotifications +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.facet.KotlinFacet import org.jetbrains.kotlin.idea.framework.isGradleModule import org.jetbrains.kotlin.idea.util.findModule @@ -31,7 +32,7 @@ class JavaOutsideModuleDetector(private val project: Project) : EditorNotificati val nonKotlinPath = module.sourceRoots.map { it.path } - facetSettings.pureKotlinSourceFolders if (nonKotlinPath.any { filePath.startsWith(it) }) return null return EditorNotificationPanel().apply { - text("This .java file is outside of Java source roots and won't be added to the classpath.") + text(KotlinJvmBundle.message("this.java.file.is.outside.of.java.source.roots.and.won.t.be.added.to.the.classpath")) icon(AllIcons.General.Warning) } } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/inspections/api/IncompatibleAPIInspection.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/inspections/api/IncompatibleAPIInspection.kt index 97961650be7..b038a78acd6 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/inspections/api/IncompatibleAPIInspection.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/inspections/api/IncompatibleAPIInspection.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -17,6 +17,7 @@ import com.intellij.psi.PsiReference import com.intellij.util.xmlb.annotations.Attribute import org.jdom.Element import org.jetbrains.kotlin.caches.resolve.KotlinCacheService +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.KotlinLanguage import org.jetbrains.kotlin.idea.highlighter.createSuppressWarningActions import org.jetbrains.kotlin.idea.inspections.api.IncompatibleAPIInspection.Companion.DEFAULT_REASON @@ -97,7 +98,7 @@ class IncompatibleAPIInspection : LocalInspectionTool(), CustomSuppressableInspe companion object { const val SHORT_NAME = "IncompatibleAPI" - const val DEFAULT_REASON = "Incompatible API" + val DEFAULT_REASON get() = KotlinJvmBundle.message("incompatible.api") } } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/internal/KotlinBytecodeToolWindow.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/internal/KotlinBytecodeToolWindow.kt index ac6094895f7..4f0c2ba2b76 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/internal/KotlinBytecodeToolWindow.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/internal/KotlinBytecodeToolWindow.kt @@ -1,5 +1,5 @@ /* - * Copyright 2000-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -31,6 +31,7 @@ import org.jetbrains.kotlin.codegen.KotlinCodegenFacade import org.jetbrains.kotlin.codegen.state.GenerationState import org.jetbrains.kotlin.config.* import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.debugger.DebuggerUtils import org.jetbrains.kotlin.idea.project.languageVersionSettings import org.jetbrains.kotlin.idea.project.platform @@ -180,7 +181,7 @@ class KotlinBytecodeToolWindow(private val myProject: Project, private val toolW val optionPanel = JPanel(FlowLayout()) add(optionPanel, BorderLayout.NORTH) - decompile = JButton("Decompile") + decompile = JButton(KotlinJvmBundle.message("decompile")) if (KotlinDecompilerService.getInstance() != null) { optionPanel.add(decompile) decompile.addActionListener { @@ -191,7 +192,11 @@ class KotlinBytecodeToolWindow(private val myProject: Project, private val toolW showDecompiledCode(file) } catch (ex: DecompileFailedException) { LOG.info(ex) - Messages.showErrorDialog(myProject, "Failed to decompile " + file.name + ": " + ex, "Kotlin Bytecode Decompiler") + Messages.showErrorDialog( + myProject, + KotlinJvmBundle.message("failed.to.decompile.0.1", file.name, ex), + KotlinJvmBundle.message("kotlin.bytecode.decompiler") + ) } } @@ -199,11 +204,11 @@ class KotlinBytecodeToolWindow(private val myProject: Project, private val toolW } /*TODO: try to extract default parameter from compiler options*/ - enableInline = JCheckBox("Inline", true) - enableOptimization = JCheckBox("Optimization", true) - enableAssertions = JCheckBox("Assertions", true) - jvm8Target = JCheckBox("JVM 8 target", false) - ir = JCheckBox("IR", false) + enableInline = JCheckBox(KotlinJvmBundle.message("inline"), true) + enableOptimization = JCheckBox(KotlinJvmBundle.message("optimization"), true) + enableAssertions = JCheckBox(KotlinJvmBundle.message("assertions"), true) + jvm8Target = JCheckBox(KotlinJvmBundle.message("jvm.8.target"), false) + ir = JCheckBox(KotlinJvmBundle.message("ir"), false) optionPanel.add(enableInline) optionPanel.add(enableOptimization) optionPanel.add(enableAssertions) @@ -241,7 +246,7 @@ class KotlinBytecodeToolWindow(private val myProject: Project, private val toolW val state: GenerationState try { state = compileSingleFile(ktFile, configuration) - ?: return BytecodeGenerationResult.Error("Cannot compile ${ktFile.name} to bytecode.") + ?: return BytecodeGenerationResult.Error(KotlinJvmBundle.message("cannot.compile.0.to.bytecode", ktFile.name)) } catch (e: ProcessCanceledException) { throw e } catch (e: Exception) { diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/internal/makeBackup/CreateIncrementalCompilationBackup.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/internal/makeBackup/CreateIncrementalCompilationBackup.kt index 158c75028a8..242d50c44c1 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/internal/makeBackup/CreateIncrementalCompilationBackup.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/internal/makeBackup/CreateIncrementalCompilationBackup.kt @@ -1,17 +1,6 @@ /* - * Copyright 2010-2015 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ package org.jetbrains.kotlin.idea.internal.makeBackup @@ -32,6 +21,7 @@ import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.vcs.changes.Change import com.intellij.util.WaitForProgressToShow import com.intellij.util.io.ZipUtil +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.util.application.runReadAction import java.io.File import java.io.FileOutputStream @@ -39,7 +29,7 @@ import java.text.SimpleDateFormat import java.util.* import java.util.zip.ZipOutputStream -class CreateIncrementalCompilationBackup : AnAction("Create backup for debugging Kotlin incremental compilation") { +class CreateIncrementalCompilationBackup : AnAction(KotlinJvmBundle.message("create.backup.for.debugging.kotlin.incremental.compilation")) { companion object { const val BACKUP_DIR_NAME = ".backup" const val PATCHES_TO_CREATE = 5 @@ -50,14 +40,16 @@ class CreateIncrementalCompilationBackup : AnAction("Create backup for debugging const val ZIP_FRACTION = 1.0 - PATCHES_FRACTION - LOGS_FRACTION - PROJECT_SYSTEM_FRACTION } - override fun actionPerformed(e: AnActionEvent) { val project = e.project!! val projectBaseDir = File(project.baseDir!!.path) val backupDir = File(FileUtil.createTempDirectory("makeBackup", null), BACKUP_DIR_NAME) ProgressManager.getInstance().run( - object : Task.Backgroundable(project, "Creating backup for debugging Kotlin incremental compilation", true) { + object : Task.Backgroundable( + project, + KotlinJvmBundle.message("creating.backup.for.debugging.kotlin.incremental.compilation"), true + ) { override fun run(indicator: ProgressIndicator) { createPatches(backupDir, project, indicator) copyLogs(backupDir, indicator) @@ -94,7 +86,7 @@ class CreateIncrementalCompilationBackup : AnAction("Create backup for debugging if (label != null && label.startsWith(HISTORY_LABEL_PREFIX)) { val patchFile = File(patchesDir, label.removePrefix(HISTORY_LABEL_PREFIX) + ".patch") - indicator.text = "Creating patch $patchFile" + indicator.text = KotlinJvmBundle.message("creating.patch.0", patchFile) indicator.fraction = PATCHES_FRACTION * patchesCreated / PATCHES_TO_CREATE val differences = revisions[0].getDifferencesWith(rev)!! @@ -113,7 +105,7 @@ class CreateIncrementalCompilationBackup : AnAction("Create backup for debugging } private fun copyLogs(backupDir: File, indicator: ProgressIndicator) { - indicator.text = "Copying logs" + indicator.text = KotlinJvmBundle.message("copying.logs") indicator.fraction = PATCHES_FRACTION val logsDir = File(backupDir, "logs") @@ -123,7 +115,7 @@ class CreateIncrementalCompilationBackup : AnAction("Create backup for debugging } private fun copyProjectSystemDir(backupDir: File, project: Project, indicator: ProgressIndicator) { - indicator.text = "Copying project's system dir " + indicator.text = KotlinJvmBundle.message("copying.project.s.system.dir") indicator.fraction = PATCHES_FRACTION val projectSystemDir = File(backupDir, "project-system") @@ -147,7 +139,7 @@ class CreateIncrementalCompilationBackup : AnAction("Create backup for debugging && !(it.name.startsWith("make_backup_") && it.name.endsWith(".zip")) ) { - indicator.text = "Scanning project dir: $it" + indicator.text = KotlinJvmBundle.message("scanning.project.dir.0", it) files.add(Pair(it, FileUtil.getRelativePath(dir, it)!!)) totalBytes += it.length() @@ -171,7 +163,7 @@ class CreateIncrementalCompilationBackup : AnAction("Create backup for debugging zos.use { for ((file, relativePath) in files) { - indicator.text = "Adding file to backup: $relativePath" + indicator.text = KotlinJvmBundle.message("adding.file.to.backup.0", relativePath) indicator.fraction = PATCHES_FRACTION + LOGS_FRACTION + processedBytes.toDouble() / totalBytes * ZIP_FRACTION ZipUtil.addFileToZip(zos, file, relativePath, null, null) @@ -186,8 +178,8 @@ class CreateIncrementalCompilationBackup : AnAction("Create backup for debugging { RevealFileAction.showDialog( project, - "Successfully created backup " + backupFile.absolutePath, - "Created backup", + KotlinJvmBundle.message("successfully.created.backup.0", backupFile.absolutePath), + KotlinJvmBundle.message("created.backup"), backupFile, null ) diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/internal/makeBackup/CreateIncrementalCompilationBackup.kt.192 b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/internal/makeBackup/CreateIncrementalCompilationBackup.kt.192 index b0eac39d0c2..33b305e728f 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/internal/makeBackup/CreateIncrementalCompilationBackup.kt.192 +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/internal/makeBackup/CreateIncrementalCompilationBackup.kt.192 @@ -32,6 +32,7 @@ import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.vcs.changes.Change import com.intellij.util.WaitForProgressToShow import com.intellij.util.io.ZipUtil +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.util.application.runReadAction import java.io.File import java.io.FileOutputStream @@ -39,7 +40,7 @@ import java.text.SimpleDateFormat import java.util.* import java.util.zip.ZipOutputStream -class CreateIncrementalCompilationBackup : AnAction("Create backup for debugging Kotlin incremental compilation") { +class CreateIncrementalCompilationBackup : AnAction(KotlinJvmBundle.message("create.backup.for.debugging.kotlin.incremental.compilation")) { companion object { const val BACKUP_DIR_NAME = ".backup" const val PATCHES_TO_CREATE = 5 @@ -56,7 +57,10 @@ class CreateIncrementalCompilationBackup : AnAction("Create backup for debugging val backupDir = File(FileUtil.createTempDirectory("makeBackup", null), BACKUP_DIR_NAME) ProgressManager.getInstance().run( - object : Task.Backgroundable(project, "Creating backup for debugging Kotlin incremental compilation", true) { + object : Task.Backgroundable( + project, + KotlinJvmBundle.message("creating.backup.for.debugging.kotlin.incremental.compilation"), true + ) { override fun run(indicator: ProgressIndicator) { createPatches(backupDir, project, indicator) copyLogs(backupDir, indicator) @@ -93,7 +97,7 @@ class CreateIncrementalCompilationBackup : AnAction("Create backup for debugging if (label != null && label.startsWith(HISTORY_LABEL_PREFIX)) { val patchFile = File(patchesDir, label.removePrefix(HISTORY_LABEL_PREFIX) + ".patch") - indicator.text = "Creating patch $patchFile" + indicator.text = KotlinJvmBundle.message("creating.patch.0", patchFile) indicator.fraction = PATCHES_FRACTION * patchesCreated / PATCHES_TO_CREATE val differences = revisions[0].getDifferencesWith(rev)!! @@ -112,7 +116,7 @@ class CreateIncrementalCompilationBackup : AnAction("Create backup for debugging } private fun copyLogs(backupDir: File, indicator: ProgressIndicator) { - indicator.text = "Copying logs" + indicator.text = KotlinJvmBundle.message("copying.logs") indicator.fraction = PATCHES_FRACTION val logsDir = File(backupDir, "logs") @@ -122,7 +126,7 @@ class CreateIncrementalCompilationBackup : AnAction("Create backup for debugging } private fun copyProjectSystemDir(backupDir: File, project: Project, indicator: ProgressIndicator) { - indicator.text = "Copying project's system dir " + indicator.text = KotlinJvmBundle.message("copying.project.s.system.dir") indicator.fraction = PATCHES_FRACTION val projectSystemDir = File(backupDir, "project-system") @@ -146,7 +150,7 @@ class CreateIncrementalCompilationBackup : AnAction("Create backup for debugging && !(it.name.startsWith("make_backup_") && it.name.endsWith(".zip")) ) { - indicator.text = "Scanning project dir: $it" + indicator.text = KotlinJvmBundle.message("scanning.project.dir.0", it) files.add(Pair(it, FileUtil.getRelativePath(dir, it)!!)) totalBytes += it.length() @@ -170,7 +174,7 @@ class CreateIncrementalCompilationBackup : AnAction("Create backup for debugging zos.use { for ((file, relativePath) in files) { - indicator.text = "Adding file to backup: $relativePath" + indicator.text = KotlinJvmBundle.message("adding.file.to.backup.0", relativePath) indicator.fraction = PATCHES_FRACTION + LOGS_FRACTION + processedBytes.toDouble() / totalBytes * ZIP_FRACTION ZipUtil.addFileToZip(zos, file, relativePath, null, null) @@ -185,8 +189,8 @@ class CreateIncrementalCompilationBackup : AnAction("Create backup for debugging { ShowFilePathAction.showDialog( project, - "Successfully created backup " + backupFile.absolutePath, - "Created backup", + KotlinJvmBundle.message("successfully.created.backup.0", backupFile.absolutePath), + KotlinJvmBundle.message("created.backup"), backupFile, null ) diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/quickfix/EnableUnsupportedFeatureFix.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/quickfix/EnableUnsupportedFeatureFix.kt index 86ddef88116..c6af5a6f9a6 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/quickfix/EnableUnsupportedFeatureFix.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/quickfix/EnableUnsupportedFeatureFix.kt @@ -1,5 +1,5 @@ /* - * Copyright 2000-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider import org.jetbrains.kotlin.config.LanguageFeature import org.jetbrains.kotlin.diagnostics.Diagnostic import org.jetbrains.kotlin.diagnostics.Errors +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.compiler.configuration.KotlinCommonCompilerArgumentsHolder import org.jetbrains.kotlin.idea.configuration.BuildSystemType import org.jetbrains.kotlin.idea.configuration.findApplicableConfigurator @@ -140,9 +141,11 @@ fun askUpdateRuntime(project: Project, requiredVersion: ApiVersion, librariesToU if (!ApplicationManager.getApplication().isUnitTestMode) { val rc = Messages.showOkCancelDialog( project, - "This language feature requires version $requiredVersion or later of the Kotlin runtime library. " + - "Would you like to update the runtime library in your project?", - "Update Runtime Library", + KotlinJvmBundle.message( + "this.language.feature.requires.version.0.or.later.of.the.kotlin.runtime.library.would.you.like.to.update.the.runtime.library.in.your.project", + requiredVersion + ), + KotlinJvmBundle.message("update.runtime.library"), Messages.getQuestionIcon() ) if (rc != Messages.OK) return false diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/script/standalone/KotlinStandaloneScriptRunConfiguration.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/script/standalone/KotlinStandaloneScriptRunConfiguration.kt index 75ad3429ae3..d5baf1244e1 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/script/standalone/KotlinStandaloneScriptRunConfiguration.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/script/standalone/KotlinStandaloneScriptRunConfiguration.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -27,6 +27,7 @@ import com.intellij.psi.PsiElement import com.intellij.refactoring.listeners.RefactoringElementAdapter import com.intellij.refactoring.listeners.RefactoringElementListener import org.jdom.Element +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager import org.jetbrains.kotlin.idea.run.KotlinRunConfiguration import org.jetbrains.kotlin.idea.run.script.standalone.KotlinStandaloneScriptRunConfigurationProducer.Companion.pathFromPsiElement @@ -143,11 +144,11 @@ class KotlinStandaloneScriptRunConfiguration( JavaRunConfigurationExtensionManager.checkConfigurationIsValid(this) if (filePath.isNullOrEmpty()) { - runtimeConfigurationWarning("File was not specified") + runtimeConfigurationWarning(KotlinJvmBundle.message("file.was.not.specified")) } val virtualFile = LocalFileSystem.getInstance().findFileByIoFile(File(filePath)) if (virtualFile == null || virtualFile.isDirectory) { - runtimeConfigurationWarning("Could not find script file: $filePath") + runtimeConfigurationWarning(KotlinJvmBundle.message("could.not.find.script.file.0", filePath.toString())) } } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/script/standalone/KotlinStandaloneScriptRunConfigurationType.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/script/standalone/KotlinStandaloneScriptRunConfigurationType.kt index 3b9322ae8a7..59b52d21f38 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/script/standalone/KotlinStandaloneScriptRunConfigurationType.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/run/script/standalone/KotlinStandaloneScriptRunConfigurationType.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -11,11 +11,12 @@ import com.intellij.execution.configurations.SimpleConfigurationType import com.intellij.openapi.project.Project import com.intellij.openapi.util.NotNullLazyValue import org.jetbrains.kotlin.idea.KotlinIcons +import org.jetbrains.kotlin.idea.KotlinJvmBundle class KotlinStandaloneScriptRunConfigurationType : SimpleConfigurationType( "KotlinStandaloneScriptRunConfigurationType", - "Kotlin script", - "Run Kotlin script", + KotlinJvmBundle.message("kotlin.script"), + KotlinJvmBundle.message("run.kotlin.script"), NotNullLazyValue.createValue { KotlinIcons.SMALL_LOGO } ) { override fun createTemplateConfiguration(project: Project): RunConfiguration { diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/RunScratchAction.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/RunScratchAction.kt index a2a98a03bc9..98a7208adf6 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/RunScratchAction.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/RunScratchAction.kt @@ -1,17 +1,6 @@ /* - * Copyright 2010-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ package org.jetbrains.kotlin.idea.scratch.actions @@ -21,12 +10,11 @@ import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.keymap.KeymapManager import com.intellij.openapi.keymap.KeymapUtil import com.intellij.openapi.project.DumbService -import com.intellij.task.ProjectTaskContext import com.intellij.task.ProjectTaskManager -import com.intellij.task.ProjectTaskNotification -import com.intellij.task.ProjectTaskResult import org.jetbrains.kotlin.idea.KotlinJvmBundle -import org.jetbrains.kotlin.idea.scratch.* +import org.jetbrains.kotlin.idea.scratch.ScratchFile +import org.jetbrains.kotlin.idea.scratch.SequentialScratchExecutor +import org.jetbrains.kotlin.idea.scratch.getScratchFileFromSelectedEditor import org.jetbrains.kotlin.idea.scratch.printDebugMessage import org.jetbrains.kotlin.idea.scratch.LOG as log @@ -63,7 +51,7 @@ class RunScratchAction : ScratchAction( executor.execute() } } catch (ex: Throwable) { - executor.errorOccurs("Exception occurs during Run Scratch Action", ex, true) + executor.errorOccurs(KotlinJvmBundle.message("exception.occurs.during.run.scratch.action"), ex, true) } } @@ -77,7 +65,7 @@ class RunScratchAction : ScratchAction( val project = scratchFile.project ProjectTaskManager.getInstance(project).build(module).onSuccess { executionResult -> if (executionResult.isAborted || executionResult.hasErrors()) { - executor.errorOccurs("There were compilation errors in module ${module.name}") + executor.errorOccurs(KotlinJvmBundle.message("there.were.compilation.errors.in.module.0", module.name)) } if (DumbService.isDumb(project)) { @@ -102,7 +90,7 @@ class RunScratchAction : ScratchAction( if (e.presentation.isEnabled) { e.presentation.text = templatePresentation.text } else { - e.presentation.text = "Other Scratch file execution is in progress" + e.presentation.text = KotlinJvmBundle.message("other.scratch.file.execution.is.in.progress") } val project = e.project ?: return diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/RunScratchAction.kt.192 b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/RunScratchAction.kt.192 index 1f9b354d729..928d47e4117 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/RunScratchAction.kt.192 +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/RunScratchAction.kt.192 @@ -60,7 +60,7 @@ class RunScratchAction : ScratchAction( executor.execute() } } catch (ex: Throwable) { - executor.errorOccurs("Exception occurs during Run Scratch Action", ex, true) + executor.errorOccurs(KotlinJvmBundle.message("exception.occurs.during.run.scratch.action"), ex, true) } } @@ -74,7 +74,7 @@ class RunScratchAction : ScratchAction( val project = scratchFile.project ProjectTaskManager.getInstance(project).build(arrayOf(module)) { result -> if (result.isAborted || result.errors > 0) { - executor.errorOccurs("There were compilation errors in module ${module.name}") + executor.errorOccurs(KotlinJvmBundle.message("there.were.compilation.errors.in.module.0", module.name)) } if (DumbService.isDumb(project)) { @@ -99,7 +99,7 @@ class RunScratchAction : ScratchAction( if (e.presentation.isEnabled) { e.presentation.text = templatePresentation.text } else { - e.presentation.text = "Other Scratch file execution is in progress" + e.presentation.text = KotlinJvmBundle.message("other.scratch.file.execution.is.in.progress") } val project = e.project ?: return diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/RunScratchFromHereAction.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/RunScratchFromHereAction.kt index 028e92b47b9..a4d20a50087 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/RunScratchFromHereAction.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/actions/RunScratchFromHereAction.kt @@ -1,6 +1,6 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license - * that can be found in the license/LICENSE.txt file. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ package org.jetbrains.kotlin.idea.scratch.actions @@ -30,7 +30,7 @@ class RunScratchFromHereAction : ScratchAction( try { executor.executeNew() } catch (ex: Throwable) { - executor.errorOccurs("Exception occurs during Run Scratch Action", ex, true) + executor.errorOccurs(KotlinJvmBundle.message("exception.occurs.during.run.scratch.action1"), ex, true) } } } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/compile/KtCompilingExecutor.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/compile/KtCompilingExecutor.kt index 4d26da4ca3f..b230fe8edaa 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/compile/KtCompilingExecutor.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/compile/KtCompilingExecutor.kt @@ -1,17 +1,6 @@ /* - * Copyright 2010-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ package org.jetbrains.kotlin.idea.scratch.compile @@ -20,6 +9,7 @@ import com.intellij.execution.process.ProcessOutput import com.intellij.psi.PsiElement import org.jetbrains.kotlin.diagnostics.Severity import org.jetbrains.kotlin.diagnostics.rendering.DefaultErrorMessages +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.caches.resolve.analyzeWithAllCompilerChecks import org.jetbrains.kotlin.idea.refactoring.getLineNumber import org.jetbrains.kotlin.idea.scratch.* @@ -59,14 +49,14 @@ class KtCompilingExecutor(file: ScratchFile) : ScratchExecutor(file) { try { AnalyzingUtils.checkForSyntacticErrors(psiFile) } catch (e: IllegalArgumentException) { - errorOccurs(e.message ?: "Couldn't compile ${psiFile.name}", isFatal = true) + errorOccurs(e.message ?: KotlinJvmBundle.message("couldn.t.compile.0", psiFile.name), isFatal = true) return@runReadAction false } val analysisResult = psiFile.analyzeWithAllCompilerChecks() if (analysisResult.isError()) { - errorOccurs(analysisResult.error.message ?: "Couldn't compile ${psiFile.name}", isFatal = true) + errorOccurs(analysisResult.error.message ?: KotlinJvmBundle.message("couldn.t.compile.0", psiFile.name), isFatal = true) return@runReadAction false } @@ -139,7 +129,10 @@ class KtCompilingExecutor(file: ScratchFile) : ScratchExecutor(file) { val lineWoPrefix = line.removePrefix(KtScratchSourceFileProcessor.GENERATED_OUTPUT_PREFIX) if (isResultEnd(lineWoPrefix)) { val extractedLineInfo = extractLineInfoFrom(lineWoPrefix) - ?: return errorOccurs("Couldn't extract line info from line: $lineWoPrefix", isFatal = true) + ?: return errorOccurs( + KotlinJvmBundle.message("couldn.t.extract.line.info.from.line.0", lineWoPrefix), + isFatal = true + ) val (startLine, endLine) = extractedLineInfo val scratchExpression = expressions.findExpression(startLine, endLine) if (scratchExpression == null) { diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/compile/KtScratchExecutionSession.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/compile/KtScratchExecutionSession.kt index 6499aadcc96..94d70135030 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/compile/KtScratchExecutionSession.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/compile/KtScratchExecutionSession.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -22,6 +22,7 @@ import org.jetbrains.kotlin.codegen.KotlinCodegenFacade import org.jetbrains.kotlin.codegen.filterClassFiles import org.jetbrains.kotlin.codegen.state.GenerationState import org.jetbrains.kotlin.config.CompilerConfiguration +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager import org.jetbrains.kotlin.idea.debugger.DebuggerUtils @@ -46,7 +47,10 @@ class KtScratchExecutionSession( private var backgroundProcessIndicator: ProgressIndicator? = null fun execute(callback: () -> Unit) { - val psiFile = file.getPsiFile() as? KtFile ?: return executor.errorOccurs("Couldn't find KtFile for current editor", isFatal = true) + val psiFile = file.getPsiFile() as? KtFile ?: return executor.errorOccurs( + KotlinJvmBundle.message("couldn.t.find.ktfile.for.current.editor"), + isFatal = true + ) val expressions = file.getExpressions() if (!executor.checkForErrors(psiFile, expressions)) return @@ -58,7 +62,7 @@ class KtScratchExecutionSession( is KtScratchSourceFileProcessor.Result.OK -> { LOG.printDebugMessage("After processing by KtScratchSourceFileProcessor:\n ${result.code}") - object : Task.Backgroundable(psiFile.project, "Running Kotlin Scratch...", true) { + object : Task.Backgroundable(psiFile.project, KotlinJvmBundle.message("running.kotlin.scratch"), true) { override fun run(indicator: ProgressIndicator) { backgroundProcessIndicator = indicator @@ -72,7 +76,11 @@ class KtScratchExecutionSession( if (e is ControlFlowException) throw e LOG.printDebugMessage(result.code) - executor.errorOccurs(e.message ?: "Couldn't compile ${psiFile.name}", e, isFatal = true) + executor.errorOccurs( + e.message ?: KotlinJvmBundle.message("couldn.t.compile.0", psiFile.name), + e, + isFatal = true + ) } } }.queue() @@ -107,7 +115,12 @@ class KtScratchExecutionSession( val executionResult = processHandler.runProcessWithProgressIndicator(indicator, TIMEOUT_MS) when { executionResult.isTimeout -> { - executor.errorOccurs("Couldn't get scratch execution result - stopped by timeout ($TIMEOUT_MS ms)") + executor.errorOccurs( + KotlinJvmBundle.message( + "couldn.t.get.scratch.execution.result.stopped.by.timeout.0.ms", + TIMEOUT_MS + ) + ) } executionResult.isCancelled -> { // ignore diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/compile/KtScratchExecutionSession.kt.191 b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/compile/KtScratchExecutionSession.kt.191 index 0b7d93cd910..478ca4e0e5c 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/compile/KtScratchExecutionSession.kt.191 +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/compile/KtScratchExecutionSession.kt.191 @@ -19,6 +19,7 @@ import org.jetbrains.kotlin.codegen.KotlinCodegenFacade import org.jetbrains.kotlin.codegen.filterClassFiles import org.jetbrains.kotlin.codegen.state.GenerationState import org.jetbrains.kotlin.config.CompilerConfiguration +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.caches.resolve.getResolutionFacade import org.jetbrains.kotlin.idea.core.script.ScriptConfigurationManager import org.jetbrains.kotlin.idea.debugger.DebuggerUtils @@ -42,7 +43,7 @@ class KtScratchExecutionSession( private var backgroundProcessIndicator: ProgressIndicator? = null fun execute(callback: () -> Unit) { - val psiFile = file.getPsiFile() as? KtFile ?: return executor.errorOccurs("Couldn't find KtFile for current editor", isFatal = true) + val psiFile = file.getPsiFile() as? KtFile ?: return executor.errorOccurs(KotlinJvmBundle.message("couldn.t.find.ktfile.for.current.editor"), isFatal = true) val expressions = file.getExpressions() if (!executor.checkForErrors(psiFile, expressions)) return @@ -52,7 +53,7 @@ class KtScratchExecutionSession( is KtScratchSourceFileProcessor.Result.OK -> { LOG.printDebugMessage("After processing by KtScratchSourceFileProcessor:\n ${result.code}") - object : Task.Backgroundable(psiFile.project, "Running Kotlin Scratch...", true) { + object : Task.Backgroundable(psiFile.project, KotlinJvmBundle.message("running.kotlin.scratch"), true) { override fun run(indicator: ProgressIndicator) { backgroundProcessIndicator = indicator @@ -76,7 +77,12 @@ class KtScratchExecutionSession( val executionResult = processHandler.runProcessWithProgressIndicator(indicator, TIMEOUT_MS) when { executionResult.isTimeout -> { - executor.errorOccurs("Couldn't get scratch execution result - stopped by timeout ($TIMEOUT_MS ms)") + executor.errorOccurs( + KotlinJvmBundle.message( + "couldn.t.get.scratch.execution.result.stopped.by.timeout.0.ms", + TIMEOUT_MS + ) + ) } executionResult.isCancelled -> { // ignore @@ -93,7 +99,7 @@ class KtScratchExecutionSession( if (e is ControlFlowException) throw e LOG.printDebugMessage(result.code) - executor.errorOccurs(e.message ?: "Couldn't compile ${psiFile.name}", e, isFatal = true) + executor.errorOccurs(e.message ?: KotlinJvmBundle.message("couldn.t.compile.0", psiFile.name), e, isFatal = true) } } }.queue() diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/repl/KtScratchReplExecutor.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/repl/KtScratchReplExecutor.kt index 87c2490d521..057ed98242d 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/repl/KtScratchReplExecutor.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/scratch/repl/KtScratchReplExecutor.kt @@ -1,17 +1,6 @@ /* - * Copyright 2010-2017 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ package org.jetbrains.kotlin.idea.scratch.repl @@ -28,6 +17,7 @@ import org.jetbrains.kotlin.cli.common.repl.replRemoveLineBreaksInTheEnd import org.jetbrains.kotlin.cli.common.repl.replUnescapeLineBreaks import org.jetbrains.kotlin.console.KotlinConsoleKeeper import org.jetbrains.kotlin.console.actions.logError +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.scratch.* import org.jetbrains.kotlin.idea.scratch.output.ScratchOutput import org.jetbrains.kotlin.idea.scratch.output.ScratchOutputType @@ -68,7 +58,7 @@ class KtScratchReplExecutor(file: ScratchFile) : SequentialScratchExecutor(file) } sendCommandToProcess(":quit") } catch (e: Exception) { - errorOccurs("Couldn't stop REPL process", e, false) + errorOccurs(KotlinJvmBundle.message("couldn.t.stop.repl.process"), e, false) processHandler.destroyProcess() clearState() @@ -90,7 +80,7 @@ class KtScratchReplExecutor(file: ScratchFile) : SequentialScratchExecutor(file) try { sendCommandToProcess(expression.element.text) } catch (e: Throwable) { - errorOccurs("Couldn't execute statement: ${expression.element.text}", e, true) + errorOccurs(KotlinJvmBundle.message("couldn.t.execute.statement.0", expression.element.text), e, true) } } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/vcs/BunchCheckinHandler.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/vcs/BunchCheckinHandler.kt index 4343a754558..60c2bbc9152 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/vcs/BunchCheckinHandler.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/vcs/BunchCheckinHandler.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2018 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -23,6 +23,7 @@ import com.intellij.openapi.vcs.ui.RefreshableOnComponent import com.intellij.openapi.vfs.VirtualFile import com.intellij.ui.NonFocusableCheckBox import com.intellij.util.PairConsumer +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.psi.NotNullableUserDataProperty import java.awt.GridLayout import java.io.File @@ -32,7 +33,10 @@ import javax.swing.JPanel private val BUNCH_PLUGIN_ID = PluginId.getId("org.jetbrains.bunch.tool.idea.plugin") private var Project.bunchFileCheckEnabled: Boolean - by NotNullableUserDataProperty(Key.create("IS_BUNCH_FILE_CHECK_ENABLED_KOTLIN"), !PluginManagerCore.isPluginInstalled(BUNCH_PLUGIN_ID)) + by NotNullableUserDataProperty( + Key.create("IS_BUNCH_FILE_CHECK_ENABLED_KOTLIN"), + !PluginManagerCore.isPluginInstalled(BUNCH_PLUGIN_ID) + ) class BunchFileCheckInHandlerFactory : CheckinHandlerFactory() { override fun createHandler(panel: CheckinProjectPanel, commitContext: CommitContext): CheckinHandler { @@ -46,7 +50,7 @@ class BunchFileCheckInHandlerFactory : CheckinHandlerFactory() { if (PluginManagerCore.isPluginInstalled(BUNCH_PLUGIN_ID)) return null BunchFileUtils.bunchFile(project) ?: return null - val bunchFilesCheckBox = NonFocusableCheckBox(replaceMnemonicAmpersand("Check &bunch files")) + val bunchFilesCheckBox = NonFocusableCheckBox(replaceMnemonicAmpersand(KotlinJvmBundle.message("check.bunch.files"))) return object : RefreshableOnComponent { override fun getComponent(): JComponent { val panel = JPanel(GridLayout(1, 0)) @@ -98,8 +102,13 @@ class BunchFileCheckInHandlerFactory : CheckinHandlerFactory() { when (Messages.showYesNoCancelDialog( project, - "Several bunch files haven't been updated:\n\n${filePaths.joinToString("\n")}\n\nDo you want to review them before commit?", - "Forgotten Bunch Files", "Review", "Commit", CommonBundle.getCancelButtonText(), Messages.getWarningIcon() + KotlinJvmBundle.message( + "several.bunch.files.haven.t.been.updated.0.do.you.want.to.review.them.before.commit", + filePaths.joinToString("\n") + ), + KotlinJvmBundle.message("forgotten.bunch.files"), + KotlinJvmBundle.message("review"), + KotlinJvmBundle.message("commit"), CommonBundle.getCancelButtonText(), Messages.getWarningIcon() )) { YES -> { return ReturnResult.CLOSE_WINDOW diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/vcs/BunchCheckinHandler.kt.192 b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/vcs/BunchCheckinHandler.kt.192 index f046e224a42..87886118dde 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/vcs/BunchCheckinHandler.kt.192 +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/vcs/BunchCheckinHandler.kt.192 @@ -23,6 +23,7 @@ import com.intellij.openapi.vcs.ui.RefreshableOnComponent import com.intellij.openapi.vfs.VirtualFile import com.intellij.ui.NonFocusableCheckBox import com.intellij.util.PairConsumer +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.psi.NotNullableUserDataProperty import java.awt.GridLayout import java.io.File @@ -46,7 +47,7 @@ class BunchFileCheckInHandlerFactory : CheckinHandlerFactory() { if (PluginManager.isPluginInstalled(BUNCH_PLUGIN_ID)) return null BunchFileUtils.bunchFile(project) ?: return null - val bunchFilesCheckBox = NonFocusableCheckBox(replaceMnemonicAmpersand("Check &bunch files")) + val bunchFilesCheckBox = NonFocusableCheckBox(replaceMnemonicAmpersand(KotlinJvmBundle.message("check.bunch.files"))) return object : RefreshableOnComponent { override fun getComponent(): JComponent { val panel = JPanel(GridLayout(1, 0)) @@ -98,8 +99,13 @@ class BunchFileCheckInHandlerFactory : CheckinHandlerFactory() { when (Messages.showYesNoCancelDialog( project, - "Several bunch files haven't been updated:\n\n${filePaths.joinToString("\n")}\n\nDo you want to review them before commit?", - "Forgotten Bunch Files", "Review", "Commit", CommonBundle.getCancelButtonText(), Messages.getWarningIcon() + KotlinJvmBundle.message( + "several.bunch.files.haven.t.been.updated.0.do.you.want.to.review.them.before.commit", + filePaths.joinToString("\n") + ), + KotlinJvmBundle.message("forgotten.bunch.files"), + KotlinJvmBundle.message("review"), + KotlinJvmBundle.message("commit"), CommonBundle.getCancelButtonText(), Messages.getWarningIcon() )) { YES -> { return ReturnResult.CLOSE_WINDOW diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/versions/KotlinJVMRuntimeLibraryUtil.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/versions/KotlinJVMRuntimeLibraryUtil.kt index c75ba802941..e456262626d 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/versions/KotlinJVMRuntimeLibraryUtil.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/versions/KotlinJVMRuntimeLibraryUtil.kt @@ -1,5 +1,5 @@ /* - * Copyright 2000-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -13,6 +13,7 @@ import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.vfs.JarFileSystem import com.intellij.openapi.vfs.LocalFileSystem import com.intellij.openapi.vfs.VirtualFile +import org.jetbrains.kotlin.idea.KotlinJvmBundle import org.jetbrains.kotlin.idea.configuration.* import org.jetbrains.kotlin.idea.framework.JavaRuntimeDetectionUtil import org.jetbrains.kotlin.idea.framework.isExternalLibrary @@ -25,9 +26,8 @@ fun updateLibraries(project: Project, libraries: Collection) { if (project.allModules().any { module -> module.getBuildSystemType() != BuildSystemType.JPS }) { Messages.showMessageDialog( project, - "Automatic library version update for Maven and Gradle projects is currently unsupported. " + - "Please update your build scripts manually.", - "Update Kotlin Runtime Library", + KotlinJvmBundle.message("automatic.library.version.update.for.maven.and.gradle.projects.is.currently.unsupported.please.update.your.build.scripts.manually"), + KotlinJvmBundle.message("update.kotlin.runtime.library"), Messages.getErrorIcon() ) return @@ -93,8 +93,8 @@ private fun updateJar( } catch (e: IOException) { Messages.showErrorDialog( project, - "Failed to update $jarPath: ${e.message}", - "Library update failed" + KotlinJvmBundle.message("failed.to.update.0.1", jarPath, e.message.toString()), + KotlinJvmBundle.message("library.update.failed") ) return } @@ -106,7 +106,11 @@ private fun updateJar( model.removeRoot(oldUrl, libraryJarDescriptor.orderRootType) val newRoot = JarFileSystem.getInstance().getJarRootForLocalFile(newVFile) ?: run { - Messages.showErrorDialog(project, "Failed to find root for file: ${newVFile.canonicalPath}", "Library update failed") + Messages.showErrorDialog( + project, + KotlinJvmBundle.message("failed.to.find.root.for.file.0", newVFile.canonicalPath.toString()), + KotlinJvmBundle.message("library.update.failed1") + ) return@runWriteAction } diff --git a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/versions/UnsupportedAbiVersionNotificationPanelProvider.kt b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/versions/UnsupportedAbiVersionNotificationPanelProvider.kt index eed2375f14e..caf391d2c6f 100644 --- a/idea/idea-jvm/src/org/jetbrains/kotlin/idea/versions/UnsupportedAbiVersionNotificationPanelProvider.kt +++ b/idea/idea-jvm/src/org/jetbrains/kotlin/idea/versions/UnsupportedAbiVersionNotificationPanelProvider.kt @@ -1,5 +1,5 @@ /* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. + * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ @@ -29,17 +29,13 @@ import com.intellij.ui.EditorNotificationPanel import com.intellij.ui.EditorNotifications import com.intellij.ui.HyperlinkAdapter import com.intellij.ui.HyperlinkLabel -import org.jetbrains.kotlin.idea.KotlinFileType -import org.jetbrains.kotlin.idea.KotlinPluginUpdater -import org.jetbrains.kotlin.idea.KotlinPluginUtil -import org.jetbrains.kotlin.idea.PluginUpdateStatus +import org.jetbrains.kotlin.idea.* import org.jetbrains.kotlin.idea.project.TargetPlatformDetector import org.jetbrains.kotlin.metadata.deserialization.BinaryVersion import org.jetbrains.kotlin.platform.js.isJs import org.jetbrains.kotlin.platform.jvm.isJvm import java.awt.event.ComponentAdapter import java.awt.event.ComponentEvent -import java.text.MessageFormat import java.util.* import javax.swing.Icon import javax.swing.JLabel @@ -67,10 +63,8 @@ class UnsupportedAbiVersionNotificationPanelProvider(private val project: Projec val badRootsInRuntimeLibraries = findBadRootsInRuntimeLibraries(badRuntimeLibraries, badVersionedRoots) val otherBadRootsCount = badVersionedRoots.size - badRootsInRuntimeLibraries.size - val text = MessageFormat.format( - "{0,choice,0#|1#|1" + - "{1,choice,0#|1# and one other jar|1< and {1} other jars} " + - "{1,choice,0#has|0", + val text = KotlinJvmBundle.message( + "html.b.0.choice.0.1.1.some.kotlin.runtime.librar.0.choice.0.1.y.1.ies.b.1.choice.0.1.and.one.other.jar.1.and.1.other.jars.1.choice.0.has.0.have.an.unsupported.binary.format.html", badRuntimeLibraries.size, otherBadRootsCount ) @@ -85,15 +79,16 @@ class UnsupportedAbiVersionNotificationPanelProvider(private val project: Projec val isPluginNewForAllRuntimeLibraries = badRootsInRuntimeLibraries.all { it.supportedVersion > it.version } val updateAction = when { - isPluginNewForAllRuntimeLibraries -> "Update" - isPluginOldForAllRuntimeLibraries -> "Downgrade" - else -> "Replace" + isPluginNewForAllRuntimeLibraries -> KotlinJvmBundle.message("update") + isPluginOldForAllRuntimeLibraries -> KotlinJvmBundle.message("downgrade") + else -> KotlinJvmBundle.message("replace") } - val actionLabelText = MessageFormat.format( - "$updateAction {0,choice,0#|1#|1 { - answer.setText("Kotlin library '$presentableName' was compiled with a newer Kotlin compiler and can't be read. Please update Kotlin plugin.") + answer.setText( + KotlinJvmBundle.message( + "html.kotlin.library.b.0.b.was.compiled.with.a.newer.kotlin.compiler.and.can.t.be.read.please.update.kotlin.plugin.html", + presentableName + ) + ) createUpdatePluginLink(answer) } isPluginNewForAllRoots -> - answer.setText("Kotlin library '$presentableName' has outdated binary format and can't be read by current plugin. Please update the library.") + answer.setText( + KotlinJvmBundle.message( + "html.kotlin.library.b.0.b.has.outdated.binary.format.and.can.t.be.read.by.current.plugin.please.update.the.library.html", + presentableName + ) + ) else -> { throw IllegalStateException("Bad root with compatible version found: $badVersionedRoot") } } - answer.createActionLabel("Go to $presentableName") { navigateToLibraryRoot(project, badVersionedRoot.file) } + answer.createActionLabel(KotlinJvmBundle.message("go.to.0", presentableName)) { + navigateToLibraryRoot( + project, + badVersionedRoot.file + ) + } } isPluginOldForAllRoots -> { answer.setText( - "Some Kotlin libraries attached to this project were compiled with a newer Kotlin compiler and can't be read. " + - "Please update Kotlin plugin." + KotlinJvmBundle.message("some.kotlin.libraries.attached.to.this.project.were.compiled.with.a.newer.kotlin.compiler.and.can.t.be.read.please.update.kotlin.plugin") ) createUpdatePluginLink(answer) } isPluginNewForAllRoots -> answer.setText( - "Some Kotlin libraries attached to this project have outdated binary format and can't be read by current plugin. " + - "Please update found libraries." + KotlinJvmBundle.message("some.kotlin.libraries.attached.to.this.project.have.outdated.binary.format.and.can.t.be.read.by.current.plugin.please.update.found.libraries") ) else -> - answer.setText("Some Kotlin libraries attached to this project have unsupported binary format. Please update the libraries or the plugin.") + answer.setText(KotlinJvmBundle.message("some.kotlin.libraries.attached.to.this.project.have.unsupported.binary.format.please.update.the.libraries.or.the.plugin")) } - createShowPathsActionLabel(module, answer, "Details") + createShowPathsActionLabel(module, answer, KotlinJvmBundle.message("details")) return answer } @@ -153,7 +161,7 @@ class UnsupportedAbiVersionNotificationPanelProvider(private val project: Projec assert(!badRoots.isEmpty()) { "This action should only be called when bad roots are present" } val listPopupModel = LibraryRootsPopupModel( - "Unsupported format, plugin version: " + KotlinPluginUtil.getPluginVersion(), + KotlinJvmBundle.message("unsupported.format.plugin.version.0", KotlinPluginUtil.getPluginVersion()), project, badRoots ) @@ -162,12 +170,15 @@ class UnsupportedAbiVersionNotificationPanelProvider(private val project: Projec null } - DumbService.getInstance(project).tryRunReadActionInSmartMode(task, "Can't show all paths during index update") + DumbService.getInstance(project).tryRunReadActionInSmartMode( + task, + KotlinJvmBundle.message("can.t.show.all.paths.during.index.update") + ) } } private fun createUpdatePluginLink(answer: ErrorNotificationPanel) { - answer.createProgressAction(" Check...", "Update plugin") { link, updateLink -> + answer.createProgressAction(KotlinJvmBundle.message("check"), KotlinJvmBundle.message("update.plugin")) { link, updateLink -> KotlinPluginUpdater.getInstance().runCachedUpdate { pluginUpdateStatus -> when (pluginUpdateStatus) { is PluginUpdateStatus.Update -> { @@ -181,7 +192,7 @@ class UnsupportedAbiVersionNotificationPanelProvider(private val project: Projec }) } is PluginUpdateStatus.LatestVersionInstalled -> { - link.text = "No updates found" + link.text = KotlinJvmBundle.message("no.updates.found") } } @@ -258,7 +269,7 @@ class UnsupportedAbiVersionNotificationPanelProvider(private val project: Projec override fun getTextFor(root: BinaryVersionedFile): String { val relativePath = VfsUtilCore.getRelativePath(root.file, project.baseDir, '/') - return "${relativePath ?: root.file.path} (${root.version}) - expected: ${root.supportedVersion}" + return KotlinJvmBundle.message("0.1.expected.2", relativePath ?: root.file.path, root.version, root.supportedVersion) } override fun getIconFor(aValue: BinaryVersionedFile): Icon? {