FLTRP English-Chinese Multifunctional Dictionary mdx



“词语搭配”标题在mdx词典里也缺失。
刚刚又看了about这个词条。“词语辨析”的标题在mdx词典里也没有。

下载最新版本,你说的问题都解决了。

第二版有些用法没有第一版那么多,但是感觉阅读起来清爽很多。

put词条的多重引用问题已经解决,另外修复了外字问题,分隔符和重音符丢失问题等多个问题,需要重新下载

2 Likes

欧路用户将css里的:root修改为*,就可以正常显示颜色。

以词组为主的词典的痛点 :enraged_face:
这个恐怕要程序上做大更新才行。@xiaoyifang

• 结论:当前源码支持 @@@LINK=take 这种 MDX 内部重定向,但不支持把 @@@LINK=take#take-off 解释成“跳到词条 take 的锚点  take-off”。

  ### 当前行为

  MDX 读取到 @@@LINK= 后,会把等号后的全部内容直接交给词头索引查询:

  - /goldendict-ng/src/dict/mdx.cc:605
  - /goldendict-ng/src/dict/mdx.cc:610

  因此:

  @@@LINK=take

  会查询词头 take,可以正常重定向。

  而:

  @@@LINK=take#take-off

  会查询字面词头 take#take-off,并没有拆成:

  word   = take
  anchor = take-off

  除非词典里恰好存在名为 take#take-off 的词头,否则通常会得不到目标文章;即使存在,也不会执行锚点滚动。

  ### 普通 HTML 锚点链接是另一套机制

  软件确实支持:

  <a href="entry://take#take-off">

  MDX 过滤器会把它转换成:

  gdlookup://localhost/take?gdanchor=take-off

  对应代码在 /goldendict-ng/src/dict/mdx.cc:972。

  页面加载完成后,ArticleView 通过设置全局:

  window.location.hash = "take-off"

  完成滚动,见 /goldendict-ng/src/ui/articleview.cc:550。

  所以当前能力可以概括为:

   写法                         查目标词条      跳锚点    多词典隔离
  ━━━━━━━━━━━━━━━━━━━━━━━  ━━━━━━━━━━━━━━━━  ━━━━━━━━━━  ━━━━━━━━━━━━
   @@@LINK=take                       支持      不涉及          支持
  ───────────────────────  ────────────────  ──────────  ────────────
   @@@LINK=take#take-off    不支持正确解析      不支持             —
  ───────────────────────  ────────────────  ──────────  ────────────
   entry://take#take-off              支持    基本支持        不隔离

  ### 多部词典时是否影响其他词典

  @@@LINK 本身是词典内部重定向,天然具有较好的隔离性。

  一次查询中,ArticleMaker 会把原查询词分别传给每一部词典,见 /goldendict-ng/src/article_maker.cc:503。只
  有遇到 @@@LINK 的那部 MDX 词典会在自己的 MdxArticleRequest 内继续查询目标词;其他词典仍然查询原来的词。

  例如查询 takeoff:

  词典 A:takeoff → @@@LINK=take
  词典 B:正常查询 takeoff
  词典 C:正常查询 takeoff

  最终结果是:

  词典 A 显示 take 的正文
  词典 B、C 仍显示 takeoff 的结果
  页面主查询词仍是 takeoff

  这一点已经满足“跳转不影响其他词典查词”。

  但是普通 entry://take#take-off 不同:它会调用一次新的 showDefinition("take", 当前词典组, ...),整个词典组都会重新查询
  take,见 /goldendict-ng/src/ui/articleview.cc:1186。所以它会改变其他词典的查词内容。

  此外,当前锚点滚动使用整个文档的 window.location.hash,而多部词典文章只是被包在不同的 <article> 中,见 /
  goldendict-ng/src/article_maker.cc:631。词典内部的 id="take-off" 没有加词典命名空间。若多部词典都存在同名 ID,浏览器可
  能跳到页面中第一个匹配项,而不一定是发起重定向的词典。

  ### 推荐修改方案

  若目标只是正确支持:

  @@@LINK=take#take-off

  并保持其他词典不受影响,属于“小到中等”修改,不需要重构查词架构。

  建议这样实现:

  1. 在 MdxArticleRequest::run() 中解析 @@@LINK=:

     targetWord   = take
     targetAnchor = take-off

     仅将 targetWord 传给 findArticles()。

  2. 在 MdxArticleRequest 中保存目标锚点,不能只丢进全局 gdanchor,因为那样无法确定属于哪部词典。
  3. ArticleMaker 输出对应词典的 <article> 时,增加类似:

     <article
       data-gd-id="dictionary-id"
       data-gd-anchor="take-off">

  4. 页面加载完成后,在该 <article> 内局部查找:

     article.querySelector('[id="take-off"]')

     找不到时再查 name="take-off",然后:
      - 展开被折叠的词典文章;
      - 激活对应词典;
      - 对目标元素执行 scrollIntoView()。

  这种方案即使两部词典都有 id="take-off",也只会在发生重定向的词典容器内部查找,不会串到另一部词典。

  预计涉及:

  - src/dict/mdx.cc
  - src/dict/dictionary.hh,如果采用正式的请求元数据接口
  - src/article_maker.cc
  - src/scripts/gd-builtin.js

  大约是 60–120 行有效修改,加上手工测试词典。实现和验证通常约半天到一天半。仓库中没有找到现成的 MDX 重定向单元测试,因
  此最好补一个最小 MDX 测试样本,覆盖重定向链、重复锚点和折叠文章。

  ### 如果还要求普通链接不改变其他词典

  如果希望点击:

  entry://take#take-off

  时只替换当前词典的文章,同时保留页面中其他词典原来的查询结果,那么修改明显更大。当前页面由一次 gdlookup 请求统一生成,
  各词典不是独立可导航的子页面。

  这需要增加“单词典局部重新加载”机制,可能包括:

  - 链接携带源词典 ID;
  - 单独请求指定词典文章;
  - 在现有 DOM 中替换一个 <article>;
  - 独立处理历史记录、折叠状态、发音、当前词典和锚点;
  - 防止异步请求覆盖新页面。

  这大约会涉及 5–8 个核心文件、200–500 行以上修改,合理工期约 3–7 天。

  因此,最合适的路线是:先只扩展 @@@LINK,把它做成“MDX 词典内部、容器作用域内的锚点重定向”。这正好满足目标,而且不会让其
  他词典重新查 take。

css现在改为了旧式写法提高兼容性,另外修复了导航层级问题和部分跳转链接问题

3 Likes

这种问题只能是另起一个mdict规范。。。而不是让软件强行做mdx超集

mdx根本没有标准,而且软件也不是对mdict作为标准实现的,没什么不能改的。png格式最近还出了3.0呢。

1 Like

如果词条本身有#的转义问题呢。参考什么方式。urlencode?

这个词典好啊,casio早期的机器上有,后来就没有收录了,有的时候用着还是感觉到释义挺好的

日本编纂的英语书大部分都比较细致

查询 except 时,发现一处多了 000034C


方便的话,麻烦修改一下,谢谢:folded_hands:

1 Like

谢谢分享。关于“close”词条,该义项导航似乎失效。

same 排版问题

pull 最后两条短语位置不对

麻烦抽空修正,多谢

这个和楼上的问题都修复了,请重新下载

3 Likes

感觉漏掉很多不常用的标签,麻烦楼主复查修复

这些是第二版外研社自己加的内容,也没有对应日文版,这个词典是第一版不是第二版。

1 Like

exercise词条下,这个子义项是不是跟《同义词辨析》混在一起?