rime / squirrel

【鼠鬚管】Rime for macOS
https://rime.im
GNU General Public License v3.0
4.54k stars 413 forks source link

同步用户数据时用户词典是如何同步的? #858

Open f1ynng8 opened 3 months ago

f1ynng8 commented 3 months ago

如下图为设置的sync_dir(在iCloud中), 我有三台mac,我在其中任何一台mac里的自造词后,点击“同步用户数据”后,在这个目录对应的id目录里的wubi86_jidian.txt确实会从那台Mac里同步过来这些自造词。

image

但是按照我之前的理解,这些自造词不应该是也会自动添加到其它id下的wubi86_jidian.txt文件里吗?

是否我对用户词典的同步有偏差? 如果用户词典不是我理解的这种同步方式,能否帮忙解释一下上图红框中各个文件的作用?我打算写个脚本来实现用户词典的合并,感谢。

lotem commented 3 months ago

*.userdb.txt 是將用戶詞典的內容與其他同步文件夾中的數據合併後導出。 YAML 配置只備份。 同步時只會更新本機對應的同步文件夾。

f1ynng8 commented 3 months ago

*.userdb.txt 是將用戶詞典的內容與其他同步文件夾中的數據合併後導出。 YAML 配置只備份。 同步時只會更新本機對應的同步文件夾。

非常感谢回复。我也认真阅读了https://github.com/rime/home/wiki/UserGuide#用戶詞典管理 这里关于同步的说明,基本了解了squireel的同步方案。

我目前通过iCloud存放各个Mac上Squirrel的同步文件。 想要实现的同步功能是: 在Mac A上添加自造词后,在Mac B上能够拥有这个自造词。

比如我在Mac A上添加自造词之后,点击“同步用户数据”,此时会在iCloud的同步目录下Mac A的对应目录里获得更新后的.userdb.txt。我之前以为只要把这个.userdb.txt文件拷贝到iCloud里Mac B同步目录里,或者拷贝到Mac B机器上的RIME目录下覆盖同名文件,然后在Mac B上“同步用户数据“即可,但是发现两种方式都无效。

后来在https://github.com/rime/home/wiki/UserGuide#用戶詞典管理 看到有个工具bin/rime_dict_manager似乎是可以导入*.userdb.txt,但是从https://github.com/rime/librime 下载后运行该工具也报错。

./rime_dict_manager list
dyld[46882]: Symbol not found: __ZNK4rime15UserDbComponentINS_7LevelDbEE9extensionEv
  Referenced from: <4EBAA0AD-CDFA-3C1A-8F91-837F42CB57F3> /Users/me/Downloads/rime-76a0a16-macOS-universal/dist/bin/rime_dict_manager
  Expected in:     <no uuid> unknown
zsh: abort      ./rime_dict_manager list

所以想请问在Mac A上添加自造词后,在Mac B上能够拥有这个自造词。这个需求的官方推荐实践是什么样的?感谢。

lotem commented 3 months ago

在Mac A上添加自造词后,在Mac B上能够拥有这个自造词。

在 A 電腦上點擊「同步」,之後在 B 電腦上點擊「同步」。

不要手動複製文件。 每臺電腦上的數據更新只寫入屬於他自己的同步文件夾,這是這套同步機制不產生文件修改衝突的關鍵。

f1ynng8 commented 3 months ago

在Mac A上添加自造词后,在Mac B上能够拥有这个自造词。

在 A 電腦上點擊「同步」,之後在 B 電腦上點擊「同步」。

不要手動複製文件。 每臺電腦上的數據更新只寫入屬於他自己的同步文件夾,這是這套同步機制不產生文件修改衝突的關鍵。

明白了,非常感谢。 我之前的理解也是这么操作应该就可以实现Mac A和Mac B之间字典的同步。 但是实际上我仔细观察过,几台Mac各自点 “同步用户数据”后,都只是把各自的自造词添加到了iCloud里各自的文件夹里,并没有实现设备间的字典同步。

