Skip to content

App Store metadata in Traditional Chinese and Japanese - #60

Merged
jhen0409 merged 9 commits into
mainfrom
i18n-store-metadata
Aug 22, 2026
Merged

App Store metadata in Traditional Chinese and Japanese#60
jhen0409 merged 9 commits into
mainfrom
i18n-store-metadata

Conversation

@jhen0409

Copy link
Copy Markdown
Member

Stacked on #59.

Summary

  • fastlane/metadata/zh-Hant/ and fastlane/metadata/ja/ mirror every en-US file: name, subtitle, promotional text, keywords, description_{ios,visionos}, release_notes_{ios,visionos} (1.3.1), beta_app_description, URLs. Same glossary as the app (docs/agents/i18n.md); zh-Hant linted with zhtw-mcp (the remaining 連接 hits are the deliberate attach term; 幕前調度 is Apple's Stage Manager).
  • Tools/metadata_limits.rb: SCRIPT_RANGES + allowed_character? — CJK copy is accepted by Unicode block per locale (ideographs, kana, bopomofo, CJK punctuation, full-width forms); en-US and testflight-whats-new.txt stay glyph-strict.
  • Tools/check-metadata.rb: passes the locale into the character check and recognises script-tagged directories (zh-Hant), which the old xx-YY regex silently skipped.
  • release-and-metadata.md records the mirror duty.

ruby Tools/check-metadata.rb → OK (all fields under cap; keywords 83/87 of 100).

String Catalogs (app, widgets, InfoPlist) with English text as the key;
every user-visible sheet, alert, menu, notification, guide, FAQ and
release-note string goes through String(localized:), while the TALLY
micro chrome (DONE, ESC, LIVE, telemetry) stays English by design.
Language is chosen per app in Settings.app; Multiplex Settings gains a
LANGUAGE row that deep-links there.

`./Tools/build.sh strings` folds the build's .stringsdata into the
catalogs (the IDE-only sync step); StringCatalogTests fails when a key
lacks a zh-Hant or ja value. Integer interpolations that must not be
locale-grouped (ports, line numbers) interpolate String(...).
Every translated row is needs_review pending a native pass; zh-Hant was
linted with zhtw-mcp. Decisions and glossary: docs/agents/i18n.md.
fastlane/metadata/zh-Hant and ja mirror every en-US file (name, subtitle,
promo, keywords, both platform descriptions and release notes, TestFlight
description, URLs). Tools/metadata_limits.rb gains per-locale Unicode
script ranges so the checker accepts CJK copy by block while en-US and
the changelog stay glyph-strict; check-metadata.rb now recognises
script-tagged locale directories (zh-Hant).
No spaces between full- and half-width characters, full-width colons, no
spaces around slashes/brackets, spaced em dashes; textlint is now the
recorded ja lint step in docs/agents/i18n.md.
ReleaseNotes.swift reverts to plain literals; its 93 catalog keys are gone.
Versioned copy is rewritten every release, so the per-release translation
pass buys little — the App Store release notes are localized instead.
@jhen0409
jhen0409 force-pushed the i18n-store-metadata branch from c3e8bcd to 1ab2fa9 Compare August 18, 2026 06:00
@jhen0409
jhen0409 force-pushed the i18n-store-metadata branch from 29f3fa5 to 1ab2fa9 Compare August 18, 2026 07:17
Base automatically changed from i18n-zh-hant-ja to main August 20, 2026 01:42
# Conflicts:
#	Multiplex/Localizable.xcstrings
#	Multiplex/Models/TerminalGuide.swift
#	docs/agents/i18n.md
#	fastlane/testflight-whats-new.txt
@jhen0409
jhen0409 marked this pull request as draft August 20, 2026 01:49
@jhen0409
jhen0409 marked this pull request as ready for review August 22, 2026 02:09
@jhen0409
jhen0409 merged commit 156574e into main Aug 22, 2026
1 check passed
@jhen0409
jhen0409 deleted the i18n-store-metadata branch August 22, 2026 02:09
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.

1 participant