Skip to content

Commit d72bfb7

Browse files
ericyangpanclaude
andcommitted
refactor(i18n): restructure translation files hierarchy
Restructure translation files to follow hierarchical architecture: - Remove flat components.json and pages/stacks.json files - Update index.ts export structure - Update shared.json and comparison.json with new keys - Organize components by directory: common, controls, navigation, product, sidebar - Organize pages by type: cli-detail, clis, extension-detail, extensions, etc. This change requires corresponding translation key migrations in component and page files. Co-Authored-By: Claude <noreply@anthropic.com>
1 parent a971817 commit d72bfb7

File tree

288 files changed

+7191
-265
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

288 files changed

+7191
-265
lines changed
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
{
2+
"footer": {
3+
"copyright": "© 2025 AI Coding Stack • Mit ❤︎ erstellt • Open Source",
4+
"openSource": "Open-Source-KI-Coding-Metadaten-Repository.",
5+
"selectLanguage": "Sprache auswählen",
6+
"tagline": "Ihr AI-Coding-Ökosystem-Hub.",
7+
"toggleTheme": "Thema umschalten"
8+
},
9+
"header": {
10+
"aiCodingLandscape": "AI-Coding-Landschaft",
11+
"aiCodingLandscapeDesc": "Visualisieren Sie das gesamte AI-Coding-Ökosystem",
12+
"aiCodingStack": "@:shared.terms.aiCodingStack",
13+
"articles": "@:shared.terms.articles",
14+
"closeMenu": "Menü schließen",
15+
"collections": "@:shared.terms.collections",
16+
"developmentTools": "Entwicklungstools",
17+
"intelligence": "Intelligenz",
18+
"landscape": "Landschaft",
19+
"manifesto": "@:shared.terms.manifesto",
20+
"openMenu": "Menü öffnen",
21+
"openSourceRank": "Open Source Ranking",
22+
"openSourceRankDesc": "Erkunden Sie Open-Source-AI-Coding-Projekte nach GitHub-Sternen",
23+
"ranking": "Ranking",
24+
"search": "@:shared.actions.search",
25+
"searchPlaceholder": "Suchen...",
26+
"toggleMenu": "Menü umschalten"
27+
}
28+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
{
2+
"copyButton": {
3+
"copied": "Kopiert!",
4+
"copyToClipboard": "In die Zwischenablage kopieren"
5+
},
6+
"filterSortBar": {
7+
"clearFilters": "Filter löschen",
8+
"license": "Lizenz:",
9+
"openSource": "@:shared.terms.openSource",
10+
"platform": "Plattform:",
11+
"proprietary": "@:shared.terms.proprietary",
12+
"search": "@:shared.actions.search by name...",
13+
"sort": "Sortieren:",
14+
"sortDefault": "Standard",
15+
"sortNameAsc": "Name (A-Z)",
16+
"sortNameDesc": "Name (Z-A)"
17+
}
18+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"backToNavigation": {
3+
"backTo": "@:shared.actions.backTo",
4+
"indexLabel": "@:shared.terms.indexLabel"
5+
},
6+
"breadcrumb": {
7+
"home": "Startseite"
8+
}
9+
}
Lines changed: 189 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,189 @@
1+
{
2+
"productCommands": {
3+
"command": "Befehl",
4+
"install": "Installieren",
5+
"launch": "Starten"
6+
},
7+
"vendorProducts": {
8+
"title": "Produkte"
9+
},
10+
"vendorModels": {
11+
"title": "Modelle"
12+
},
13+
"platformLinks": {
14+
"title": "Auf AI-Plattformen finden",
15+
"aiPlatforms": {
16+
"huggingface": {
17+
"title": "Hugging Face",
18+
"description": "Modellkarte und Gewichte anzeigen"
19+
},
20+
"artificialAnalysis": {
21+
"title": "Artificial Analysis",
22+
"description": "AI-Modell-Leaderboard und Benchmarks"
23+
},
24+
"openrouter": {
25+
"title": "OpenRouter",
26+
"description": "Mehrere AI-Modelle vergleichen und nutzen"
27+
}
28+
}
29+
},
30+
"githubStarHistory": {
31+
"loading": "Star-Verlauf laden...",
32+
"title": "GitHub Star-Verlauf",
33+
"description": "Star-Wachstumstrend über Zeit",
34+
"stars": "Stars",
35+
"fallbackNote": "Hinweis: Beispieldaten werden angezeigt. Star-Verlauf API ist vorübergehend nicht verfügbar."
36+
},
37+
"productHero": {
38+
"categories": {
39+
"CLI": "@:shared.categories.singular.cli",
40+
"EXTENSION": "@:shared.categories.singular.extension",
41+
"IDE": "@:shared.categories.singular.ide",
42+
"MODEL": "@:shared.categories.singular.model",
43+
"PROVIDER": "@:shared.categories.singular.modelProvider",
44+
"VENDOR": "@:shared.categories.singular.vendor"
45+
},
46+
"documentation": "@:shared.terms.documentation",
47+
"download": "@:shared.actions.download",
48+
"getApiKey": "@:shared.labels.getApiKey",
49+
"license": "@:shared.terms.license",
50+
"platforms": "@:shared.terms.platforms",
51+
"providerTypes": {
52+
"foundation-model-provider": "@:shared.providerTypes.foundation-model-provider",
53+
"model-service-provider": "@:shared.providerTypes.model-service-provider"
54+
},
55+
"runtime": "Laufzeit",
56+
"stars": "@:shared.terms.stars",
57+
"supportedIdes": "@:shared.terms.supportedIdes",
58+
"type": "@:shared.terms.type",
59+
"vendor": "@:shared.terms.vendor",
60+
"version": "@:shared.terms.version",
61+
"visitWebsite": "@:shared.terms.visitWebsite"
62+
},
63+
"communityLinks": {
64+
"blog": "Blog",
65+
"blogDescription": "Blogbeiträge lesen",
66+
"community": "@:shared.terms.community",
67+
"discord": "@:shared.platforms.discord",
68+
"discordDescription": "Community beitreten",
69+
"github": "@:shared.platforms.github",
70+
"githubDescription": "Repositories ansehen",
71+
"linkedin": "@:shared.platforms.linkedin",
72+
"linkedinDescription": "@:shared.terms.followUs",
73+
"reddit": "@:shared.platforms.reddit",
74+
"redditDescription": "Diskussion teilnehmen",
75+
"twitter": "@:shared.platforms.twitter",
76+
"twitterDescription": "@:shared.terms.followUs",
77+
"youtube": "@:shared.platforms.youtube",
78+
"youtubeDescription": "Videos ansehen"
79+
},
80+
"resourceLinks": {
81+
"changelog": "Änderungsprotokoll",
82+
"changelogDescription": "Änderungsprotokoll anzeigen",
83+
"download": "@:shared.actions.download",
84+
"downloadDescription": "Neueste Version herunterladen",
85+
"issue": "Issue-Tracker",
86+
"issueDescription": "Fehler melden und Funktionen anfordern",
87+
"mcp": "MCP-Dokumentation",
88+
"mcpDescription": "Erfahren Sie mehr über MCP-Integration",
89+
"pricing": "@:shared.terms.pricing",
90+
"pricingDescription": "Preispläne anzeigen"
91+
},
92+
"productPricing": {
93+
"title": "@:shared.terms.pricing",
94+
"viewFullDetails": "Vollständige Preisdetails anzeigen →"
95+
},
96+
"modelSpecifications": {
97+
"title": "Specifications",
98+
"modelSize": "@:shared.terms.modelSize",
99+
"contextWindow": "Total Context",
100+
"maxOutput": "@:shared.terms.maxOutput",
101+
"pricing": "@:shared.terms.pricing",
102+
"input": "Input",
103+
"output": "Output",
104+
"cache": "Cache"
105+
},
106+
"benchmarks": {
107+
"title": "Leistungsbenchmarks",
108+
"sweBench": "SWE-bench Verified",
109+
"sweBenchDesc": "Echtwelt-Softwareentwicklungsaufgaben",
110+
"terminalBench": "TerminalBench 2.0",
111+
"terminalBenchDesc": "Befehlszeilenschnittstellen-Kompetenz",
112+
"mmmu": "MMMU",
113+
"mmmuDesc": "Multimodales Verstehen",
114+
"mmmuPro": "MMMU Pro",
115+
"mmmuProDesc": "Erweiterte multimodale Aufgaben",
116+
"webDevArena": "WebDevArena",
117+
"webDevArenaDesc": "Web-Entwicklungsherausforderungen",
118+
"sciCode": "SciCode",
119+
"sciCodeDesc": "Wissenschaftliche Code-Generierung",
120+
"liveCodeBench": "LiveCodeBench",
121+
"liveCodeBenchDesc": "Live-Coding-Leistung"
122+
},
123+
"relatedProducts": {
124+
"cli": "@:shared.categories.singular.cli",
125+
"extension": "@:shared.categories.singular.extension",
126+
"ide": "@:shared.categories.singular.ide",
127+
"title": "Verwandte Produkte",
128+
"viewProduct": "Produkt ansehen"
129+
},
130+
"vendorMatrix": {
131+
"cell": {
132+
"summary": "{count} {category}"
133+
},
134+
"categories": {
135+
"cli": "CLI",
136+
"extension": "Extension",
137+
"ide": "IDE",
138+
"model": "Model",
139+
"provider": "Provider"
140+
},
141+
"categoriesPlural": {
142+
"cli": "CLIs",
143+
"extension": "Extensions",
144+
"ide": "IDEs",
145+
"model": "Models",
146+
"provider": "Providers"
147+
},
148+
"controls": {
149+
"clear": "Clear",
150+
"sortByLabel": "Sort by:",
151+
"sortName": "Name",
152+
"sortProducts": "Products",
153+
"vendorTypeLabel": "Vendor Type:"
154+
},
155+
"table": {
156+
"noVendorsFound": "No vendors found",
157+
"vendor": "Vendor"
158+
},
159+
"vendorTypes": {
160+
"label": "Vendor Types:",
161+
"types": {
162+
"ai-native": {
163+
"description": "Model + Development Tools",
164+
"label": "AI Native"
165+
},
166+
"full-stack": {
167+
"description": "IDE + CLI + Extension",
168+
"label": "Full Stack"
169+
},
170+
"model-only": {
171+
"description": "Model (with or without Provider)",
172+
"label": "Model Only"
173+
},
174+
"provider-only": {
175+
"description": "Provider only",
176+
"label": "Provider Only"
177+
},
178+
"tool-only": {
179+
"description": "IDE/CLI/Extension",
180+
"label": "Tool Only"
181+
}
182+
}
183+
}
184+
},
185+
"resources": {
186+
"community": "@:shared.terms.community",
187+
"resources": "@:shared.terms.resources"
188+
}
189+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
{
2+
"docsSidebar": {
3+
"label": "@:shared.terms.documentation",
4+
"title": "DOKUMENTATION"
5+
},
6+
"sidebar": {
7+
"backToTop": "@:shared.actions.backToTop",
8+
"selectItem": "@:shared.actions.selectItem"
9+
}
10+
}

translations/de/index.ts

Lines changed: 58 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,75 @@
1-
import components from './components.json'
1+
/**
2+
* Translation exports for de locale
3+
*
4+
* This file exports all translation resources for the de locale.
5+
* It follows the i18n architecture rules defined in docs/I18N-ARCHITECTURE-RULES.md
6+
*/
7+
8+
// Component translations
9+
import componentsCommon from './components/common.json'
10+
import componentsControls from './components/controls.json'
11+
import componentsNavigation from './components/navigation.json'
12+
import componentsProduct from './components/product.json'
13+
import componentsSidebar from './components/sidebar.json'
214
import articles from './pages/articles.json'
15+
import cliDetail from './pages/cli-detail.json'
16+
import clis from './pages/clis.json'
317
import comparison from './pages/comparison.json'
418
import curatedCollections from './pages/curated-collections.json'
519
import docs from './pages/docs.json'
20+
import extensionDetail from './pages/extension-detail.json'
21+
import extensions from './pages/extensions.json'
22+
// Page translations
623
import home from './pages/home.json'
24+
import ideDetail from './pages/ide-detail.json'
25+
import ides from './pages/ides.json'
26+
import landscape from './pages/landscape.json'
727
import manifesto from './pages/manifesto.json'
28+
import modelCompare from './pages/model-compare.json'
29+
import modelDetail from './pages/model-detail.json'
30+
import modelProviderDetail from './pages/model-provider-detail.json'
31+
import modelProviders from './pages/model-providers.json'
32+
import models from './pages/models.json'
833
import openSourceRank from './pages/open-source-rank.json'
934
import search from './pages/search.json'
10-
import stacks from './pages/stacks.json'
35+
import stacksOverview from './pages/stacks-overview.json'
36+
import vendorDetail from './pages/vendor-detail.json'
37+
import vendors from './pages/vendors.json'
38+
// Shared translations
1139
import shared from './shared.json'
1240

13-
const messages = {
41+
export default {
1442
shared,
15-
components,
1643
pages: {
1744
home,
45+
landscape,
46+
comparison,
1847
manifesto,
48+
search,
49+
openSourceRank,
1950
docs,
20-
articles,
2151
curatedCollections,
22-
...stacks,
23-
comparison,
24-
openSourceRank,
25-
search,
52+
articles,
53+
ides,
54+
ideDetail,
55+
clis,
56+
cliDetail,
57+
extensions,
58+
extensionDetail,
59+
models,
60+
modelDetail,
61+
modelCompare,
62+
modelProviders,
63+
modelProviderDetail,
64+
vendors,
65+
vendorDetail,
66+
stacksOverview,
2667
},
27-
}
28-
29-
export default messages
68+
components: {
69+
common: componentsCommon,
70+
navigation: componentsNavigation,
71+
controls: componentsControls,
72+
sidebar: componentsSidebar,
73+
product: componentsProduct,
74+
},
75+
} as const
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
{
2+
"allCLIs": "@:shared.categories.all.clis",
3+
"breadcrumb": {
4+
"aiCodingStack": "@:shared.terms.aiCodingStack",
5+
"clis": "@:shared.categories.plural.clis"
6+
},
7+
"categoryLabel": "@:shared.categories.singular.cli",
8+
"documentation": "@:shared.terms.documentation",
9+
"download": "@:shared.actions.download",
10+
"license": "@:shared.terms.license",
11+
"platforms": "@:shared.terms.platforms",
12+
"stars": "@:shared.terms.stars",
13+
"vendor": "@:shared.terms.vendor",
14+
"version": "@:shared.terms.version",
15+
"visitWebsite": "@:shared.terms.visitWebsite"
16+
}

translations/de/pages/clis.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"allCLIs": "@:shared.categories.all.clis",
3+
"compareAll": "@:shared.actions.compareAll",
4+
"noMatches": "Keine CLIs entsprechen Ihren Filtern",
5+
"subtitle": "AI-gestützte Kommandozeilen-Coding-Assistenten",
6+
"title": "AI-Coding-CLIs"
7+
}

0 commit comments

Comments
 (0)