比如Mac A上我自造了词,点击“同步用户数据”,此时观察到iCloud里Mac A的目录里的wubi86_jidian.txt确实有了这些自造词(目录下其它文件包括yaml文件都没这些自造词),但是iCloud上Mac B的目录里的wubi86_jidian.txt和其它yaml文件是没有这些自造词的。 即使在Mac B设备上点击“同步用户数据”,iCloud上Mac B的目录里的wubi86_jidian.txt和其它yaml文件也还是没有这些自造词的。

所以我才以为需要自己在iCloud的目录里手动拷贝合并wubi86.jidian.txt文件。

现在看来可能是配置或者是什么其它原因导致同步功能没有正常工作。

lotem commented 3 months ago

wubi86_jidian.userdb.txt 這個是用戶詞典的導出文件。只有用戶詞典會合併不同電腦上的數據。

wubi86_jidian.txt 這個文本文件功能不清楚,看方案裏怎樣定義。這類文本文件同步過程只會備份。

f1ynng8 commented 2 months ago

感谢,目前的配置是在造词后只更新了wubi86_jidian.txt但是没有在wubi86_jidian.userdb.txt添加内容,可能确实是配置问题。

loveminimal commented 1 month ago

刚试了一下,

  1. 在 PC1 造词后,点击同步;
  2. 之后,在 PC2 上点击同步,即可使用在 PC1 的造词。
  3. 另,手机上使用同文输入法,也是点击同步后,即可以使用 PC1 或 PC2 上的造词。

我是用坚果云做的同步,
怎么说呢,同步后有时候要等一会儿才可以,
手机上的同文输入法同步有可能需要多点几次(有定时同步功能)。

PS:我是多台设备使用的同一个 installation_id ,
如此只需要调整相应的 sync_dir ,就可以使其共享同一个 RimeSync 了。

详见 https://github.com/loveminimal/rime-jk/blob/master/installation.yaml#L7

f1ynng8 commented 1 month ago

刚试了一下,

  1. 在 PC1 造词后,点击同步;
  2. 之后,在 PC2 上点击同步,即可使用在 PC1 的造词。
  3. 另,手机上使用同文输入法,也是点击同步后,即可以使用 PC1 或 PC2 上的造词。

我是用坚果云做的同步, 怎么说呢,同步后有时候要等一会儿才可以, 手机上的同文输入法同步有可能需要多点几次(有定时同步功能)。

PS:我是多台设备使用的同一个 installation_id , 如此只需要调整相应的 sync_dir ,就可以使其共享同一个 RimeSync 了。

详见 https://github.com/loveminimal/rime-jk/blob/master/installation.yaml#L7

感谢,我应该确实是配置上出问题了,但是一直没找到wubi86_jidian.userdb.txt这个文件不更新的原因。方便分享一下您的配置文件吗?

loveminimal commented 1 month ago

刚试了一下,

  1. 在 PC1 造词后,点击同步;
  2. 之后,在 PC2 上点击同步,即可使用在 PC1 的造词。
  3. 另,手机上使用同文输入法,也是点击同步后,即可以使用 PC1 或 PC2 上的造词。

我是用坚果云做的同步, 怎么说呢,同步后有时候要等一会儿才可以, 手机上的同文输入法同步有可能需要多点几次(有定时同步功能)。 PS:我是多台设备使用的同一个 installation_id , 如此只需要调整相应的 sync_dir ,就可以使其共享同一个 RimeSync 了。 详见 https://github.com/loveminimal/rime-jk/blob/master/installation.yaml#L7

感谢,我应该确实是配置上出问题了,但是一直没找到wubi86_jidian.userdb.txt这个文件不更新的原因。方便分享一下您的配置文件吗?

我使用的是自己定制的 loveminimal/rime-jk,相应用户词典是 rime_jk.userdb ,如下:

image

同步之后,生成的词典文本文件为 rime_jk.userdb.txt

理论上,只要你的用户目录出现了 wubi86_jidian.userdb 这个动态的用户词典,同步后就会生成相应的 *.txt 文件。

f1ynng8 commented 1 month ago

@loveminimal 感谢,我来研究一下