云书库calibre-web搭建(2)

折腾之路

合并原项目新commit

原项目还在活跃更新,所以每次push之前最好合并最新补丁,分为以下几步:

  1. 增加远程分支并fetch到本地,在主分支下rebase

    git checkout origin/master
    git remote add jane https://github.com/janeczku/calibre-web.git
    git fetch jane
    git rebase jane/master
  2. 通过git_batch_resolver.py解决翻译冲突问题,记得是保留theirs(本地版本),这点与merge正好相反,随后git rebase --continue即可完成合并。

i18n中文

花了一下午时间补全了中文翻译,提交了第一个pull requests,作者Jan火速合并到主分支,还留言了很多感谢的话,可以看出是个很负责的coder。每次更新代码都需要重新生成messages.pot以及translations文件夹,从作者的repository同步完之后也需要处理这部分

# re-generate messages.pot file
pybabel extract --no-wrap -F babel.cfg -o messages.pot cps
# merge update to old translations
pybabel update --no-wrap -i messages.pot -d cps/translations
# re-complile after complete translating
pybabel compile -d cps/translations

由于界面样式中有根据字符串长度hard coding,所以切换语言之后可能会有BUG

增加评论功能

既然注册登录完成度很高,所以第一个feature request就是评论功能,优先选择Valine 或者 Gitalk这样无后端模块,降低施工难度。兴致勃勃地去提issue,希望能得到一些指点,然而无情的被Jan拒绝🙄

既然如此,只好参考作者增加viewer的commit,依葫芦画瓢。最后还是选择Valine(依托github总是感觉有点奇怪)。评论框放在书籍详情页(detail.html),所以默认主题下,在编辑标签旁边还要新增一个详情页的链接按钮。最后,如果登录了的话还可以自动填上邮箱和用户名。

界面优化

主要是修复一些BUG

豆瓣信息更新自定义

使得可以自由选择更新哪些条目,而不是一股脑全部替换。

参考链接:

Flask-Babel 简介

化解冲突:git merge 与 git rebase 中的 ours 和 theirs