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