使用系统级字典

Working with system-level dictionaries

本文关键字:字典 系统      更新时间:2023-10-16

我一直在做一个基于qt的c++程序,叫做RoboJournal。它使用Hunspell进行拼写检查。现在,它会自动将自己的字典文件(en_US.dic)安装到用户的主文件夹中(即~/.robojournal/en_US.dic)。这在像Windows这样的操作系统上工作得很好,没有提供兼容的字典,但是有一个设计问题我想修复:

在Linux上,有几个en_US实例。这个副本显然是要在所有使用Hunspell的程序之间共享的,这意味着如果可能的话,我的程序应该使用它,而不是依赖于它自己的副本。但是,/usr/share/hunspell/中的副本需要超级用户权限才能修改;虽然这意味着用户可以读取它,但他们不能添加单词,除非程序以超级用户权限运行,或者除非我chmod文件以允许每个人都写入它。这个问题使得/usr/share/hun斯佩尔/en_us .

是否有办法让用户修改/usr/share/hunspell/en_US. xml文件在没有超级用户权限或要求他们先chmod文件的情况下创建文件?我的Debian软件包维护者说我的应用程序应该尽可能使用全局系统资源。

在这种情况下,通常加载系统默认值,然后加载用户特定的设置文件。

所以当你的程序运行时,用户忽略了一些单词,并添加了其他单词,等等,你把它保存到用户的应用程序数据目录下的字典中。

如果你真的希望你的程序将添加到系统范围的更改保存到默认字典中,你应该提示用户,如果他们想将字典更改保存到系统默认值,然后打开一个超级用户登录,或者任何你需要保存编辑到该文件的凭据,然后保存它。

或者你甚至可以把它放在,如果程序最初是作为超级用户启动的,那么它保存到系统文件夹,否则它保存到用户的应用程序目录。

QSettings中解释了我所遵循的设置和不设置的模型。

http://qt project.org/doc/qt - 4.8 -/- qsettings.html #细节

http://qt project.org/doc/qt - 4.8 -/- qsettings.html # platform-specific-notes

如果您设置了应用程序名称和组织名称,那么

QSettings将非常优雅地处理所有事情。它不会直接使用字典,但是它使用的位置/路径是有意义的。

希望对你有帮助。