Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

Paratext 9 import converts interlinear files Paratext 9 never loads

オープン
#479 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 1 日以内に返信

まだ誰も着手していません。

評価

難易度
5/5
見積もり時間
1週間以上
初心者へのやさしさ
35/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
typescript
領域
backend, data

調査の方向性

Start with src/converters/pt9/convertPt9Project.ts and trace how it uses isCanonicalPath, then read src/converters/pt9/analysisMerger.ts to understand how merged approval status is determined. Compare the import behavior with the Paratext 9 canonical path rules described in the issue. Done means the chosen handling of non-canonical files is clear and prevents the reported phantom language and approval demotions.

索引モデルが issue の本文から書いたものです。

説明

The Paratext 9 import reads every file that looks like interlinear data, including ones Paratext 9 itself never opens. A file like that becomes its own gloss language, and through cross-language merging it can demote approvals in the real data.

Example: Pimbwe (from #477)

Besides its canonical folders, Pimbwe has Interlinear_en/Interlinear_en_opy.xml. Its root element declares GlossLanguage="English" and BookId="ACT", and it holds 10,983 clusters across ACT's 1,000 verses, 182 of them approved. Paratext 9 would only load this language and book from Interlinear_English/Interlinear_English_ACT.xml, so it never reads this file. It looks like a stray copy from an older Paratext version, which wrote language names instead of codes.

What the import does with it:

  • A phantom language. The import stores analysisLanguages: ["swh", "en", "English"]. The lexicon has no English glosses (only swh and en), so every English analysis resolves to no gloss text, and picking "English" in the language picker shows nothing.
  • Demoted swh approvals in ACT. mergeStatus (src/converters/pt9/analysisMerger.ts:89) keeps a merged record approved only when every contributing language approved it. 741 ACT verses are approved in swh but unapproved in the stray file. In a fresh import, 2,715 swh-glossed links in those verses are stored as suggested, against none in verses the stray file doesn't cover.

Cause

  • The core reader collects every interlinear-looking file at the project root or in any Interlinear_* folder (FindPt9InterlinearFiles, c-sharp/Projects/Pt9InterlinearReader.cs:522 in paranext-core). It marks each file with isCanonicalPath, which is true only when the file sits where Paratext 9 would load that language and book from (Pt9InterlinearReader.cs:861).
  • The converter consults isCanonicalPath only to choose among twins: files sharing a gloss language and book (src/converters/pt9/convertPt9Project.ts:79). A non-canonical file without a twin converts like any canonical one.

Options

  1. Convert only canonical files. Count non-canonical files in the report as not imported, with the reason. This matches what the user sees in Paratext 9, but drops data a user might have meant to keep (for example a hand-placed copy).
  2. Keep converting non-canonical files, but stop them from affecting other languages. For example, their records never lower another language's merged status. The data is preserved, but it still surfaces as a language Paratext 9 never showed.
  3. Ask during import. List the non-canonical files and let the user include or skip them. This keeps the user in control but adds a step to every affected import.

Related

The same demotion happens with a legitimate second language. In Pimbwe's LUK, 4,791 swh-glossed links in swh-approved verses are suggested because the canonical Interlinear_en_LUK.xml leaves those verses unapproved. #254 notes the mergeStatus rule. Whether one language's unapproved verse should demote another language's approval is a separate question from this issue.

主要言語
TypeScript
スター
2
フォーク
0
平均マージ
1日 23時間
マージ済み PR(30日)
57

環境構築

このプロジェクトには開発コンテナ、Dockerfile、コントリビューションガイドがありません。まず README を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

sillsdev/interlinearizer-extension のほかの issue

sillsdev/interlinearizer-extension の issue をすべて見る

似ている issue

TypeScript の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。