How to Change EPUB Language Without Leaving Mixed Labels

To change EPUB language safely, keep a before-and-after package and compare four destinations: OPF language, contents heading, colophon heading, and generated date text. A setting response alone cannot show whether an older package was reopened by mistake. The controlled comparison exported the same six-chapter synthetic source once as Japanese and once as English.

Preserve two named packages before comparing labels

The Japanese export and English export were written to different directories. The Japanese EPUB SHA-256 was b3faeabc0725fc016f1d515333e7577177994665923215c5b840240aa7219fd5; the English EPUB SHA-256 was 8186a67485d7c96df038b9496f490c90a3bc5ecd1865809c90081d53d5091a02. Those identities matter because exporting twice to one path would erase the only reliable before state.

Both books retained the same six chapter sources and order. Each package had nine spine items, six navigation links, six NCX points, no missing resources, and local valid=true. If those structural values had differed, the comparison would have contained more than a language change. The correct recovery would then be to restore the same chapter selection before interpreting any label difference.

Read the four language destinations from the package

In content.opf, dc:language changed from ja to en. The generated contents heading changed from the Japanese “もくじ” to “Table of Contents.” The colophon heading changed from “奥付” to “Colophon.” These are package observations from two retained EPUBs, not guesses based on the language selector.

The generated colophon date also changed format. The Japanese XHTML contained “2026年9月3日,” while the English XHTML contained “September 3, 2026.” Nearby generated labels changed from Japanese publication wording to “eBook” and “published.” This evidence establishes the strings stored in XHTML. It does not establish how a named reader will wrap, style, or localize those strings on screen.

Do not confuse generated labels with translation

The chapter titles and source prose remained Japanese in this synthetic fixture. Changing the language setting did not translate the manuscript. It changed the OPF language value and Rune’s generated contents, colophon, and date-related labels. A real English edition still needs independently reviewed English prose and chapter titles.

That boundary prevents a dangerous handoff: an editor sees an English colophon and assumes the entire book is an English edition. The package comparison should therefore include a representative source paragraph as well as generated labels. If the intended edition requires translated content, that content must have its own acceptance record.

Repair one mixed label without patching the EPUB

Suppose OPF says en but the contents page still says “もくじ.” First verify the EPUB digest so an earlier export is not being inspected. Then read back the language setting, export the same six chapters under a new name, and compare all four destinations again. Editing the generated XHTML by hand would hide the source of the problem and would be lost at the next export.

The same rule applies when the English contents heading is correct but the colophon remains Japanese. Return to the generating setting and rebuild; do not accept one corrected label as proof of the other three. After regeneration, confirm that all six navigation href values still resolve to p001.xhtml through p006.xhtml.

Use a paired difference sheet for handoff

The sheet should list both EPUB digests, OPF language, contents heading, colophon heading, date string, spine count, navigation count, NCX count, and missing-resource count. The structural rows should remain equal; the intended language rows should differ. That pattern makes an accidental chapter change visible and keeps a label change from proving more than it actually changed.

For the named fixture, both EPUBs passed local inspection and the four language destinations changed as described. Retailer language classification, rendering in every reader, and translation of manuscript content were not tested. The date was verified as stored XHTML text, not as a reader screenshot. With those limits stated, the comparison answers the practical question: the edition can be accepted when the package retains the same six chapters and every generated language destination agrees with the selected edition.

Separate author-entered values from generated interface text

A colophon contains both kinds of content. “Colophon,” “Author,” “Publisher,” and “published” are generated labels in this test, while the work title, author name, and publisher name came from the entered metadata. A language switch should not unexpectedly rewrite proper names. The comparison sheet marks each string as generated or entered so an unchanged name is not mistaken for a mixed-language defect.

Navigation has the same distinction. The page heading can change to “Table of Contents,” while chapter labels continue to reflect source headings. In this synthetic book those headings deliberately remained Japanese. That is evidence that the language setting is not a translator, not evidence of a failed export. For a real English edition, compare the six navigation labels against an independently approved English chapter list.

Date handling needs two rows as well. The colophon XHTML contained the localized publication wording described above, whereas OPF modification metadata serves a different technical purpose. Do not compare those values as if they were the same field. If a reader later reformats the date, record the reader name, version, locale, screenshot, and EPUB digest in a new visual-test row. The package result remains intact even while that display question is open.

A robust negative test can keep OPF language at en while deliberately retaining the Japanese-generated contents page in a copied package. The checker should reject that pair even though both files exist and all links resolve. After proving the checker detects the mismatch, return to an unmodified source workspace and regenerate; never deliver the deliberately altered package. This demonstrates why structural validity and language consistency are separate acceptance decisions.

The final handoff should allow a second editor to answer three questions without opening the original session: which two EPUBs were compared, which strings were expected to differ, and which properties were expected to stay equal. Digests identify the files; the paired sheet supplies the expected differences; six resolved chapter links confirm stable structure. Anything about storefront classification or visual display remains explicitly assigned to its own environment-specific test.