From 418861d356f1edf5ac0c4b00f3bfc761ad34e609 Mon Sep 17 00:00:00 2001 From: James Rich <2199651+jamesarich@users.noreply.github.com> Date: Tue, 19 May 2026 11:53:09 -0500 Subject: [PATCH] fix(docs): use locale subdirectory inside files/ instead of qualifier (#5494) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- feature/docs/build.gradle.kts | 8 ++++---- .../org/meshtastic/feature/docs/data/DocBundleLoader.kt | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/feature/docs/build.gradle.kts b/feature/docs/build.gradle.kts index 58406478f..1f1a72b72 100644 --- a/feature/docs/build.gradle.kts +++ b/feature/docs/build.gradle.kts @@ -112,7 +112,7 @@ val syncTranslatedDocsToComposeResources by group = "docs" val docsDir = rootProject.layout.projectDirectory.dir("docs") - val targetBase = layout.projectDirectory.dir("src/commonMain/composeResources") + val targetBase = layout.projectDirectory.dir("src/commonMain/composeResources/files") from(docsDir) { // Crowdin outputs dirs in Android qualifier format (fr, pt-rBR, zh-rCN) @@ -126,14 +126,14 @@ val syncTranslatedDocsToComposeResources by into(targetBase) - // Crowdin %android_code% already outputs CMP qualifier format (pt-rBR), - // so we just need to prepend "files-" and nest under docs/ + // Crowdin %android_code% already outputs CMP qualifier format (pt-rBR). + // Locale goes as a subdirectory *inside* files/ (CMP doesn't support qualifiers on files/). eachFile { val segments = relativePath.segments if (segments.size >= 3) { val qualifier = segments[0] val rest = segments.drop(1).joinToString("/") - path = "files-$qualifier/docs/$rest" + path = "$qualifier/docs/$rest" } } includeEmptyDirs = false diff --git a/feature/docs/src/commonMain/kotlin/org/meshtastic/feature/docs/data/DocBundleLoader.kt b/feature/docs/src/commonMain/kotlin/org/meshtastic/feature/docs/data/DocBundleLoader.kt index baeb10af1..20af93b8c 100644 --- a/feature/docs/src/commonMain/kotlin/org/meshtastic/feature/docs/data/DocBundleLoader.kt +++ b/feature/docs/src/commonMain/kotlin/org/meshtastic/feature/docs/data/DocBundleLoader.kt @@ -142,7 +142,7 @@ class DefaultDocBundleLoader : DocBundleLoader { // Try qualifiers in specificity order (mirrors Android resource resolution): // "pt-rBR" → "pt" → give up for (qualifier in localeQualifiers(locale)) { - val localePath = "files-$qualifier/docs/$section/${page.id}.md" + val localePath = "files/$qualifier/docs/$section/${page.id}.md" try { val bytes = Res.readBytes(localePath) return stripFrontmatter(bytes.decodeToString()) @@ -162,7 +162,7 @@ class DefaultDocBundleLoader : DocBundleLoader { DocSection.DeveloperGuide -> "developer" } return localeQualifiers(locale).any { qualifier -> - val localePath = "files-$qualifier/docs/$section/${page.id}.md" + val localePath = "files/$qualifier/docs/$section/${page.id}.md" try { Res.readBytes(localePath) true