Fix: fix translation links

This commit is contained in:
Pieter Vander Vennet 2025-08-08 00:42:11 +02:00
parent 8b1873479d
commit 8fc31fcd9d
2 changed files with 33 additions and 24 deletions

View file

@ -37,10 +37,8 @@ import { Translatable } from "../src/Models/ThemeConfig/Json/Translatable"
import { ValidateThemeAndLayers } from "../src/Models/ThemeConfig/Conversion/ValidateThemeAndLayers"
import { ExtractImages } from "../src/Models/ThemeConfig/Conversion/FixImages"
import { TagRenderingConfigJson } from "../src/Models/ThemeConfig/Json/TagRenderingConfigJson"
import {
LayerConfigDependencyGraph,
LevelInfo,
} from "../src/Models/ThemeConfig/LayerConfigDependencyGraph"
import { LayerConfigDependencyGraph, LevelInfo } from "../src/Models/ThemeConfig/LayerConfigDependencyGraph"
import { AddContextToTranslations } from "../src/Models/ThemeConfig/Conversion/AddContextToTranslations"
// This scripts scans 'src/assets/layers/*.json' for layer definition files and 'src/assets/themes/*.json' for theme definition files.
// It spits out an overview of those to be used to load them
@ -224,9 +222,16 @@ class LayerBuilder extends Conversion<object, Map<string, LayerConfigJson>> {
context.err("Invalid ID: expected", id, "but got", id)
}
const prepped = this.prepareLayer.convert(config, context)
const withContext = new AddContextToTranslations<LayerConfigJson>("layers:").convertStrict(
prepped,
ConversionContext.construct(
[prepped.id],
["AddContextToTranslations"]
)
)
this._loadedIds.add(id)
this._desugaringState.sharedLayers.set(id, prepped)
return prepped
this._desugaringState.sharedLayers.set(id, withContext)
return withContext
}
private buildLooping(ids: string[], context: ConversionContext) {
@ -690,8 +695,8 @@ class LayerOverviewUtils extends Script {
)
const path = "assets/layers/questions/questions.json"
const sharedQuestions = this.parseLayer(doesImageExist, prepareLayer, path).raw
const sharedQuestionsRaw = this.parseLayer(doesImageExist, prepareLayer, path).raw
const sharedQuestions = new AddContextToTranslations("").convertStrict(sharedQuestionsRaw, ConversionContext.construct(["layers:questions"], []))
const dict = new Map<string, QuestionableTagRenderingConfigJson>()
for (const tr of sharedQuestions.tagRenderings) {

View file

@ -128,7 +128,13 @@ export class AddContextToTranslations<T> extends DesugaringStep<T> {
if (leaf === undefined || leaf === null) {
return leaf
}
if (typeof leaf === "object") {
if (typeof leaf !== "object") {
return leaf
}
if(leaf["_context"] !== undefined){
// Context is already set
return leaf
}
// follow the path. If we encounter a number, check that there is no ID we can use instead
let breadcrumb = json
for (let i = 0; i < path.length; i++) {
@ -138,13 +144,11 @@ export class AddContextToTranslations<T> extends DesugaringStep<T> {
path[i] = breadcrumb["id"]
}
}
const pth = this._prefix + Utils.NoEmpty(context.path.concat(path).map(x => "" + x)).join(".")
console.log("Setting _context to: ",pth)
return {
...leaf,
_context: this._prefix + context.path.concat(path).join("."),
}
} else {
return leaf
_context: pth,
}
},
(obj) => obj === undefined || obj === null || Translations.isProbablyATranslation(obj)