Skip to content

單語課程的首頁統計句硬寫多語言,會印出「另有 0 支多語言版本」 #7

Description

@fringmin

環境

main @ 0c327f7make new-course 產生的骨架課程。

現象

#heroNote 實際輸出(骨架課程):

0 個單元,每個單元 1 堂主課 + 共 0 支跟練影片。另有 0 支多語言版本,
播放清單共 0 支;扣掉跨單元共用的,實際是 0 支不重複影片,
每個語言版本都看過的話總長 0 分。

對照 gym(有多語言版本時句子是通順的):

44 個單元,每個單元 1 堂主課 + 共 316 支動作影片。另有 44 支多語言版本,
播放清單共 404 支;扣掉跨單元共用的,實際是 378 支不重複影片,
每個語言版本都看過的話總長 40 小時 5 分。

任何沒有做多語言版本的課,這句話都會在講一個它沒有的東西。

根因

app.js:169-171 把多語言那一段當成必然存在:

`另有 ${meta.alt_lessons} 支多語言版本,播放清單共 ${meta.video_slots} 支;` +

`每個語言版本都看過的話總長 ${meta.duration_all}。`;

這一段的其他名詞都走了文案契約(ui.unitNounui.lessonNounui.drillNoun),
只有多語言這半句是寫死的。

我的修法

const multi = (meta.alt_lessons || 0) > 0;
 + (multi ? `另有 ${meta.alt_lessons} 支多語言版本,播放清單共 ${meta.video_slots} 支;`
           : `播放清單共 ${meta.video_slots} 支;`)
  +  + (multi ? `每個語言版本都看過的話總長 ${meta.duration_all}。`
               : `全部看完的話總長 ${meta.duration_all}。`);

順帶一提(同一類,但可能是刻意的設計)

player.js:14langLabel = (l) => (LANG[l] ? rich(LANG[l]) : esc(l))
課程沒設定 languages 時退路是把資料裡的語言碼原樣顯示,
於是播放清單與影片頁會出現 zh-TW 這種給機器看的字串當標籤。
單語課程的話這個籤本身也只是噪音。我的 fork 改成對不到就不顯示,
但這條我沒有實測,也可能你本來就想要這個行為,就一併提出來給你判斷。

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions