LMI, etc. // Nomenclature update, etc.
This commit is contained in:
parent
8cf6272a07
commit
d8c2f668d2
|
@ -67,9 +67,9 @@ public class IME: NSObject {
|
|||
// mgrLangModel 的 loadUserPhrases 等函數在自動讀取 dataFolderPath 時,
|
||||
// 如果發現自訂目錄不可用,則會自動抹去自訂目錄設定、改採預設目錄。
|
||||
// 所以這裡不需要特別處理。
|
||||
mgrLangModel.loadUserAssociatedPhrases()
|
||||
mgrLangModel.loadUserAssociatesData()
|
||||
mgrLangModel.loadUserPhraseReplacement()
|
||||
mgrLangModel.loadUserPhrases()
|
||||
mgrLangModel.loadUserPhrasesData()
|
||||
if !userOnly {
|
||||
// mgrLangModel.loadDataModels()
|
||||
}
|
||||
|
|
|
@ -135,7 +135,7 @@ extension ctlInputMethod {
|
|||
if optionKeyPressed || !mgrPrefs.shouldAutoReloadUserDataFiles {
|
||||
menu.addItem(
|
||||
withTitle: NSLocalizedString("Reload User Phrases", comment: ""),
|
||||
action: #selector(reloadUserPhrases(_:)), keyEquivalent: ""
|
||||
action: #selector(reloadUserPhrasesData(_:)), keyEquivalent: ""
|
||||
)
|
||||
}
|
||||
|
||||
|
@ -346,7 +346,7 @@ extension ctlInputMethod {
|
|||
}
|
||||
}
|
||||
|
||||
@objc func reloadUserPhrases(_: Any?) {
|
||||
@objc func reloadUserPhrasesData(_: Any?) {
|
||||
IME.initLangModels(userOnly: true)
|
||||
}
|
||||
|
||||
|
|
|
@ -32,9 +32,11 @@ import Foundation
|
|||
// 簡體中文模式與繁體中文模式共用全字庫擴展模組,故單獨處理。
|
||||
// 塞在 LMInstantiator 內的話,每個模式都會讀入一份全字庫,會多佔用 100MB 記憶體。
|
||||
private var lmCNS = vChewing.LMCoreEX(
|
||||
reverse: true, consolidate: false, defaultScore: -11.0, forceDefaultScore: false)
|
||||
reverse: true, consolidate: false, defaultScore: -11.0, forceDefaultScore: false
|
||||
)
|
||||
private var lmSymbols = vChewing.LMCoreEX(
|
||||
reverse: true, consolidate: false, defaultScore: -13.0, forceDefaultScore: false)
|
||||
reverse: true, consolidate: false, defaultScore: -13.0, forceDefaultScore: false
|
||||
)
|
||||
|
||||
extension vChewing {
|
||||
/// LMInstantiator is a facade for managing a set of models including
|
||||
|
@ -76,18 +78,23 @@ extension vChewing {
|
|||
/// Reverse 的話,第一欄是注音,第二欄是對應的漢字,第三欄是可能的權重。
|
||||
/// 不 Reverse 的話,第一欄是漢字,第二欄是對應的注音,第三欄是可能的權重。
|
||||
var lmCore = LMCoreEX(
|
||||
reverse: false, consolidate: false, defaultScore: -9.9, forceDefaultScore: false)
|
||||
reverse: false, consolidate: false, defaultScore: -9.9, forceDefaultScore: false
|
||||
)
|
||||
var lmMisc = LMCoreEX(
|
||||
reverse: true, consolidate: false, defaultScore: -1.0, forceDefaultScore: false)
|
||||
reverse: true, consolidate: false, defaultScore: -1.0, forceDefaultScore: false
|
||||
)
|
||||
|
||||
// 聲明使用者語言模組。
|
||||
// 使用者語言模組使用多執行緒的話,可能會導致一些問題。有時間再仔細排查看看。
|
||||
var lmUserPhrases = LMCoreEX(
|
||||
reverse: true, consolidate: true, defaultScore: 0, forceDefaultScore: true)
|
||||
reverse: true, consolidate: true, defaultScore: 0, forceDefaultScore: true
|
||||
)
|
||||
var lmFiltered = LMCoreEX(
|
||||
reverse: true, consolidate: true, defaultScore: 0, forceDefaultScore: true)
|
||||
reverse: true, consolidate: true, defaultScore: 0, forceDefaultScore: true
|
||||
)
|
||||
var lmUserSymbols = LMCoreEX(
|
||||
reverse: true, consolidate: true, defaultScore: -12.0, forceDefaultScore: true)
|
||||
reverse: true, consolidate: true, defaultScore: -12.0, forceDefaultScore: true
|
||||
)
|
||||
var lmReplacements = LMReplacments()
|
||||
var lmAssociates = LMAssociates()
|
||||
|
||||
|
@ -96,7 +103,7 @@ extension vChewing {
|
|||
|
||||
// 以下這些函數命名暫時保持原樣,等弒神行動徹底結束了再調整。
|
||||
|
||||
public func isDataModelLoaded() -> Bool { lmCore.isLoaded() }
|
||||
public func isLanguageModelLoaded() -> Bool { lmCore.isLoaded() }
|
||||
public func loadLanguageModel(path: String) {
|
||||
if FileManager.default.isReadableFile(atPath: path) {
|
||||
lmCore.open(path)
|
||||
|
@ -136,7 +143,7 @@ extension vChewing {
|
|||
}
|
||||
}
|
||||
|
||||
public func loadUserPhrases(path: String, filterPath: String) {
|
||||
public func loadUserPhrasesData(path: String, filterPath: String) {
|
||||
if FileManager.default.isReadableFile(atPath: path) {
|
||||
lmUserPhrases.close()
|
||||
lmUserPhrases.open(path)
|
||||
|
@ -163,7 +170,7 @@ extension vChewing {
|
|||
}
|
||||
}
|
||||
|
||||
public func loadUserAssociatedPhrases(path: String) {
|
||||
public func loadUserAssociatesData(path: String) {
|
||||
if FileManager.default.isReadableFile(atPath: path) {
|
||||
lmAssociates.close()
|
||||
lmAssociates.open(path)
|
||||
|
@ -173,7 +180,7 @@ extension vChewing {
|
|||
}
|
||||
}
|
||||
|
||||
public func loadPhraseReplacementMap(path: String) {
|
||||
public func loadReplacementsData(path: String) {
|
||||
if FileManager.default.isReadableFile(atPath: path) {
|
||||
lmReplacements.close()
|
||||
lmReplacements.open(path)
|
||||
|
|
|
@ -99,7 +99,6 @@ extension vChewing {
|
|||
public func hasValuesFor(key: String) -> Bool {
|
||||
rangeMap[key] != nil
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -69,7 +69,7 @@ class mgrLangModel: NSObject {
|
|||
if !gLangModelCHS.isSymbolDataLoaded() {
|
||||
gLangModelCHS.loadSymbolData(path: getBundleDataPath("data-symbols"))
|
||||
}
|
||||
if !gLangModelCHT.isDataModelLoaded() {
|
||||
if !gLangModelCHT.isLanguageModelLoaded() {
|
||||
NotifierController.notify(
|
||||
message: String(
|
||||
format: "%@", NSLocalizedString("Loading CHT Core Dict...", comment: "")
|
||||
|
@ -82,7 +82,7 @@ class mgrLangModel: NSObject {
|
|||
)
|
||||
)
|
||||
}
|
||||
if !gLangModelCHS.isDataModelLoaded() {
|
||||
if !gLangModelCHS.isLanguageModelLoaded() {
|
||||
NotifierController.notify(
|
||||
message: String(
|
||||
format: "%@", NSLocalizedString("Loading CHS Core Dict...", comment: "")
|
||||
|
@ -108,7 +108,7 @@ class mgrLangModel: NSObject {
|
|||
if !gLangModelCHS.isCNSDataLoaded() {
|
||||
gLangModelCHS.loadCNSData(path: getBundleDataPath("char-kanji-cns"))
|
||||
}
|
||||
if !gLangModelCHS.isDataModelLoaded() {
|
||||
if !gLangModelCHS.isLanguageModelLoaded() {
|
||||
NotifierController.notify(
|
||||
message: String(
|
||||
format: "%@", NSLocalizedString("Loading CHS Core Dict...", comment: "")
|
||||
|
@ -131,7 +131,7 @@ class mgrLangModel: NSObject {
|
|||
if !gLangModelCHT.isCNSDataLoaded() {
|
||||
gLangModelCHT.loadCNSData(path: getBundleDataPath("char-kanji-cns"))
|
||||
}
|
||||
if !gLangModelCHT.isDataModelLoaded() {
|
||||
if !gLangModelCHT.isLanguageModelLoaded() {
|
||||
NotifierController.notify(
|
||||
message: String(
|
||||
format: "%@", NSLocalizedString("Loading CHT Core Dict...", comment: "")
|
||||
|
@ -147,12 +147,12 @@ class mgrLangModel: NSObject {
|
|||
}
|
||||
}
|
||||
|
||||
public static func loadUserPhrases() {
|
||||
gLangModelCHT.loadUserPhrases(
|
||||
public static func loadUserPhrasesData() {
|
||||
gLangModelCHT.loadUserPhrasesData(
|
||||
path: userPhrasesDataPath(InputMode.imeModeCHT),
|
||||
filterPath: excludedPhrasesDataPath(InputMode.imeModeCHT)
|
||||
)
|
||||
gLangModelCHS.loadUserPhrases(
|
||||
gLangModelCHS.loadUserPhrasesData(
|
||||
path: userPhrasesDataPath(InputMode.imeModeCHS),
|
||||
filterPath: excludedPhrasesDataPath(InputMode.imeModeCHS)
|
||||
)
|
||||
|
@ -160,20 +160,20 @@ class mgrLangModel: NSObject {
|
|||
gLangModelCHS.loadUserSymbolData(path: userSymbolDataPath(InputMode.imeModeCHS))
|
||||
}
|
||||
|
||||
public static func loadUserAssociatedPhrases() {
|
||||
gLangModelCHT.loadUserAssociatedPhrases(
|
||||
public static func loadUserAssociatesData() {
|
||||
gLangModelCHT.loadUserAssociatesData(
|
||||
path: mgrLangModel.userAssociatedPhrasesDataPath(InputMode.imeModeCHT)
|
||||
)
|
||||
gLangModelCHS.loadUserAssociatedPhrases(
|
||||
gLangModelCHS.loadUserAssociatesData(
|
||||
path: mgrLangModel.userAssociatedPhrasesDataPath(InputMode.imeModeCHS)
|
||||
)
|
||||
}
|
||||
|
||||
public static func loadUserPhraseReplacement() {
|
||||
gLangModelCHT.loadPhraseReplacementMap(
|
||||
gLangModelCHT.loadReplacementsData(
|
||||
path: mgrLangModel.phraseReplacementDataPath(InputMode.imeModeCHT)
|
||||
)
|
||||
gLangModelCHS.loadPhraseReplacementMap(
|
||||
gLangModelCHS.loadReplacementsData(
|
||||
path: mgrLangModel.phraseReplacementDataPath(InputMode.imeModeCHS)
|
||||
)
|
||||
}
|
||||
|
@ -424,7 +424,7 @@ class mgrLangModel: NSObject {
|
|||
// We use FSEventStream to monitor possible changes of the user phrase folder, hence the
|
||||
// lack of the needs of manually load data here unless FSEventStream is disabled by user.
|
||||
if !mgrPrefs.shouldAutoReloadUserDataFiles {
|
||||
loadUserPhrases()
|
||||
loadUserPhrasesData()
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue