From 77e47592210c73b0331bd8e2c1211adfd8c70038 Mon Sep 17 00:00:00 2001 From: Tomoki Kobayashi Date: Thu, 27 Aug 2026 20:17:01 +0900 Subject: [PATCH 1/2] Give each language a URL a search engine can index MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Both pages already read in one language and already take it from `?lang=`, which is where App Store Connect's per-localization URLs point. What was missing is that nothing said so. A crawler renders the page, the script negotiates from navigator.languages — `en-US` for Googlebot — and the Japanese half goes display:none, on the one URL anybody links to. So the Japanese page was not ranked badly; it did not exist. Three things fix that, and none of them changes how the site works. hreflang alternates in both heads, naming `?lang=en`, `?lang=ja` and the bare URL as x-default. The set is identical on every variant, self-reference included, which is what lets one file serve all three. There is deliberately no rel=canonical: it would have to differ per URL, and a static one pointing anywhere folds the other two into it and un-indexes the Japanese page, while a script-written one is the case Google says not to rely on. Real links in both footers. The picker is a ` is not something a crawler can follow, and a `data-description` on +each section beside the `data-title` that was already there — so adding a +language is still a code, an `