Paratext 9 import converts interlinear files Paratext 9 never loads
メンテナーはふだん 1 日以内に返信
まだ誰も着手していません。
評価
- 難易度
- 5/5
- 見積もり時間
- 1週間以上
- 初心者へのやさしさ
- 35/100
- issue の種類
- バグ
- 明瞭さ
- おおむね明確
- 活発さ
- 活発
- 技術スタック
- typescript
調査の方向性
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 noEnglishglosses (onlyswhanden), so everyEnglishanalysis resolves to no gloss text, and picking "English" in the language picker shows nothing. - Demoted
swhapprovals 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 inswhbut unapproved in the stray file. In a fresh import, 2,715swh-glossed links in those verses are stored assuggested, 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:522in paranext-core). It marks each file withisCanonicalPath, which is true only when the file sits where Paratext 9 would load that language and book from (Pt9InterlinearReader.cs:861). - The converter consults
isCanonicalPathonly 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
- 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).
- 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.
- 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 を読み、一般的な手順ははじめてのコントリビューションガイドを参照してください。
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
sillsdev/interlinearizer-extension のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
sillsdev/interlinearizer-extension#506 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 48/100
sillsdev/interlinearizer-extension#505 ·
メンテナーはふだん 1 日以内に返信
-
難易度 3/5 1〜2日 初心者へのやさしさ 56/100
sillsdev/interlinearizer-extension#504 ·
メンテナーはふだん 1 日以内に返信
-
難易度 4/5 3〜5日 初心者へのやさしさ 52/100
sillsdev/interlinearizer-extension#503 ·
メンテナーはふだん 1 日以内に返信
-
難易度 3/5 1〜2日 初心者へのやさしさ 70/100
sillsdev/interlinearizer-extension#496 ·
メンテナーはふだん 1 日以内に返信
sillsdev/interlinearizer-extension の issue をすべて見る
似ている issue
-
[Bug]: REST API URL starting with "http" but no scheme (e.g. httpbin.org/get) is not given an http:// prefix対応中かも @ItsDeadlyProgrammer が今日担当しました。 オープン
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
appsmithorg/appsmith#42471 · コメント 1 件 ·
メンテナーはふだん 2 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
ehmpathy/rhachet-roles-bhrain#705 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 82/100
メンテナーはふだん 1 日以内に返信
-
Status: Triage
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
mermaid-js/mermaid#8546 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
braintrustdata/braintrust-sdk-javascript#2659 ·
メンテナーはふだん 1 日以内に返信