Closed zepinglee closed 2 years ago
可能 "自动设置语言" 满足了我个人的需求,但并不适合所有人。我的初衷是:自动补全空缺的语言栏而不用人工去选择。受限于本人只阅读中英文献,所以未考虑全面。
但是 "不合规时自动设置语言" 的建议并不全面。比如用户即使知道 zh-CN 是合法的也想更改成 zh,保持整体的统一性。其次,自动识别语言从正则的角度去考虑确实是投机的行为,使用类似 languagedetect 的库可能是更好的方案。
在PR 的时候,我添加了这个功能,并没有与原来的功能合并,这样用户依旧可以使用原来的方式。如果有用户和我有相同的需求,可以开启这项功能。所以该功能目前不会影响正常的使用。
我现在的想法是:通过已有的语言识别库来更好的解决这个问题,用户可以选择填入 zh(en) 这样的简写形式或是 zh-CN (en-US)这样的形式。缺陷是不能保证100%的准确性。不知道你是否有更好的想法。
由于最近一段时间比较忙,并且上面的想法还会有更好的实现方式,我可能并不会马上提交一个新的PR 。如果你有时间或者更好的想法可以继续修改这项功能。
但是 "不合规时自动设置语言" 的建议并不全面。比如用户即使知道 zh-CN 是合法的也想更改成 zh,保持整体的统一性。其次,自动识别语言从正则的角度去考虑确实是投机的行为,使用类似 languagedetect 的库可能是更好的方案。
我没有使用茉莉花插件,应该有个功能是用户手动选择文献并批量修改语言,更适合你描述的场景,而且与自动设置并不矛盾。这样的话则由用户对修改的内容负责。我只是不希望插件在用户不知情时随意修改已有的信息。
目前我管理了一个 Zotero 群组用于开发 CSL 样式,这样更方便用户提供测试案例。其中的文献很多是各种体例的官方示例,比如 https://www.zotero.org/groups/4677213/chinese_csl_development/collections/GTTN32IE。所以不希望每次有新用户时加入时,各自使用的插件都对其中的内容修改一番。
在PR 的时候,我添加了这个功能,并没有与原来的功能合并,这样用户依旧可以使用原来的方式。如果有用户和我有相同的需求,可以开启这项功能。所以该功能目前不会影响正常的使用。
我现在的想法是:通过已有的语言识别库来更好的解决这个问题,用户可以选择填入 zh(en) 这样的简写形式或是 zh-CN (en-US)这样的形式。缺陷是不能保证100%的准确性。不知道你是否有更好的想法。
感觉需要一定的工作量,我其实并没有这方面的需求。
我没有使用茉莉花插件,应该有个功能是用户手动选择文献并批量修改语言,更适合你描述的场景,而且与自动设置并不矛盾。 这样的话则由用户对修改的内容负责。我只是不希望插件在用户不知情时随意修改已有的信息。
我就是对 “手动选择文献并批量修改语言” 进行的修改。这里的自动是指对已经选择的文献进行自动甄别。
使用场景是:原来只能利用ctrl
手动去多选文件,然后设置一种语言。因为在文献库里中文和英文往往是混杂排列,而且每个文献需要打开详情页才能看到语言栏是否为空,所以补全语言栏是一件麻烦的事情。我添加的功能是为了用户可以拖拽全选,而不用去关心语言栏的情况。如果用户和我一样只阅读中英文献,便不会引起上文提及的问题。
单纯说工作量的话,并不是很大,引入一个库而已。只是对原项目的修改较多。
强烈建议提高这个问题的优先级。
另外补充一下,我说的“自动修改”指的是插件在用户不知情的状态下修改 language
字段。
在最近的 https://github.com/redleafnew/Chinese-STD-GB-T-7714-related-csl/issues/62#issuecomment-1200653124 中,同样发生了茉莉花在用户新加入群组时自动修改了 language
字段,这破坏了原有的文献数据。
你说的这是之前版本就有的功能。
该功能应该是 “中文条目自动设置语言”,但是由于默认设置的语言选项为 zh-CN 和 cn。而不是 zh-CN 和 zh,会导致语言填写错误。
<menulist flex="1" editable="true" id="jasminum.language" preference="pref-jasminum.language" maxwidth="100">
<menupopup>
<menuitem label="zh-CN" value="zh-CN"/>
<menuitem label="cn" value="cn"/>
</menupopup>
</menulist>
@l0o0
@zepinglee 目前默认是禁用自动设置语言栏的。该设置,是不是可以加一个提醒标记,记用户谨慎使用该功能?
@zepinglee 目前默认是禁用自动设置语言栏的。该设置,是不是可以加一个提醒标记,记用户谨慎使用该功能?
没必要,只要不覆盖已有的合法 language
值就行。
建议改成,开起了“自动设置语言”后,仅在 language
为空或者不匹配 /[a-z]{2}(-[A-Z]{2})?/
时才自动设置语言。
自动设置语言功能在 Zotero 群租的多人协作时很不方便,比如甲要设成“zh”,乙设成“cn”,会导致该字段反复修改。
比如 https://github.com/redleafnew/Chinese-STD-GB-T-7714-related-csl/issues/62#issuecomment-1201994224,我昨天将全部 language
改成了 zh
,结果晚上又被改成了 cn
。
@Maasea 我仔细看了一下 #105 的代码,确实跟我这里的“自动设置”问题无关,不好意思打扰了。
见 https://gitee.com/redleafnew00/Chinese-STD-GB-T-7714-related-csl/issues/I5IMWS#note_11862481_link 的讨论,Zotero 群组中原有的中文文献都已经填写了正确的
language
信息(“zh”),但是新用户加入群组时,由于开启了茉莉花插件的自动设置语言功能而且配置不当,错误地将全部中文文献的language
改成了“cn”,导致使用 CSL 无法正确处理语言。根据 https://github.com/l0o0/translators_CN/issues/73、 Zotero 官方文档(https://www.zotero.org/support/kb/item_types_and_fields#general_fields)和 CSL 规范(https://docs.citationstyles.org/en/stable/specification.html#standard-variables),language
允许的值有zh
,zh-CN
,zh-TW
,en
,en-US
,en-GB
,而cn
和zh_CN
都是不合规范的。另外,文字和语言是不同的范畴。比如英语和拉丁语都使用拉丁字母,但是两者是不同的语言。同样,汉语和日语都使用汉字。所以 #105 从文字推断语言并非完全准确:比如
[\u4e00-\u9fa5]
匹配的是 CJK Unified Ideographs(中日韩统一表意文字),三种语言都会使用。如果直接设置为中文可能会将日文、韩文错误地设为中文。所以建议“自动设置语言”时,不要修改用户已填的信息,仅在
language
为空或者不合规时才自动设置(可以使用 regex([a-z]{2}(-[A-Z]{2})?
进行判断)。@Maasea