From b4c8b6036be041272ddddeaa472dc27a76ed5263 Mon Sep 17 00:00:00 2001 From: gewuyou <1063891901@qq.com> Date: Wed, 30 Apr 2025 12:52:45 +0800 Subject: [PATCH] feat(i18n): Add international support and optimize project configuration - Added USE_CONFIGURATION_PROCESSOR project flag - Add API dependency to Core.EXTENSION in forgeboot-core - Rename the I18nProperties file and convert it to Java class - Update forgeboot-i18n dependency and add configuration processor - Add spring-boot-configuration-processor dependency in libs.versions.toml - Update root project configuration, support configuration processor --- build.gradle.kts | 6 +++ buildSrc/src/main/kotlin/ProjectFlags.kt | 1 + forgeboot-core/build.gradle.kts | 2 +- forgeboot-i18n/build.gradle.kts | 1 + .../i18n/config/entity/I18nProperties.java | 50 +++++++++++++++++++ .../i18n/config/entity/I18nProperties.kt | 26 ---------- gradle/libs.versions.toml | 2 +- 7 files changed, 60 insertions(+), 28 deletions(-) create mode 100644 forgeboot-i18n/src/main/java/com/gewuyou/forgeboot/i18n/config/entity/I18nProperties.java delete mode 100644 forgeboot-i18n/src/main/kotlin/com/gewuyou/forgeboot/i18n/config/entity/I18nProperties.kt diff --git a/build.gradle.kts b/build.gradle.kts index 42fe203..065d2ba 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -36,6 +36,7 @@ allprojects { ext { set(ProjectFlags.IS_ROOT_MODULE, false) set(ProjectFlags.USE_SPRING_BOOT_BOM, false) + set(ProjectFlags.USE_CONFIGURATION_PROCESSOR, false) } afterEvaluate { if (project.getPropertyByBoolean(ProjectFlags.IS_ROOT_MODULE)) { @@ -57,6 +58,11 @@ subprojects { implementation(platform(libs.springBootDependencies.bom)) } } + if(project.getPropertyByBoolean(ProjectFlags.USE_CONFIGURATION_PROCESSOR)){ + dependencies { + annotationProcessor(libs.springBoot.configuration.processor) + } + } } val libs = rootProject.libs apply { diff --git a/buildSrc/src/main/kotlin/ProjectFlags.kt b/buildSrc/src/main/kotlin/ProjectFlags.kt index 7c663bd..072052e 100644 --- a/buildSrc/src/main/kotlin/ProjectFlags.kt +++ b/buildSrc/src/main/kotlin/ProjectFlags.kt @@ -1,4 +1,5 @@ object ProjectFlags { const val IS_ROOT_MODULE = "isRootModule" const val USE_SPRING_BOOT_BOM = "useSpringBootBom" + const val USE_CONFIGURATION_PROCESSOR = "useConfigurationProcessor" } \ No newline at end of file diff --git a/forgeboot-core/build.gradle.kts b/forgeboot-core/build.gradle.kts index 2e3ca6a..d79c21c 100644 --- a/forgeboot-core/build.gradle.kts +++ b/forgeboot-core/build.gradle.kts @@ -1,3 +1,3 @@ dependencies { - + api(project(Modules.Core.EXTENSION)) } diff --git a/forgeboot-i18n/build.gradle.kts b/forgeboot-i18n/build.gradle.kts index 4bc6def..546debf 100644 --- a/forgeboot-i18n/build.gradle.kts +++ b/forgeboot-i18n/build.gradle.kts @@ -1,6 +1,7 @@ extra { // 需要SpringBootBom setProperty(ProjectFlags.USE_SPRING_BOOT_BOM, true) + setProperty(ProjectFlags.USE_CONFIGURATION_PROCESSOR, true) } dependencies { implementation(project(Modules.Core.EXTENSION)) diff --git a/forgeboot-i18n/src/main/java/com/gewuyou/forgeboot/i18n/config/entity/I18nProperties.java b/forgeboot-i18n/src/main/java/com/gewuyou/forgeboot/i18n/config/entity/I18nProperties.java new file mode 100644 index 0000000..4665384 --- /dev/null +++ b/forgeboot-i18n/src/main/java/com/gewuyou/forgeboot/i18n/config/entity/I18nProperties.java @@ -0,0 +1,50 @@ +package com.gewuyou.forgeboot.i18n.config.entity; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +/** + * i18n属性 + * + * @author gewuyou + * @since 2025-02-18 23:59:57 + */ +@ConfigurationProperties(prefix = "base-forge.i18n") +public class I18nProperties { + /** + * 默认语言 + */ + private String defaultLocale = "zh_CN"; + + /** + * 语言请求参数名 + */ + private String langRequestParameter = "lang"; + /** + * 语言文件路径 + */ + private String wildPathForLanguageFiles = "classpath*:i18n/**/messages"; + + public String getDefaultLocale() { + return defaultLocale; + } + + public void setDefaultLocale(String defaultLocale) { + this.defaultLocale = defaultLocale; + } + + public String getLangRequestParameter() { + return langRequestParameter; + } + + public void setLangRequestParameter(String langRequestParameter) { + this.langRequestParameter = langRequestParameter; + } + + public String getWildPathForLanguageFiles() { + return wildPathForLanguageFiles; + } + + public void setWildPathForLanguageFiles(String wildPathForLanguageFiles) { + this.wildPathForLanguageFiles = wildPathForLanguageFiles; + } +} diff --git a/forgeboot-i18n/src/main/kotlin/com/gewuyou/forgeboot/i18n/config/entity/I18nProperties.kt b/forgeboot-i18n/src/main/kotlin/com/gewuyou/forgeboot/i18n/config/entity/I18nProperties.kt deleted file mode 100644 index d95ec8a..0000000 --- a/forgeboot-i18n/src/main/kotlin/com/gewuyou/forgeboot/i18n/config/entity/I18nProperties.kt +++ /dev/null @@ -1,26 +0,0 @@ -package com.gewuyou.forgeboot.i18n.config.entity - -import org.springframework.boot.context.properties.ConfigurationProperties - -/** - * i18n属性 - * - * @author gewuyou - * @since 2025-02-18 23:59:57 - */ -@ConfigurationProperties(prefix = "base-forge.i18n") -class I18nProperties { - /** - * 默认语言 - */ - var defaultLocale = "zh_CN" - - /** - * 语言请求参数名 - */ - var langRequestParameter = "lang" - /** - * 语言文件路径 - */ - var wildPathForLanguageFiles = "classpath*:i18n/**/messages" -} diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index dfd7636..1a1ea46 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -26,7 +26,7 @@ springBootStarter-aop = { group = "org.springframework.boot", name = "spring-boo springBootStarter-web = { group = "org.springframework.boot", name = "spring-boot-starter-web" } springBootStarter-webflux = { group = "org.springframework.boot", name = "spring-boot-starter-webflux" } springBootDependencies-bom = { module = "org.springframework.boot:spring-boot-dependencies", version.ref = "spring-boot-version" } - +springBoot-configuration-processor = { group = "org.springframework.boot", name = "spring-boot-configuration-processor", version.ref = "spring-boot-version" } # Libraries can be bundled together for easier import [bundles] kotlinxEcosystem = ["kotlinxDatetime", "kotlinxSerialization", "kotlinxCoroutines-core"]