Compare commits
2 Commits
839c584b0a
...
127db8b77a
| Author | SHA1 | Date | |
|---|---|---|---|
| 127db8b77a | |||
| e66c7984a4 |
@@ -1,19 +1,14 @@
|
|||||||
---
|
---
|
||||||
status: testing
|
status: complete
|
||||||
phase: 05-nuxt-content-setup-renderer
|
phase: 05-nuxt-content-setup-renderer
|
||||||
source: [05-01-SUMMARY.md, 05-02-SUMMARY.md]
|
source: [05-01-SUMMARY.md, 05-02-SUMMARY.md]
|
||||||
started: 2026-04-21T00:00:00.000Z
|
started: 2026-04-21T00:00:00.000Z
|
||||||
updated: 2026-04-21T00:00:00.000Z
|
updated: 2026-04-21T21:30:00.000Z
|
||||||
---
|
---
|
||||||
|
|
||||||
## Current Test
|
## Current Test
|
||||||
|
|
||||||
number: 3
|
[testing complete]
|
||||||
name: Images optimisées via NuxtImg
|
|
||||||
expected: |
|
|
||||||
Sur `/test`, l'image référencée dans l'article est visible (pas de 404).
|
|
||||||
L'élément DOM rendu est `<img>` avec attribut `loading="lazy"`.
|
|
||||||
awaiting: user response
|
|
||||||
|
|
||||||
## Tests
|
## Tests
|
||||||
|
|
||||||
@@ -38,22 +33,40 @@ expected: Sur `/test`, les 4 callouts `::alert{type}` sont rendus comme des boî
|
|||||||
result: pass
|
result: pass
|
||||||
|
|
||||||
### 6. Articles bilingues accessibles
|
### 6. Articles bilingues accessibles
|
||||||
expected: Les articles de test existent pour FR et EN. Naviguer vers `/blog/test-kotlin-syntax` (FR) et `/en/blog/test-kotlin-syntax` (EN) — les deux pages chargent sans 404.
|
expected: Les articles de test existent pour FR et EN. Naviguer vers `/fr/blog/test-kotlin-syntax` (FR) et `/en/blog/test-kotlin-syntax` (EN) — les deux pages chargent sans 404.
|
||||||
result: [pending]
|
result: issue
|
||||||
|
reported: "both empty page, nav and footer there but no content — Vue warn: Component <Anonymous> is missing template or render function at <RouteProvider key=\"/fr/blog/test-kotlin-syntax\">. <main> SSR renders empty: `<main class=\"flex-1\"><!--[--><!----><!--]--></main>`. Same behavior FR and EN."
|
||||||
|
severity: major
|
||||||
|
|
||||||
### 7. Collections @nuxt/content configurées
|
### 7. Collections @nuxt/content configurées
|
||||||
expected: Le fichier `content.config.ts` définit `blog_fr` et `blog_en`. `queryCollection('blog_fr')` retourne les articles FR. Vérifiable via le bon rendu de `/test` (qui query `blog_fr`).
|
expected: Le fichier `content.config.ts` définit `blog_fr` et `blog_en`. `queryCollection('blog_fr')` retourne les articles FR. Vérifiable via le bon rendu de `/test` (qui query `blog_fr`).
|
||||||
result: [pending]
|
result: issue
|
||||||
|
reported: "/test donne 404. Route `/test` supprimée/déplacée par commit 7cd1531 'fix(05): update test.vue path to /fr/blog prefix' — donc plus de page showcase standalone, et les routes blog prefixées elles-mêmes sont cassées (cf Test 6)."
|
||||||
|
severity: major
|
||||||
|
|
||||||
## Summary
|
## Summary
|
||||||
|
|
||||||
total: 7
|
total: 7
|
||||||
passed: 0
|
passed: 5
|
||||||
issues: 0
|
issues: 2
|
||||||
pending: 7
|
pending: 0
|
||||||
skipped: 0
|
skipped: 0
|
||||||
blocked: 0
|
blocked: 0
|
||||||
|
|
||||||
## Gaps
|
## Gaps
|
||||||
|
|
||||||
[none yet]
|
- truth: "Les articles FR/EN du blog doivent se rendre au chemin `/fr/blog/test-kotlin-syntax` et `/en/blog/test-kotlin-syntax` avec le contenu markdown dans `<main>`."
|
||||||
|
status: failed
|
||||||
|
reason: "User reported: both empty page, nav and footer there but no content. Vue warn in SSR log: Component <Anonymous> is missing template or render function at <RouteProvider key=\"/fr/blog/test-kotlin-syntax\">. <main class=\"flex-1\"> rendered empty. Non-blocking i18n baseUrl warning also present but unrelated. Same behavior both locales."
|
||||||
|
severity: major
|
||||||
|
test: 6
|
||||||
|
artifacts: []
|
||||||
|
missing: []
|
||||||
|
|
||||||
|
- truth: "La page query `blog_fr` doit être routable (historiquement `/test`, depuis commit 7cd1531 déplacée sous `/fr/blog`) et rendre le contenu markdown."
|
||||||
|
status: failed
|
||||||
|
reason: "User reported: /test donne 404. Le commit 7cd1531 a migré test.vue vers le préfixe /fr/blog, mais les routes prefixées sont elles-mêmes cassées (cf gap Test 6)."
|
||||||
|
severity: major
|
||||||
|
test: 7
|
||||||
|
artifacts: []
|
||||||
|
missing: []
|
||||||
|
|||||||
@@ -2,14 +2,14 @@
|
|||||||
const { locale } = useI18n()
|
const { locale } = useI18n()
|
||||||
const route = useRoute()
|
const route = useRoute()
|
||||||
|
|
||||||
const slug = Array.isArray(route.params.slug) ? route.params.slug.join('/') : route.params.slug
|
const slug = route.params.slug as string
|
||||||
const isFr = locale.value === 'fr'
|
const isFr = locale.value === 'fr'
|
||||||
const collection = isFr ? 'blog_fr' : 'blog_en'
|
|
||||||
// blog_fr prefix = /fr/blog, blog_en prefix = /en/blog (aligned with content.config.ts)
|
|
||||||
const path = isFr ? `/fr/blog/${slug}` : `/en/blog/${slug}`
|
const path = isFr ? `/fr/blog/${slug}` : `/en/blog/${slug}`
|
||||||
|
|
||||||
const { data: page } = await useAsyncData(`blog-${locale.value}-${slug}`, () =>
|
const { data: page } = await useAsyncData(`blog-${locale.value}-${slug}`, () =>
|
||||||
queryCollection(collection).path(path).first()
|
isFr
|
||||||
|
? queryCollection('blog_fr').path(path).first()
|
||||||
|
: queryCollection('blog_en').path(path).first()
|
||||||
)
|
)
|
||||||
|
|
||||||
if (!page.value) {
|
if (!page.value) {
|
||||||
+3
-5
@@ -34,6 +34,7 @@ export default defineNuxtConfig({
|
|||||||
i18n: {
|
i18n: {
|
||||||
strategy: 'prefix',
|
strategy: 'prefix',
|
||||||
defaultLocale: 'fr',
|
defaultLocale: 'fr',
|
||||||
|
baseUrl: 'https://killiandalcin.fr',
|
||||||
locales: [
|
locales: [
|
||||||
{ code: 'fr', language: 'fr-FR', file: 'fr.json' },
|
{ code: 'fr', language: 'fr-FR', file: 'fr.json' },
|
||||||
{ code: 'en', language: 'en-US', file: 'en.json' },
|
{ code: 'en', language: 'en-US', file: 'en.json' },
|
||||||
@@ -42,7 +43,8 @@ export default defineNuxtConfig({
|
|||||||
detectBrowserLanguage: {
|
detectBrowserLanguage: {
|
||||||
useCookie: true,
|
useCookie: true,
|
||||||
cookieKey: 'i18n_redirected',
|
cookieKey: 'i18n_redirected',
|
||||||
redirectOn: 'root',
|
redirectOn: 'no prefix',
|
||||||
|
fallbackLocale: 'fr',
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
runtimeConfig: {
|
runtimeConfig: {
|
||||||
@@ -59,10 +61,6 @@ export default defineNuxtConfig({
|
|||||||
gtag: {
|
gtag: {
|
||||||
enabled: !import.meta.dev,
|
enabled: !import.meta.dev,
|
||||||
},
|
},
|
||||||
routeRules: {
|
|
||||||
'/blog': { redirect: { to: '/fr/blog', statusCode: 301 } },
|
|
||||||
'/blog/**': { redirect: { to: '/fr/blog', statusCode: 301 } },
|
|
||||||
},
|
|
||||||
content: {
|
content: {
|
||||||
build: {
|
build: {
|
||||||
markdown: {
|
markdown: {
|
||||||
|
|||||||
Reference in New Issue
Block a user