feat(pages): add navigation label translation support
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 4m4s
Build and Release / Unit Tests (push) Successful in 4m38s
Build and Release / Lint (push) Successful in 6m26s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 3m52s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 4m52s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h5m22s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 3m38s
Build and Release / Build Binary (linux/arm64) (push) Successful in 7m46s
All checks were successful
Build and Release / Create Release (push) Successful in 0s
Build and Release / Integration Tests (PostgreSQL) (push) Successful in 4m4s
Build and Release / Unit Tests (push) Successful in 4m38s
Build and Release / Lint (push) Successful in 6m26s
Build and Release / Build Binaries (amd64, darwin, macos) (push) Successful in 3m52s
Build and Release / Build Binaries (amd64, linux, linux-latest) (push) Successful in 4m52s
Build and Release / Build Binaries (amd64, windows, windows-latest) (push) Successful in 9h5m22s
Build and Release / Build Binaries (arm64, darwin, macos) (push) Successful in 3m38s
Build and Release / Build Binary (linux/arm64) (push) Successful in 7m46s
Add translation support for navigation section labels (Value Props, Features, Pricing, Blog, Gallery, Compare, etc.). Adds TemplateDefaultLabels function that returns template-specific creative names (e.g., "Systems Analysis" for value props in Architecture Deep Dive). Auto-applies defaults when enabling pages or changing templates. Includes UI fields in languages settings and translation JSON serialization. Enables full localization of section headings.
This commit is contained in:
@@ -351,6 +351,9 @@ func buildTranslatableContent(config *pages_module.LandingConfig) string {
|
||||
}
|
||||
|
||||
// Navigation labels (for translating nav items and section headers)
|
||||
// Use template-specific defaults so AI translates the correct terms
|
||||
// (e.g. "Systems Analysis" for architecture-deep-dive, not generic "Value Props")
|
||||
defaults := pages_module.TemplateDefaultLabels(config.Template)
|
||||
labelOrDefault := func(label, def string) string {
|
||||
if label != "" {
|
||||
return label
|
||||
@@ -358,12 +361,12 @@ func buildTranslatableContent(config *pages_module.LandingConfig) string {
|
||||
return def
|
||||
}
|
||||
content["navigation"] = map[string]any{
|
||||
"label_value_props": labelOrDefault(config.Navigation.LabelValueProps, "Value Props"),
|
||||
"label_features": labelOrDefault(config.Navigation.LabelFeatures, "Features"),
|
||||
"label_pricing": labelOrDefault(config.Navigation.LabelPricing, "Pricing"),
|
||||
"label_blog": labelOrDefault(config.Navigation.LabelBlog, "Blog"),
|
||||
"label_gallery": labelOrDefault(config.Navigation.LabelGallery, "Gallery"),
|
||||
"label_compare": labelOrDefault(config.Navigation.LabelCompare, "Compare"),
|
||||
"label_value_props": labelOrDefault(config.Navigation.LabelValueProps, defaults.LabelValueProps),
|
||||
"label_features": labelOrDefault(config.Navigation.LabelFeatures, defaults.LabelFeatures),
|
||||
"label_pricing": labelOrDefault(config.Navigation.LabelPricing, defaults.LabelPricing),
|
||||
"label_blog": labelOrDefault(config.Navigation.LabelBlog, defaults.LabelBlog),
|
||||
"label_gallery": labelOrDefault(config.Navigation.LabelGallery, defaults.LabelGallery),
|
||||
"label_compare": labelOrDefault(config.Navigation.LabelCompare, defaults.LabelCompare),
|
||||
"label_docs": labelOrDefault(config.Navigation.LabelDocs, "Docs"),
|
||||
"label_releases": labelOrDefault(config.Navigation.LabelReleases, "Releases"),
|
||||
"label_api": labelOrDefault(config.Navigation.LabelAPI, "API"),
|
||||
|
||||
Reference in New Issue
Block a user