以前我用来记日语单词的软件叫做单语,由于它只有iOS版,没有电脑版,词汇一多了操作起来就非常不方便,而且鉴于它只有导入功能没有导出功能。有一些bug还无法修复。因此随着单词越来越多,越用越不方便。
昨天开始接触神器anki。简单记录一下:
安装
Windows、Mac的客户端在官网免费下载安装(mac 有 M1 编译版),iOS客户端在App Store上要收费(很贵,168元)。不想出钱的,可以去淘宝花2~3元利用共享账号安装。
账户同步
先在web上注册账户,然后去各个客户端登录账户。原则上,电脑上打开/退出app时就自动同步。但由于iOS没有“退出”的概念,所以只能自己多去手动点点。
各个客户端都可以开多个账户,但一个账户对应一个电子邮件,互不干扰。
针对日语单词的卡片模板
先说结论:记日语单词一定使用 Basic (optional reversed card) 这个模板。中文翻译为:问答题(同时生成翻转的卡片<可选>)
anki 这个app的名字实际上来自于日语单词「暗記(あんき)」的读音。日语单词存在假名的特殊性,因此有以下特殊场景:
- 正面写汉字、反面写假名和意思:看汉字回忆假名和意思。同时另一张:正面写假名、反面写意思:直接看假名回忆意思。例如:「慰める(なぐさめる)」。这就需要生成“翻转的卡片”。
- 只需要正面写汉字、反面写假名和意思,不需要反过来。这通常用于读音很短、同音字很多的单词。例如:「引く(ひく)」,毕竟读音ひく的单词太多了,没必要反过来记。
- 只需要正面写假名、反面写意思,不需要反过来。这通常用于无同音词、且汉字难些或基本不用的单词,例如:「いびき」,汉字「鼾」几乎不用。
一般的app想同时满足这三点几乎不可能。得亏anki的高度定制性,使得我可以自己写代码完成:
卡片1正面
<!--
说明:
(1){{kanji:Front}}是单词的汉字写法(包括送假名)。如果单词没有汉字,则它的值就是假名。
(2){{tts ja_JP:kana:Front}}调用系统的发音功能。卡片在此处会显示一个播放按钮,可以发音。MacOS和iOS上都能用。
-->
<br>
<br>
<br>
<div class="word">{{kanji:Front}}</div>
<br>
{{tts ja_JP:kana:Front}}
<br>
<br>
<div class="tag">标签:{{Tags}}</div>
卡片1反面
<!--
说明:
(1){{furigana:Front}}显示单词的振假名注音(如果单词没有汉字,则它显示假名自身)
(2)<a href="XXX"></a>这个链接可以链接到外部词典,我这里用的是weblio日中词典。
-->
{{FrontSide}}
<hr id=answer>
<div class="annotation">
「{{furigana:Front}}」 <a style="text-decoration:none" href="https://cjjc.weblio.jp/content/{{text:kanji:Front}}">此处画一个你自己喜欢的字符</a><br>
<br>
{{Back}}
</div>
卡片2正面
<!--
说明:整个区域被{{#Add Reverse}} {{/Add Reverse}}标记包裹,即如果Add Reverse这一项为空,则不生成卡片2.
-->
{{#Add Reverse}}
<br>
<br>
<br>
<div class="word">{{kana:Front}}</div>
<br>
{{tts ja_JP:kana:Front}}
<br>
<br>
<div class="tag">标签:{{Tags}}</div>
{{/Add Reverse}}
卡片2反面
{{FrontSide}}
<hr id=answer>
<div class="annotation">
「{{furigana:Front}}」 <a style="text-decoration:none" href="https://cjjc.weblio.jp/content/{{text:kanji:Front}}">此处画一个你自己喜欢的字符</a><br>
<br>
{{Back}}
</div>
CSS(卡片1和2的正反面都一样)
.card {
font-family: arial;
font-size: 20px
text-align: center;
color: blue;
background-color: white;
}
.card1 {
color: green;
}
.word {
font-size: 60px;
}
.annotation {
font-size: 30px;
}
小提示
局部振假名
比如有个单词叫做「お父さん」,按常规的写法得写:お父さん[おとうさん]
。这样子很难看,实际上我们只需要给“父”一个字注音「とう」即可。方法是:在“父”的前面加一个英文空格,然后紧跟着它写中括号和假名,就是:お 父[とう]さん
。(PS:我反而觉得这样子很麻烦,因为需要不停地切换输入法,所以后来我干脆用Japanese Text Cleaner插件自动处理得了。)
在背面插入表格
可以直接从excel复制到背面框(当然需要在PC端操作,txt导入估计够麻烦),设置以下CSS就行:
table {
width: 100%;
border-collapse: collapse;
text-align: left;
}
td {
font-size: 15px;
color: black;
border: 1px solid;
}
声调
这需要使用一个插件:Japanese Pitch Accent。它会自动根据你的词汇生成svg格式的声调图,没有img图片,很轻巧。
然而问题很快就来了:它需要指定 Expression 和 Reading 字段,お 父[とう]さん
这样肯定是不行的,它遇到空格就会自己终止。那就自己添加字段吧(这两个字段只作为辅助,不在卡片上显示)。
于是最后就变成这样:输入时只输入汉字(お父さん
)和假名(おとうさん
),然后用Japanese Text Cleaner插件自动生成振假名字符串作为最终的 Front(お 父[とう]さん
),用Japanese Pitch Accent插件根据汉字字段和假名字段生成音调。最后展示一下带有声调的卡片背面图。
夜间模式
iOS版(AnkiMobile)有随系统自动夜间模式功能。但这只能反转系统内置的文字颜色。卡片里面那些自定义的HTML需要自己用CSS反转,CSS为nightMode这个类别,例如:
.nightMode td {
color: white;
border: 1px solid white;
}
.nightMode svg > text { fill: #fff !important; }
.nightMode svg > path { stroke: #fff !important; }
.nightMode svg > circle[r="5"] { fill: #fff !important; }
.nightMode svg > circle[r="3.25"] { fill: #2d2d2d !important; }
用正则表达式搜索片假名单词
虽然每次输入单词时直接附上一个标签(例如:片假名)比较方便,但毕竟总有遗漏的时候。好在anki支持正则表达式搜索。例如片假名的Unicode字符范围是U+30A0–U+30FF,则用front:re:[\u30A0-\u30FF]
就可以搜到所有的片假名单词。
我就说为什么我一直访问不了你的站,好像你的博客的ssl过期了。
其实没有过期,前段时间是主机那边不稳定,现在正常了吗?
咦,你的站点是不是不能科学网访问的?我关了代理又能正常访问了?
我回去再设置一下,以前是对国外启用了cdn,国内不启用,所以会有区别。
请现在再试一试?之前是因为CDN(面向国际)的证书有问题,所以才会非常诡异。现在两者应该都OK了,无论国内还是国际。
可以了,哈哈~
Anki 非常强大,几乎可以用来记任何知识~ 我在大学的时候就付费购买了 iOS 版,当时开发者是说 iOS 用户的购买力普遍要强于 Android 和 Windows 平台用户,所以就只对 iOS 用户进行收费……
是的,如果刚开始学英语时就能用上它,可能记住的单词会更多