Skip to content

Burmese blog i18n: locale content layout + repo housekeeping - #41

Draft
htetaunglin-coder wants to merge 7 commits into
mainfrom
feat/blog-locale-content-layout
Draft

Burmese blog i18n: locale content layout + repo housekeeping#41
htetaunglin-coder wants to merge 7 commits into
mainfrom
feat/blog-locale-content-layout

Conversation

@htetaunglin-coder

Copy link
Copy Markdown
Owner

Draft, and staying draft for now — this exists as a review surface for the
Burmese blog work in #33. The remaining slices land on this branch, so the
diff will keep growing. Not ready to merge.

What is here so far

refactor(blog)closes #34, the prefactor

Posts move to content/blog/en/ and the Fumadocs loader gains a two-locale
config (en default, my reserved). Nothing a reader can see changes.

  • hideLocale: "default-locale" keeps the default locale off the path, so
    every existing URL stays byte-for-byte identical
  • fallbackLanguage: null — a missing translation resolves to nothing, never
    the English post at a second indexed URL
  • Call-site audit: the English index, English post route, and search index now
    pass "en" explicitly, because an unscoped getPages() spans both locales.
    sitemap.ts stays unscoped on purpose so it picks up Burmese posts once
    they exist — there is a comment there saying not to add a locale argument
  • parser: "dir" silently discards posts in an unrecognised directory, so
    src/lib/source.ts counts loaded pages against source files and throws

Housekeeping (independent of the above)

Commit What
ci Workflow called npm with eslint/prettier/typecheck, none of which exist here. Now runs check, types:check, build on pnpm
docs Agent guide refreshed and mirrored to CLAUDE.md; issue-tracker/triage/domain guides added; i18n plan marked as a plan
docs i18n research notes, with source-level citations for the non-obvious calls
chore 182 files of generated graphify output removed and ignored

Verification

No test runner in this repo, so the gate is check + types:check + build,
all passing. On top of that, for #34:

  • Prerender manifest, static search index, and sitemap.xml are all
    identical to a pre-change baseline build
  • Loader seam exercised directly: an en/my pair resolves to /blog/x and
    /my/blog/x; a Burmese-only post is absent from en; an untranslated post
    is absent from my; a file in a stray directory vanishes
  • Guard confirmed end-to-end by dropping a post into content/blog/drafts/
    and watching the build fail with a clear message

This PR is also the first real exercise of the rewritten CI workflow.

Not here yet

Burmese routes and index, the Myanmar typeface, the language switcher,
hreflang, Burmese preview images, and the rewrite of
agent_docs/i18n-burmese-english.md — all later slices of #33.

Move every post into content/blog/en/ and configure the Fumadocs loader
with a two-locale i18n config (en default, my reserved). English URLs are
unchanged: hideLocale "default-locale" keeps the default locale off the
path, so page.url stays /blog/<slug>.

Scope the English index, post route, and search index to "en" — an
unscoped getPages() now spans both locales. The sitemap stays unscoped on
purpose so it picks up Burmese posts once they exist.

parser: "dir" silently discards files under any directory not listed in
languages, so guard the loader by counting loaded pages against source
files and throwing when they disagree.

Refs #34
The workflow still called npm with eslint, prettier, and a typecheck script,
none of which exist here any more. Replace them with the real gates: check,
types:check, build.

Also run on pushes to main, cancel superseded runs, and pin the toolchain via
the packageManager field so pnpm/action-setup resolves a version.

Build needs placeholder env vars because a few are read at module scope —
next-cloudinary throws outright without a cloud name.
Records where issues live, the five triage labels, and the single-context
domain doc layout, so agents stop rediscovering them each session.
AGENTS.md now states the Next.js 16 caveat, the absence of a test runner,
and the verification gates, and it is mirrored byte-for-byte in CLAUDE.md so
every tool reads the same rules.

Refresh project-map.md against the code, and mark the i18n plan as a plan —
it read as a description of the codebase while none of it was built.
Source-level findings behind the Burmese blog design, so the non-obvious
calls are not re-litigated later: the loader's silent file loss under
parser "dir", Myanmar shaping in the social-image library, and why the
framework's own i18n guidance would break the non-blog routes.
182 files of cache and graph artefacts that no build step reads. Ignore the
directory alongside the other agent tooling so a re-run does not add them back.
@netlify

netlify Bot commented Jul 30, 2026

Copy link
Copy Markdown

Deploy Preview for htetaunglin-coder failed. Why did it fail? →

Name Link
🔨 Latest commit fec7166
🔍 Latest deploy log https://app.netlify.com/projects/htetaunglin-coder/deploys/6a6b150647d3df0008126aa8

@vercel

vercel Bot commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
htetaunglin-coder.dev Ready Ready Preview, v0 Jul 30, 2026 9:11am

@netlify

netlify Bot commented Jul 30, 2026

Copy link
Copy Markdown

Deploy Preview for gilded-faun-551193 failed. Why did it fail? →

Name Link
🔨 Latest commit fec7166
🔍 Latest deploy log https://app.netlify.com/projects/gilded-faun-551193/deploys/6a6b1506c1a9070008e73063

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Reorganise blog content by locale (prefactor)

1 participant