[platform] IJPL-49: Improve i18n handling

GitOrigin-RevId: 0b53b757a30f7bffdc730a2536e7ee06951e1f4d
This commit is contained in:
Konstantin Nisht
2023-09-17 21:12:23 +02:00
committed by intellij-monorepo-bot
parent bbe2c63c2c
commit d32141e78d
7 changed files with 18 additions and 13 deletions

View File

@@ -5,6 +5,7 @@ import com.intellij.ide.environment.EnvironmentKey
import com.intellij.ide.environment.EnvironmentKeyProvider
import com.intellij.java.JavaBundle
import com.intellij.openapi.project.Project
import java.util.function.Supplier
class JvmEnvironmentKeyProvider : EnvironmentKeyProvider {
@@ -13,9 +14,9 @@ class JvmEnvironmentKeyProvider : EnvironmentKeyProvider {
val JDK_NAME = EnvironmentKey.create("project.jdk.name")
}
override val knownKeys: Map<EnvironmentKey, String> =
mapOf(Keys.JDK_KEY to JavaBundle.message("environment.key.description.project.jdk"),
Keys.JDK_NAME to JavaBundle.message("environment.key.description.project.jdk.name"),
override val knownKeys: Map<EnvironmentKey, Supplier<String>> =
mapOf(Keys.JDK_KEY to JavaBundle.messagePointer("environment.key.description.project.jdk"),
Keys.JDK_NAME to JavaBundle.messagePointer("environment.key.description.project.jdk.name"),
)
override suspend fun getRequiredKeys(project: Project): List<EnvironmentKey> = listOf()

View File

@@ -42,5 +42,5 @@ sealed interface EnvironmentKey {
val EnvironmentKey.description: @Nls String
get() = EnvironmentKeyProvider.EP_NAME.extensionList.firstNotNullOfOrNull { provider ->
provider.knownKeys[this]
provider.knownKeys[this]?.get()
} ?: error("Key ${this.id} must be registered in some ${EnvironmentKeyProvider}")

View File

@@ -7,6 +7,7 @@ import com.intellij.openapi.project.Project
import com.intellij.openapi.util.NlsContext
import org.jetbrains.annotations.ApiStatus
import org.jetbrains.annotations.Nls
import java.util.function.Supplier
/**
* Used for registering environment keys.
@@ -23,7 +24,7 @@ interface EnvironmentKeyProvider {
* Returns all keys that are used by a client of [EnvironmentService].
* Each [EnvironmentKey] must be registered at least in one [EnvironmentKeyProvider.knownKeys].
*/
val knownKeys: Map<EnvironmentKey, @EnvironmentKeyDescription String>
val knownKeys: Map<EnvironmentKey, Supplier<@EnvironmentKeyDescription String>>
/**
* Returns all keys that are absolutely required for a project to be configured without interaction with the user.

View File

@@ -78,7 +78,7 @@ private suspend fun generateKeyConfig(generateDescriptions: Boolean, configurati
writeStartObject()
if (generateDescriptions) {
writeArrayFieldStart("description")
for (line in descr.lines()) {
for (line in descr.get().lines()) {
writeString(line)
}
writeEndArray()

View File

@@ -5,6 +5,7 @@ import com.intellij.ide.environment.EnvironmentKey
import com.intellij.ide.environment.EnvironmentKeyProvider
import com.intellij.openapi.project.Project
import com.intellij.openapi.project.ProjectBundle
import java.util.function.Supplier
class ProjectOpenKeyProvider : EnvironmentKeyProvider {
object Keys {
@@ -13,7 +14,7 @@ class ProjectOpenKeyProvider : EnvironmentKeyProvider {
override suspend fun getRequiredKeys(project: Project): List<EnvironmentKey> = listOf()
override val knownKeys: Map<EnvironmentKey, String> = mapOf(
Keys.PROJECT_OPEN_PROCESSOR to ProjectBundle.message("project.open.processor.environment.property"),
override val knownKeys: Map<EnvironmentKey, Supplier<String>> = mapOf(
Keys.PROJECT_OPEN_PROCESSOR to ProjectBundle.messagePointer("project.open.processor.environment.property"),
)
}

View File

@@ -5,6 +5,7 @@ import com.intellij.ide.IdeBundle
import com.intellij.ide.environment.EnvironmentKey
import com.intellij.ide.environment.EnvironmentKeyProvider
import com.intellij.openapi.project.Project
import java.util.function.Supplier
class PluginEnvironmentKeyProvider : EnvironmentKeyProvider {
@@ -12,8 +13,8 @@ class PluginEnvironmentKeyProvider : EnvironmentKeyProvider {
val ENABLE_DISABLED_DEPENDENT_PLUGINS = EnvironmentKey.create("enable.disabled.dependent.plugins")
}
override val knownKeys: Map<EnvironmentKey, String> = mapOf(
Keys.ENABLE_DISABLED_DEPENDENT_PLUGINS to IdeBundle.message("environment.key.description.enable.disabled.dependent.plugins")
override val knownKeys: Map<EnvironmentKey, Supplier<String>> = mapOf(
Keys.ENABLE_DISABLED_DEPENDENT_PLUGINS to IdeBundle.messagePointer("environment.key.description.enable.disabled.dependent.plugins")
)
override suspend fun getRequiredKeys(project: Project): List<EnvironmentKey> = emptyList()

View File

@@ -21,6 +21,7 @@ import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.runBlocking
import java.nio.file.Path
import java.util.function.Supplier
import kotlin.io.path.deleteIfExists
import kotlin.io.path.readText
@@ -194,9 +195,9 @@ private val notRegisteredDummyKey: EnvironmentKey = EnvironmentKey.create("not.r
private class TestKeyProvider : EnvironmentKeyProvider {
override val knownKeys: Map<EnvironmentKey, String> = mapOf(
dummyKey to "My dummy test key\nWith a long description",
dummyKey2 to "Just another dummy key",
override val knownKeys: Map<EnvironmentKey, Supplier<String>> = mapOf(
dummyKey to Supplier { "My dummy test key\nWith a long description" },
dummyKey2 to Supplier { "Just another dummy key" },
)
override suspend fun getRequiredKeys(project: Project): List<EnvironmentKey> =