第一个微信小程序做了什么?搞定头痛的法语动词变位

为什么要做这个小程序?

来来来,先看一下 Wikipedia 上的头疼解释:

法语动词变位(法语:Conjugaison du verbe en français),是指法语动词为了表达不同的语式、时态、体、人称和数而产生的形式变化。法语动词可以分为三组:

  • 第一组:不定式以-er(aller 除外)

  • 第二组:不定式以-ir 结尾,现在分词以-issant 结尾

  • (以上两组为规则动词)

  • 第三组:不规则动词

    *   第一部分:不定式以-ir结尾,现在分词以-ant结尾
    
    • 第二部分:不定式以-oir 结尾
    • 第三部分:不定式以-re 结尾
    • aller

看着虽然头疼,但是解释的挺精确到位了。然而这仅仅是打开了它的冰山一角,更头疼的在后面:法语的动词变位变位中七种不同语气:直陈式(indicatif),虚拟式(subjonctif),条件式(conditionnel),命令式(impératif),分词(participe),不定式(infinitif),动名词(gérondif)。

配合上面的语气,还有各种时态:

  • 直陈式

    *   现在时 (présent)
    
    • 复合过去时 (passé composé)
    • 未完成过去时 (imparfait)
    • 愈过去时 (plus-que-parfait)
    • 简单过去时 (passé simple)
    • 先过去时 (passé antérieur)
    • 简单将来时 (futur simple)
    • 先将来时 (futur antérieur)
  • 虚拟式

    *   现在时
    
    • 过去时 (passé)
    • 未完成过去时
    • 愈过去时
  • 命令式

    *   现在时
    
    • 过去时
  • 条件式

    *   现在时
    
    • 过去时
  • 不定式

    *   现在时
    
    • 过去时
  • 分词

    *   现在分词
    
    • 过去分词
  • 动名词:将现在分词置于介系词”en”之后构成。

好的,大概就这么多。刚才提到了所有的动词分为三组动词,分别是第一组、第二组、第三组(这不是废话么,但确实是这么叫的),其中第一组、第二组动词的所有变位形式还算是比较固定的,第三组就是不规则动词。

但是,事实是,不管是不是规则动词还是不规则动词:记起来都很令人头疼。

小程序的第一版 v1.0.0

于是,我想要做一个小程序,来帮助被法语动词变位弄头疼的朋友。一开始这个小程序是采用去网上扒现成的动词变位数据。我用了陈教授推荐的 webscraper 扒了一个动词变位网站上的动词变位数据,每次扒一个单词。

别看才一个单词,一个单词 6 个人称,16 种时态,再加上现在分词和过去分词,大概有 100 不到一丢丢种情况。爬完几个之后就变成了熟练工,第一版小程序上线时,一共有 30 个动词的查询和背诵,这时数据表中就有了接近 3000 种情况。

既然是记忆小助手,那它的主要功能必定是帮助你更好地进行记忆,这里采用了最简单粗暴地打字默写形式,答对了过,答不对继续填到对跳下一个。朋友们可以自己选择时态和单词范围,因为第一版才 30 个动词,所以都是基础常用词。

程序的第二版  v1.2.0

30 个动词肯定不够用啊,而且第一版的界面用了腾讯官方的 weui,觉得有点小丑,于是就换了一个 UI 组件 ColorUI,瞬间看上去感觉好了很多。除了界面有了全新的改变,动词突然从 30 个涨到了几乎涵盖所有法语动词的 7016 个动词。按照之前那种,每种情况单独存一条的话,会有 701600 左右种情况,对于微信小程序来说显然存不了那么多(小程序大小上限为 2 兆)。

后来的解决方案是这样的:在 github 上找 conjugaison francaise,没想到居然还找到了,顺藤摸瓜找到了个开源的数据库叫做 verbiste,里面列出了 7016 个动词的对应典型动词,每一个典型动词都详细列出了每个时态是对应哪种词根。当 7016 个动词的词根和这些典型动词的词尾相结合之后,便形成了相应的动词变位。当然拿到这个文件之后需要进行相应的改动变成 json 格式。

然后么,大概就分为这两种情况:

  • 简单时态:  动词的词根加上对应典型动词的词尾
  • 复合时态: 判断用 avoir 还是 être,然后加上动词的过去分词(过去分词也是根据上述进行拼接的)

除此之外,还有一些细节问题,比如第一人称 Je 和后面动词的缩合问题。举个简单点的例子,一个动词的变位再怎么变第一个字母是不太会变的,但是有一个动词很特殊 être,照道理 Je 碰到它都需要缩合成 J’。être 的第一人称单数居然是 Je suis,这就不用缩合,好的,这是一个坑货。

还有一些细节,比如法语有很多特殊字符:éèçàêîÏù 等等,所以我多增加了一列叫做”简单单词“:比方说 être 的简单动词就是 etre。这样的话就出现了用户可以不限特殊字符地查找动词了。

小程序的第三版  v1.3.0

这一版也是最新的,基本功能和上一版本差不多,另外加了一个”学习功能“,专供懒人的懒人模式,不用打字照样记忆(虽然这样我觉得会没有打字记忆效率高)。

卡片顺序和单词参考了“法语动词变位渐进”。卡片的单词内容大致如下,不同的时态下方的单词数量和内容均有所不同,具体如下图(点击看大图):

具体的内容可以参见如下:

> [法语动词变位小助手 v1.3.0 更新了啥?](https://xd.sh.cn/2019/05/08/conjhelper-v1-3-0/)

主要更新内容

v1.3.0  日期:2019/05/07

  • 增加中文翻译
  • 更换欢迎页面,欢迎页面可以直达想要用的功能
  • 增加学习模式,卡片式学习(实际上是懒人模式,不用打字即可背变位)
  • 修复了直陈式简单过去时默写时的判断问题(2019/05/06)
  • 7000 词查询部分按钮在 ios 端会出现 bug,已换成透明
  • 修复了一些小问题
  • 更新了一些信息

最后

如果大家觉得这个小程序有用的话或者是周围小伙伴有类似需求的话,不妨试试看。如果有意见或者建议或者是报错或者是奇思妙想的话,可以后台私信也可以发送邮件到 admin@hxd.red,也可以点击原文链接去网页上报错。

updatedupdated2020-05-272020-05-27

以上是自己提供的广告