Add OpenCC chinese converter
This commit is contained in:
parent
6104389aab
commit
a475301533
@ -79,10 +79,10 @@ dependencies {
|
||||
implementation "com.squareup.okhttp3:okhttp:$okHttpVersion"
|
||||
implementation "com.squareup.okhttp3:okhttp-dnsoverhttps:$okHttpVersion"
|
||||
implementation 'dnsjava:dnsjava:3.3.1'
|
||||
implementation 'org.dizitart:nitrite:3.4.2'
|
||||
implementation 'org.dizitart:nitrite:3.4.3'
|
||||
|
||||
implementation 'cn.hutool:hutool-core:5.5.2'
|
||||
implementation 'cn.hutool:hutool-crypto:5.5.2'
|
||||
implementation 'cn.hutool:hutool-core:5.5.4'
|
||||
implementation 'cn.hutool:hutool-crypto:5.5.4'
|
||||
|
||||
implementation 'com.jakewharton:process-phoenix:2.0.0'
|
||||
|
||||
@ -98,6 +98,10 @@ dependencies {
|
||||
releaseImplementation "com.google.firebase:firebase-crashlytics:$crashlyticsVersion"
|
||||
releaseImplementation "com.google.android.play:core:$playCoreVersion"
|
||||
|
||||
testImplementation 'junit:junit:4.13.1'
|
||||
testImplementation 'androidx.test:core:1.3.0'
|
||||
testImplementation "org.robolectric:robolectric:4.4"
|
||||
|
||||
coreLibraryDesugaring 'com.android.tools:desugar_jdk_libs:1.1.1'
|
||||
|
||||
}
|
||||
@ -184,6 +188,10 @@ android {
|
||||
jvmTarget = JavaVersion.VERSION_1_8.toString()
|
||||
}
|
||||
|
||||
testOptions {
|
||||
unitTests.includeAndroidResources = true
|
||||
}
|
||||
|
||||
signingConfigs {
|
||||
def keystorePwd = null
|
||||
def alias = null
|
||||
|
63
TMessagesProj/src/main/assets/dictionary/HKVariants.txt
Normal file
63
TMessagesProj/src/main/assets/dictionary/HKVariants.txt
Normal file
@ -0,0 +1,63 @@
|
||||
僞 偽
|
||||
兌 兑
|
||||
叄 叁
|
||||
只 只 衹
|
||||
啓 啓 啟
|
||||
喫 吃
|
||||
囪 囱
|
||||
妝 妝 粧
|
||||
媼 媪
|
||||
嬀 媯
|
||||
悅 悦
|
||||
慍 愠
|
||||
戶 户
|
||||
挩 捝
|
||||
搵 揾
|
||||
擡 抬
|
||||
敓 敚
|
||||
敘 敍 敘
|
||||
柺 枴
|
||||
梲 棁
|
||||
棱 稜 棱
|
||||
榲 榅
|
||||
檯 枱
|
||||
氳 氲
|
||||
涗 涚
|
||||
溫 温
|
||||
溼 濕
|
||||
潙 溈
|
||||
潨 潀
|
||||
熅 煴
|
||||
爲 為
|
||||
癡 痴
|
||||
皁 皂
|
||||
祕 秘
|
||||
稅 税
|
||||
竈 灶
|
||||
糉 粽 糉 糭
|
||||
縕 緼
|
||||
纔 才
|
||||
脣 唇
|
||||
脫 脱
|
||||
膃 腽
|
||||
臥 卧
|
||||
臺 台
|
||||
菸 煙
|
||||
蒕 蒀
|
||||
蔥 葱
|
||||
蔿 蒍
|
||||
蘊 藴
|
||||
蛻 蜕
|
||||
衆 眾
|
||||
衛 衞
|
||||
覈 核
|
||||
說 説
|
||||
踊 踴
|
||||
轀 輼
|
||||
醞 醖
|
||||
鉢 缽
|
||||
鉤 鈎
|
||||
銳 鋭
|
||||
鍼 針
|
||||
閱 閲
|
||||
鰮 鰛
|
64
TMessagesProj/src/main/assets/dictionary/HKVariantsRev.txt
Normal file
64
TMessagesProj/src/main/assets/dictionary/HKVariantsRev.txt
Normal file
@ -0,0 +1,64 @@
|
||||
偽 僞
|
||||
兑 兌
|
||||
卧 臥
|
||||
叁 叄
|
||||
台 臺 台
|
||||
吃 喫 吃
|
||||
唇 脣
|
||||
啟 啓
|
||||
囱 囪
|
||||
媪 媼
|
||||
媯 嬀
|
||||
悦 悅
|
||||
愠 慍
|
||||
户 戶
|
||||
才 才 纔
|
||||
抬 擡
|
||||
捝 挩
|
||||
揾 搵
|
||||
敍 敘
|
||||
敚 敓
|
||||
枱 檯
|
||||
枴 柺
|
||||
核 核 覈
|
||||
棁 梲
|
||||
榅 榲
|
||||
氲 氳
|
||||
涚 涗
|
||||
温 溫
|
||||
溈 潙
|
||||
潀 潨
|
||||
濕 溼
|
||||
灶 竈
|
||||
為 爲
|
||||
煙 煙 菸
|
||||
煴 熅
|
||||
痴 癡
|
||||
皂 皁
|
||||
眾 衆
|
||||
秘 祕
|
||||
税 稅
|
||||
稜 棱
|
||||
粧 妝
|
||||
粽 糉
|
||||
糭 糉
|
||||
緼 縕
|
||||
缽 鉢
|
||||
脱 脫
|
||||
腽 膃
|
||||
葱 蔥
|
||||
蒀 蒕
|
||||
蒍 蔿
|
||||
藴 蘊
|
||||
蜕 蛻
|
||||
衞 衛
|
||||
衹 只
|
||||
説 說
|
||||
踴 踊
|
||||
輼 轀
|
||||
醖 醞
|
||||
針 鍼
|
||||
鈎 鉤
|
||||
鋭 銳
|
||||
閲 閱
|
||||
鰛 鰮
|
@ -0,0 +1,156 @@
|
||||
一口吃個 一口喫個
|
||||
一口吃成 一口喫成
|
||||
一家三口 一家三口
|
||||
一家五口 一家五口
|
||||
一家六口 一家六口
|
||||
一家四口 一家四口
|
||||
七星巖 七星巖
|
||||
世胄 世胄
|
||||
介胄 介冑
|
||||
傅巖 傅巖
|
||||
免胄 免冑
|
||||
冠胄 冠冑
|
||||
千巖競秀 千巖競秀
|
||||
千巖萬壑 千巖萬壑
|
||||
千巖萬谷 千巖萬谷
|
||||
口吃 口吃
|
||||
台山 台山
|
||||
台州 台州
|
||||
台州地區 台州地區
|
||||
台州市 台州市
|
||||
吃口 喫口 吃口
|
||||
吃口令 吃口令
|
||||
吃口飯 喫口飯
|
||||
吃吃 喫喫 吃吃
|
||||
吃子 喫子 吃子
|
||||
名胄 名胄
|
||||
國胄 國胄
|
||||
圍巖 圍巖
|
||||
地胄 地胄
|
||||
壓胄子 壓冑子
|
||||
士胄 士胄
|
||||
大巖桐 大巖桐
|
||||
天台女 天台女
|
||||
天台宗 天台宗
|
||||
天台山 天台山
|
||||
天台縣 天台縣
|
||||
天潢貴胄 天潢貴胄
|
||||
奇巖 奇巖
|
||||
寶胄 寶胄
|
||||
小巖洞 小巖洞
|
||||
岫巖縣 岫巖縣
|
||||
峯巖 峯巖
|
||||
嵌巖 嵌巖
|
||||
巉巖 巉巖
|
||||
巖壁 巖壁
|
||||
巖居 巖居
|
||||
巖居穴處 巖居穴處
|
||||
巖居谷飲 巖居谷飲
|
||||
巖岸 巖岸
|
||||
巖巉 巖巉
|
||||
巖巖 巖巖
|
||||
巖徼 巖徼
|
||||
巖手縣 巖手縣
|
||||
巖村 巖村
|
||||
巖洞 巖洞
|
||||
巖流圈 巖流圈
|
||||
巖牆 巖牆
|
||||
巖牆之下 巖牆之下
|
||||
巖畫 巖畫
|
||||
巖穴 巖穴
|
||||
巖穴之士 巖穴之士
|
||||
巖薔薇 巖薔薇
|
||||
巖邑 巖邑
|
||||
巖郎 巖郎
|
||||
巖阻 巖阻
|
||||
巖陛 巖陛
|
||||
帝胄 帝胄
|
||||
幽巖 幽巖
|
||||
幽棲巖谷 幽棲巖谷
|
||||
張口 張口
|
||||
懸巖 懸巖
|
||||
懸巖峭壁 懸巖峭壁
|
||||
懸胄 懸冑
|
||||
攀巖 攀巖
|
||||
支胄 支胄
|
||||
教胄 教胄
|
||||
景胄 景胄
|
||||
望胄 望胄
|
||||
末胄 末胄
|
||||
村胄 村胄
|
||||
枕巖漱流 枕巖漱流
|
||||
枝胄 枝胄
|
||||
氏胄 氏胄
|
||||
洪胄 洪胄
|
||||
浙江天台縣 浙江天台縣
|
||||
清胄 清胄
|
||||
灰巖殘丘 灰巖殘丘
|
||||
玄胄 玄胄
|
||||
甲胄 甲冑
|
||||
甲胄魚類 甲冑魚類
|
||||
皇胄 皇胄
|
||||
石灰巖洞 石灰巖洞
|
||||
神胄 神胄
|
||||
簪纓世胄 簪纓世胄
|
||||
系胄 系胄
|
||||
紅巖 紅巖
|
||||
絕巖 絕巖
|
||||
緒胄 緒胄
|
||||
纂胄 纂胄
|
||||
胃口 胃口
|
||||
胄嗣 胄嗣
|
||||
胄子 胄子
|
||||
胄序 胄序
|
||||
胄族 胄族
|
||||
胄甲 冑甲
|
||||
胄監 胄監
|
||||
胄科 冑科
|
||||
胄緒 胄緒
|
||||
胄胤 胄胤
|
||||
胄裔 胄裔
|
||||
胄裔繁衍 胄裔繁衍
|
||||
胄閥 胄閥
|
||||
胡雪巖 胡雪巖
|
||||
胤胄 胤胄
|
||||
苗胄 苗胄
|
||||
英胄 英胄
|
||||
華胄 華胄
|
||||
血胄 血胄
|
||||
裔胄 裔胄
|
||||
訓胄 訓胄
|
||||
試胄 試胄
|
||||
豪門貴胄 豪門貴胄
|
||||
貝胄 貝冑
|
||||
貴胄 貴胄
|
||||
賢胄 賢胄
|
||||
蹇吃 蹇吃
|
||||
躬擐甲胄 躬擐甲冑
|
||||
遐胄 遐胄
|
||||
遙胄 遙胄
|
||||
遙遙華胄 遙遙華胄
|
||||
遠胄 遠胄
|
||||
遺胄 遺胄
|
||||
鄧艾吃 鄧艾吃
|
||||
重巖疊嶂 重巖疊嶂
|
||||
金胄 金胄
|
||||
鎧胄 鎧冑
|
||||
鑿巖 鑿巖
|
||||
門胄 門胄
|
||||
開口 開口
|
||||
雲巖區 雲巖區
|
||||
非層巖 非層巖
|
||||
韓侂胄 韓侂冑
|
||||
飮胄 飮冑
|
||||
骨巖巖 骨巖巖
|
||||
高胄 高胄
|
||||
魚胄 魚冑
|
||||
鮮胄 鮮胄
|
||||
鴻胄 鴻胄
|
||||
黃巖區 黃巖區
|
||||
黃巖島 黃巖島
|
||||
黃炎貴胄 黃炎貴胄
|
||||
齒胄 齒胄
|
||||
龍巖 龍巖
|
||||
龍巖市 龍巖市
|
||||
龍巖村 龍巖村
|
||||
龍胄 龍胄
|
@ -0,0 +1,6 @@
|
||||
両 兩 輛
|
||||
弁 辨 辯 瓣 辦 弁
|
||||
御 御 禦
|
||||
欠 缺 欠
|
||||
糸 絲 糸
|
||||
芸 藝 芸
|
176
TMessagesProj/src/main/assets/dictionary/JPShinjitaiPhrases.txt
Normal file
176
TMessagesProj/src/main/assets/dictionary/JPShinjitaiPhrases.txt
Normal file
@ -0,0 +1,176 @@
|
||||
一獲千金 一攫千金
|
||||
丁寧 叮嚀
|
||||
丁重 鄭重
|
||||
三差路 三叉路
|
||||
世論 輿論
|
||||
亜鈴 啞鈴
|
||||
交差 交叉
|
||||
供宴 饗宴
|
||||
俊馬 駿馬
|
||||
保塁 堡壘
|
||||
個条書 箇条書
|
||||
偏平 扁平
|
||||
停泊 碇泊
|
||||
優俊 優駿
|
||||
先兵 尖兵
|
||||
先鋭 尖鋭
|
||||
共役 共軛
|
||||
冗舌 饒舌
|
||||
凶器 兇器
|
||||
削岩 鑿岩
|
||||
包丁 庖丁
|
||||
包帯 繃帯
|
||||
区画 區劃
|
||||
厳然 儼然
|
||||
友宜 友誼
|
||||
反乱 叛乱
|
||||
収集 蒐集
|
||||
叙情 抒情
|
||||
台頭 擡頭
|
||||
合弁 合辦
|
||||
喜遊曲 嬉遊曲
|
||||
嘆願 歎願
|
||||
回転 廻転
|
||||
回遊 回游
|
||||
奉持 捧持
|
||||
委縮 萎縮
|
||||
展転 輾轉
|
||||
希少 稀少
|
||||
幻惑 眩惑
|
||||
広範 廣汎
|
||||
広野 曠野
|
||||
廃虚 廢墟
|
||||
建坪率 建蔽率
|
||||
弁当 辨當
|
||||
弁膜 瓣膜
|
||||
弁護 辯護
|
||||
弁髪 辮髮
|
||||
弦歌 絃歌
|
||||
恩義 恩誼
|
||||
意向 意嚮
|
||||
慰謝料 慰藉料
|
||||
憶断 臆断
|
||||
憶病 臆病
|
||||
戦没 戰歿
|
||||
扇情 煽情
|
||||
手帳 手帖
|
||||
技量 伎倆
|
||||
抜粋 抜萃
|
||||
披歴 披瀝
|
||||
抵触 牴触
|
||||
抽選 抽籤
|
||||
拘引 勾引
|
||||
拠出 醵出
|
||||
拠金 醵金
|
||||
掘削 掘鑿
|
||||
控除 扣除
|
||||
援護 掩護
|
||||
放棄 抛棄
|
||||
散水 撒水
|
||||
敬謙 敬虔
|
||||
敷延 敷衍
|
||||
断固 断乎
|
||||
族生 簇生
|
||||
昇叙 陞敘
|
||||
暖房 煖房
|
||||
暗唱 暗誦
|
||||
暗夜 闇夜
|
||||
暴露 曝露
|
||||
枯渇 涸渇
|
||||
格好 恰好
|
||||
格幅 恰幅
|
||||
棄損 毀損
|
||||
模索 摸索
|
||||
橋頭保 橋頭堡
|
||||
欠缺 欠缺
|
||||
死体 屍體
|
||||
殿部 臀部
|
||||
母指 拇指
|
||||
気迫 気魄
|
||||
決別 訣別
|
||||
決壊 決潰
|
||||
沈殿 沈澱
|
||||
油送船 油槽船
|
||||
波乱 波瀾
|
||||
注釈 註釋
|
||||
洗浄 洗滌 洗浄
|
||||
活発 活潑
|
||||
浸透 滲透
|
||||
浸食 浸蝕
|
||||
消却 銷卻
|
||||
混然 渾然
|
||||
湾曲 彎曲
|
||||
溶接 熔接
|
||||
漁労 漁撈
|
||||
漂然 飄然
|
||||
激高 激昂
|
||||
火炎 火焰
|
||||
焦燥 焦躁
|
||||
班点 斑点
|
||||
留飲 溜飲
|
||||
略奪 掠奪
|
||||
疎通 疏通
|
||||
発酵 醱酵
|
||||
白亜 白堊
|
||||
相克 相剋
|
||||
知恵 智慧
|
||||
破棄 破毀
|
||||
確固 確乎
|
||||
禁固 禁錮
|
||||
符丁 符牒
|
||||
粉装 扮装
|
||||
紫班 紫斑
|
||||
終息 終熄
|
||||
総合 綜合
|
||||
編集 編輯
|
||||
義援 義捐
|
||||
耕運機 耕耘機
|
||||
肝心 肝腎
|
||||
肩甲骨 肩胛骨
|
||||
背徳 悖德
|
||||
脈拍 脈搏
|
||||
膨張 膨脹
|
||||
芳純 芳醇
|
||||
英知 叡智
|
||||
蒸留 蒸溜
|
||||
薫蒸 燻蒸
|
||||
薫製 燻製
|
||||
衣装 衣裳
|
||||
衰退 衰退 衰頽
|
||||
裕然 悠然
|
||||
補佐 輔佐
|
||||
訓戒 訓誡
|
||||
試練 試煉
|
||||
詭弁 詭辯
|
||||
講和 媾和
|
||||
象眼 象嵌
|
||||
貫録 貫禄
|
||||
買弁 買辦
|
||||
賛辞 讚辭
|
||||
踏襲 蹈襲
|
||||
車両 車輛
|
||||
転倒 顛倒
|
||||
輪郭 輪廓
|
||||
退色 褪色
|
||||
途絶 杜絶
|
||||
連係 連繫
|
||||
連合 聯合
|
||||
選考 銓衡
|
||||
酢酸 醋酸
|
||||
野卑 野鄙
|
||||
鉱石 礦石
|
||||
間欠 間歇
|
||||
関数 函數
|
||||
防御 防禦
|
||||
険阻 嶮岨
|
||||
障壁 牆壁
|
||||
障害 障礙
|
||||
隠滅 湮滅
|
||||
集落 聚落
|
||||
雇用 雇傭
|
||||
風諭 諷喩
|
||||
飛語 蜚語
|
||||
香典 香奠
|
||||
骨格 骨骼
|
||||
高進 亢進
|
||||
鳥観 鳥瞰
|
367
TMessagesProj/src/main/assets/dictionary/JPVariants.txt
Normal file
367
TMessagesProj/src/main/assets/dictionary/JPVariants.txt
Normal file
@ -0,0 +1,367 @@
|
||||
乘 乗
|
||||
亂 乱
|
||||
亙 亘
|
||||
亞 亜
|
||||
佛 仏
|
||||
來 来
|
||||
假 仮
|
||||
傳 伝
|
||||
僞 偽
|
||||
價 価
|
||||
儉 倹
|
||||
兒 児
|
||||
內 内
|
||||
兩 両
|
||||
剎 刹
|
||||
剩 剰
|
||||
劍 剣
|
||||
劑 剤
|
||||
勞 労
|
||||
勳 勲
|
||||
勵 励
|
||||
勸 勧
|
||||
勻 匀
|
||||
區 区
|
||||
卷 巻
|
||||
卻 却
|
||||
參 参
|
||||
吳 呉
|
||||
咒 呪
|
||||
啞 唖
|
||||
單 単
|
||||
噓 嘘
|
||||
嚙 噛
|
||||
嚴 厳
|
||||
囑 嘱
|
||||
圈 圏
|
||||
國 国
|
||||
圍 囲
|
||||
圓 円
|
||||
圖 図
|
||||
團 団
|
||||
增 増
|
||||
墮 堕
|
||||
壓 圧
|
||||
壘 塁
|
||||
壞 壊
|
||||
壤 壌
|
||||
壯 壮
|
||||
壹 壱
|
||||
壽 寿
|
||||
奧 奥
|
||||
奬 奨
|
||||
妝 粧
|
||||
孃 嬢
|
||||
學 学
|
||||
寢 寝
|
||||
實 実
|
||||
寫 写
|
||||
寬 寛
|
||||
寶 宝
|
||||
將 将
|
||||
專 専
|
||||
對 対
|
||||
屆 届
|
||||
屬 属
|
||||
峯 峰
|
||||
峽 峡
|
||||
嶽 岳
|
||||
巖 巌
|
||||
巢 巣
|
||||
帶 帯
|
||||
廁 厠
|
||||
廢 廃
|
||||
廣 広
|
||||
廳 庁
|
||||
彈 弾
|
||||
彌 弥
|
||||
彎 弯
|
||||
彥 彦
|
||||
徑 径
|
||||
從 従
|
||||
徵 徴
|
||||
德 徳
|
||||
恆 恒
|
||||
悅 悦
|
||||
惠 恵
|
||||
惡 悪
|
||||
惱 悩
|
||||
慘 惨
|
||||
應 応
|
||||
懷 懐
|
||||
戀 恋
|
||||
戰 戦
|
||||
戲 戯
|
||||
戶 戸
|
||||
戾 戻
|
||||
拂 払
|
||||
拔 抜
|
||||
拜 拝
|
||||
挾 挟
|
||||
插 挿
|
||||
揭 掲
|
||||
搔 掻
|
||||
搖 揺
|
||||
搜 捜
|
||||
摑 掴
|
||||
擇 択
|
||||
擊 撃
|
||||
擔 担
|
||||
據 拠
|
||||
擴 拡
|
||||
攝 摂
|
||||
攪 撹
|
||||
收 収
|
||||
效 効
|
||||
敕 勅
|
||||
敘 叙
|
||||
數 数
|
||||
斷 断
|
||||
晉 晋
|
||||
晚 晩
|
||||
晝 昼
|
||||
暨 曁
|
||||
曆 暦
|
||||
曉 暁
|
||||
曾 曽
|
||||
會 会
|
||||
枡 桝
|
||||
查 査
|
||||
條 条
|
||||
棧 桟
|
||||
棱 稜 棱
|
||||
榆 楡
|
||||
榮 栄
|
||||
樂 楽
|
||||
樓 楼
|
||||
樞 枢
|
||||
樣 様
|
||||
橫 横
|
||||
檢 検
|
||||
櫻 桜
|
||||
權 権
|
||||
歐 欧
|
||||
歡 歓
|
||||
步 歩
|
||||
歲 歳
|
||||
歷 歴
|
||||
歸 帰
|
||||
殘 残
|
||||
殼 殻
|
||||
毆 殴
|
||||
每 毎
|
||||
氣 気
|
||||
污 汚
|
||||
沒 没
|
||||
涉 渉
|
||||
淚 涙
|
||||
淨 浄
|
||||
淺 浅
|
||||
渴 渇
|
||||
溌 潑
|
||||
溪 渓
|
||||
溫 温
|
||||
溼 湿
|
||||
滯 滞
|
||||
滿 満
|
||||
潛 潜
|
||||
澀 渋
|
||||
澤 沢
|
||||
濟 済
|
||||
濤 涛
|
||||
濱 浜
|
||||
濾 沪
|
||||
瀧 滝
|
||||
瀨 瀬
|
||||
灣 湾
|
||||
焔 焰
|
||||
燈 灯
|
||||
燒 焼
|
||||
營 営
|
||||
爐 炉
|
||||
爭 争
|
||||
爲 為
|
||||
牀 床
|
||||
犧 犠
|
||||
狀 状
|
||||
狹 狭
|
||||
獨 独
|
||||
獵 猟
|
||||
獸 獣
|
||||
獻 献
|
||||
瓣 弁
|
||||
產 産
|
||||
畫 画
|
||||
當 当
|
||||
疊 畳
|
||||
疎 疏
|
||||
痹 痺
|
||||
瘦 痩
|
||||
癡 痴
|
||||
發 発
|
||||
皋 皐
|
||||
盜 盗
|
||||
盡 尽
|
||||
碎 砕
|
||||
祕 秘
|
||||
祿 禄
|
||||
禦 御
|
||||
禪 禅
|
||||
禮 礼
|
||||
禱 祷
|
||||
稅 税
|
||||
稱 称
|
||||
稻 稲
|
||||
穎 頴
|
||||
穗 穂
|
||||
穩 穏
|
||||
穰 穣
|
||||
竃 竈
|
||||
竊 窃
|
||||
粹 粋
|
||||
糉 粽
|
||||
絕 絶
|
||||
絲 糸
|
||||
經 経
|
||||
綠 緑
|
||||
緖 緒
|
||||
緣 縁
|
||||
縣 県
|
||||
縱 縦
|
||||
總 総
|
||||
繋 繫
|
||||
繡 繍
|
||||
繩 縄
|
||||
繪 絵
|
||||
繼 継
|
||||
續 続
|
||||
纔 才
|
||||
纖 繊
|
||||
缺 欠
|
||||
罐 缶
|
||||
羣 群
|
||||
聯 連
|
||||
聰 聡
|
||||
聲 声
|
||||
聽 聴
|
||||
肅 粛
|
||||
脣 唇
|
||||
脫 脱
|
||||
腦 脳
|
||||
腳 脚
|
||||
膽 胆
|
||||
臟 臓
|
||||
臺 台
|
||||
與 与
|
||||
舉 挙
|
||||
舊 旧
|
||||
舍 舎
|
||||
荔 茘
|
||||
莊 荘
|
||||
莖 茎
|
||||
菸 煙
|
||||
萊 莱
|
||||
萬 万
|
||||
蔣 蒋
|
||||
蔥 葱
|
||||
薰 薫
|
||||
藏 蔵
|
||||
藝 芸
|
||||
藥 薬
|
||||
蘆 芦
|
||||
處 処
|
||||
虛 虚
|
||||
號 号
|
||||
螢 蛍
|
||||
蟲 虫
|
||||
蠟 蝋
|
||||
蠶 蚕
|
||||
蠻 蛮
|
||||
裝 装
|
||||
覺 覚
|
||||
覽 覧
|
||||
觀 観
|
||||
觸 触
|
||||
說 説
|
||||
謠 謡
|
||||
證 証
|
||||
譯 訳
|
||||
譽 誉
|
||||
讀 読
|
||||
變 変
|
||||
讓 譲
|
||||
豐 豊
|
||||
豫 予
|
||||
貓 猫
|
||||
貳 弐
|
||||
賣 売
|
||||
賴 頼
|
||||
贊 賛
|
||||
贗 贋
|
||||
踐 践
|
||||
輕 軽
|
||||
輛 輌
|
||||
轉 転
|
||||
辨 弁
|
||||
辭 辞
|
||||
辯 弁
|
||||
遞 逓
|
||||
遥 遙
|
||||
遲 遅
|
||||
邊 辺
|
||||
鄉 郷
|
||||
酢 醋
|
||||
醉 酔
|
||||
醗 醱
|
||||
醫 医
|
||||
醬 醤
|
||||
釀 醸
|
||||
釋 釈
|
||||
鋪 舗
|
||||
錄 録
|
||||
錢 銭
|
||||
鍊 錬
|
||||
鐵 鉄
|
||||
鑄 鋳
|
||||
鑛 鉱
|
||||
閱 閲
|
||||
關 関
|
||||
陷 陥
|
||||
隨 随
|
||||
險 険
|
||||
隱 隠
|
||||
雙 双
|
||||
雜 雑
|
||||
雞 鶏
|
||||
霸 覇
|
||||
靈 霊
|
||||
靜 静
|
||||
顏 顔
|
||||
顯 顕
|
||||
餘 余
|
||||
騷 騒
|
||||
驅 駆
|
||||
驗 験
|
||||
驛 駅
|
||||
髓 髄
|
||||
體 体
|
||||
髮 髪
|
||||
鬥 闘
|
||||
鱉 鼈
|
||||
鷗 鴎
|
||||
鹼 鹸
|
||||
鹽 塩
|
||||
麥 麦
|
||||
麪 麺
|
||||
麴 麹
|
||||
黃 黄
|
||||
黑 黒
|
||||
默 黙
|
||||
點 点
|
||||
黨 党
|
||||
齊 斉
|
||||
齋 斎
|
||||
齒 歯
|
||||
齡 齢
|
||||
龍 竜
|
||||
龜 亀
|
366
TMessagesProj/src/main/assets/dictionary/JPVariantsRev.txt
Normal file
366
TMessagesProj/src/main/assets/dictionary/JPVariantsRev.txt
Normal file
@ -0,0 +1,366 @@
|
||||
万 万 萬
|
||||
与 與
|
||||
両 兩
|
||||
乗 乘
|
||||
乱 亂
|
||||
亀 龜
|
||||
予 予 豫
|
||||
争 爭
|
||||
亘 亙
|
||||
亜 亞
|
||||
仏 佛
|
||||
仮 假
|
||||
会 會
|
||||
伝 傳
|
||||
体 體
|
||||
余 余 餘
|
||||
価 價
|
||||
倹 儉
|
||||
偽 僞
|
||||
児 兒
|
||||
党 黨
|
||||
内 內
|
||||
円 圓
|
||||
写 寫
|
||||
処 處
|
||||
刹 剎
|
||||
剣 劍
|
||||
剤 劑
|
||||
剰 剩
|
||||
励 勵
|
||||
労 勞
|
||||
効 效
|
||||
勅 敕
|
||||
勧 勸
|
||||
勲 勳
|
||||
匀 勻
|
||||
区 區
|
||||
医 醫
|
||||
単 單
|
||||
却 卻
|
||||
厠 廁
|
||||
厳 嚴
|
||||
参 參
|
||||
双 雙
|
||||
収 收
|
||||
叙 敘
|
||||
台 台 臺
|
||||
号 號
|
||||
呉 吳
|
||||
呪 咒
|
||||
唇 脣
|
||||
唖 啞
|
||||
営 營
|
||||
嘘 噓
|
||||
嘱 囑
|
||||
噛 嚙
|
||||
団 團
|
||||
囲 圍
|
||||
図 圖
|
||||
国 國
|
||||
圏 圈
|
||||
圧 壓
|
||||
堕 墮
|
||||
塁 壘
|
||||
塩 鹽
|
||||
増 增
|
||||
壊 壞
|
||||
壌 壤
|
||||
壮 壯
|
||||
声 聲
|
||||
壱 壹
|
||||
売 賣
|
||||
変 變
|
||||
奥 奧
|
||||
奨 奬
|
||||
嬢 孃
|
||||
学 學
|
||||
宝 寶
|
||||
実 實
|
||||
寛 寬
|
||||
寝 寢
|
||||
対 對
|
||||
寿 壽
|
||||
専 專
|
||||
将 將
|
||||
尽 盡
|
||||
届 屆
|
||||
属 屬
|
||||
岳 嶽
|
||||
峡 峽
|
||||
峰 峯
|
||||
巌 巖
|
||||
巣 巢
|
||||
巻 卷
|
||||
帯 帶
|
||||
帰 歸
|
||||
庁 廳
|
||||
広 廣
|
||||
床 牀
|
||||
廃 廢
|
||||
弁 瓣 辨 辯
|
||||
弐 貳
|
||||
弥 彌
|
||||
弯 彎
|
||||
弾 彈
|
||||
当 當
|
||||
彦 彥
|
||||
径 徑
|
||||
従 從
|
||||
御 禦
|
||||
徳 德
|
||||
徴 徵
|
||||
応 應
|
||||
恋 戀
|
||||
恒 恆
|
||||
恵 惠
|
||||
悦 悅
|
||||
悩 惱
|
||||
悪 惡
|
||||
惨 慘
|
||||
懐 懷
|
||||
戦 戰
|
||||
戯 戲
|
||||
戸 戶
|
||||
戻 戾
|
||||
才 才 纔
|
||||
払 拂
|
||||
抜 拔
|
||||
択 擇
|
||||
担 擔
|
||||
拝 拜
|
||||
拠 據
|
||||
拡 擴
|
||||
挙 舉
|
||||
挟 挾
|
||||
挿 插
|
||||
捜 搜
|
||||
掲 揭
|
||||
掴 摑
|
||||
掻 搔
|
||||
揺 搖
|
||||
摂 攝
|
||||
撃 擊
|
||||
撹 攪
|
||||
数 數
|
||||
斉 齊
|
||||
斎 齋
|
||||
断 斷
|
||||
旧 舊
|
||||
昼 晝
|
||||
晋 晉
|
||||
晩 晚
|
||||
暁 曉
|
||||
暦 曆
|
||||
曁 暨
|
||||
曽 曾
|
||||
条 條
|
||||
来 來
|
||||
枢 樞
|
||||
査 查
|
||||
栄 榮
|
||||
桜 櫻
|
||||
桝 枡
|
||||
桟 棧
|
||||
棱 棱
|
||||
検 檢
|
||||
楡 榆
|
||||
楼 樓
|
||||
楽 樂
|
||||
様 樣
|
||||
権 權
|
||||
横 橫
|
||||
欠 欠 缺
|
||||
欧 歐
|
||||
歓 歡
|
||||
歩 步
|
||||
歯 齒
|
||||
歳 歲
|
||||
歴 歷
|
||||
残 殘
|
||||
殴 毆
|
||||
殻 殼
|
||||
毎 每
|
||||
気 氣
|
||||
汚 污
|
||||
没 沒
|
||||
沢 澤
|
||||
沪 濾
|
||||
浄 淨
|
||||
浅 淺
|
||||
浜 濱
|
||||
涙 淚
|
||||
涛 濤
|
||||
渇 渴
|
||||
済 濟
|
||||
渉 涉
|
||||
渋 澀
|
||||
渓 溪
|
||||
温 溫
|
||||
湾 灣
|
||||
湿 溼
|
||||
満 滿
|
||||
滝 瀧
|
||||
滞 滯
|
||||
潑 溌
|
||||
潜 潛
|
||||
瀬 瀨
|
||||
灯 燈
|
||||
炉 爐
|
||||
点 點
|
||||
為 爲
|
||||
焰 焔
|
||||
焼 燒
|
||||
煙 菸
|
||||
犠 犧
|
||||
状 狀
|
||||
独 獨
|
||||
狭 狹
|
||||
猟 獵
|
||||
猫 貓
|
||||
献 獻
|
||||
獣 獸
|
||||
産 產
|
||||
画 畫
|
||||
畳 疊
|
||||
疏 疎
|
||||
痩 瘦
|
||||
痴 癡
|
||||
痺 痹
|
||||
発 發
|
||||
皐 皋
|
||||
盗 盜
|
||||
県 縣
|
||||
砕 碎
|
||||
礼 禮
|
||||
祷 禱
|
||||
禄 祿
|
||||
禅 禪
|
||||
秘 祕
|
||||
称 稱
|
||||
税 稅
|
||||
稜 棱
|
||||
稲 稻
|
||||
穂 穗
|
||||
穏 穩
|
||||
穣 穰
|
||||
窃 竊
|
||||
竈 竃
|
||||
竜 龍
|
||||
粋 粹
|
||||
粛 肅
|
||||
粧 妝
|
||||
粽 糉
|
||||
糸 糸 絲
|
||||
経 經
|
||||
絵 繪
|
||||
絶 絕
|
||||
継 繼
|
||||
続 續
|
||||
総 總
|
||||
緑 綠
|
||||
緒 緖
|
||||
縁 緣
|
||||
縄 繩
|
||||
縦 縱
|
||||
繊 纖
|
||||
繍 繡
|
||||
繫 繋
|
||||
缶 缶 罐
|
||||
群 羣
|
||||
聡 聰
|
||||
聴 聽
|
||||
胆 膽
|
||||
脚 腳
|
||||
脱 脫
|
||||
脳 腦
|
||||
臓 臟
|
||||
舎 舍
|
||||
舗 鋪
|
||||
芦 蘆
|
||||
芸 藝
|
||||
茎 莖
|
||||
茘 荔
|
||||
荘 莊
|
||||
莱 萊
|
||||
葱 蔥
|
||||
蒋 蔣
|
||||
蔵 藏
|
||||
薫 薰
|
||||
薬 藥
|
||||
虚 虛
|
||||
虫 蟲
|
||||
蚕 蠶
|
||||
蛍 螢
|
||||
蛮 蠻
|
||||
蝋 蠟
|
||||
装 裝
|
||||
覇 霸
|
||||
覚 覺
|
||||
覧 覽
|
||||
観 觀
|
||||
触 觸
|
||||
訳 譯
|
||||
証 證
|
||||
誉 譽
|
||||
説 說
|
||||
読 讀
|
||||
謡 謠
|
||||
譲 讓
|
||||
豊 豐
|
||||
賛 贊
|
||||
贋 贗
|
||||
践 踐
|
||||
転 轉
|
||||
軽 輕
|
||||
輌 輛
|
||||
辞 辭
|
||||
辺 邊
|
||||
逓 遞
|
||||
連 連 聯
|
||||
遅 遲
|
||||
遙 遥
|
||||
郷 鄉
|
||||
酔 醉
|
||||
醋 酢
|
||||
醤 醬
|
||||
醱 醗
|
||||
醸 釀
|
||||
釈 釋
|
||||
鉄 鐵
|
||||
鉱 鑛
|
||||
銭 錢
|
||||
鋳 鑄
|
||||
錬 鍊
|
||||
録 錄
|
||||
関 關
|
||||
閲 閱
|
||||
闘 鬥
|
||||
陥 陷
|
||||
険 險
|
||||
随 隨
|
||||
隠 隱
|
||||
雑 雜
|
||||
霊 靈
|
||||
静 靜
|
||||
頴 穎
|
||||
頼 賴
|
||||
顔 顏
|
||||
顕 顯
|
||||
駅 驛
|
||||
駆 驅
|
||||
騒 騷
|
||||
験 驗
|
||||
髄 髓
|
||||
髪 髮
|
||||
鴎 鷗
|
||||
鶏 雞
|
||||
鹸 鹼
|
||||
麦 麥
|
||||
麹 麴
|
||||
麺 麪
|
||||
黄 黃
|
||||
黒 黑
|
||||
黙 默
|
||||
鼈 鱉
|
||||
齢 齡
|
3891
TMessagesProj/src/main/assets/dictionary/STCharacters.txt
Normal file
3891
TMessagesProj/src/main/assets/dictionary/STCharacters.txt
Normal file
File diff suppressed because it is too large
Load Diff
49041
TMessagesProj/src/main/assets/dictionary/STPhrases.txt
Normal file
49041
TMessagesProj/src/main/assets/dictionary/STPhrases.txt
Normal file
File diff suppressed because it is too large
Load Diff
4014
TMessagesProj/src/main/assets/dictionary/TSCharacters.txt
Normal file
4014
TMessagesProj/src/main/assets/dictionary/TSCharacters.txt
Normal file
File diff suppressed because it is too large
Load Diff
276
TMessagesProj/src/main/assets/dictionary/TSPhrases.txt
Normal file
276
TMessagesProj/src/main/assets/dictionary/TSPhrases.txt
Normal file
@ -0,0 +1,276 @@
|
||||
一目瞭然 一目了然
|
||||
上鍊 上链
|
||||
不瞭解 不了解
|
||||
么麼 幺麽
|
||||
么麽 幺麽
|
||||
乾乾淨淨 干干净净
|
||||
乾乾脆脆 干干脆脆
|
||||
乾元 乾元
|
||||
乾卦 乾卦
|
||||
乾嘉 乾嘉
|
||||
乾圖 乾图
|
||||
乾坤 乾坤
|
||||
乾坤一擲 乾坤一掷
|
||||
乾坤再造 乾坤再造
|
||||
乾坤大挪移 乾坤大挪移
|
||||
乾宅 乾宅
|
||||
乾斷 乾断
|
||||
乾旦 乾旦
|
||||
乾曜 乾曜
|
||||
乾清宮 乾清宫
|
||||
乾盛世 乾盛世
|
||||
乾紅 乾红
|
||||
乾綱 乾纲
|
||||
乾縣 乾县
|
||||
乾象 乾象
|
||||
乾造 乾造
|
||||
乾道 乾道
|
||||
乾陵 乾陵
|
||||
乾隆 乾隆
|
||||
乾隆年間 乾隆年间
|
||||
乾隆皇帝 乾隆皇帝
|
||||
以免藉口 以免借口
|
||||
以功覆過 以功复过
|
||||
侔德覆載 侔德复载
|
||||
傢俱 家具
|
||||
傷亡枕藉 伤亡枕藉
|
||||
八濛山 八濛山
|
||||
凌藉 凌借
|
||||
出醜狼藉 出丑狼藉
|
||||
函覆 函复
|
||||
千鍾粟 千锺粟
|
||||
反反覆覆 反反复复
|
||||
反覆 反复
|
||||
反覆思維 反复思维
|
||||
反覆思量 反复思量
|
||||
反覆性 反复性
|
||||
名覆金甌 名复金瓯
|
||||
哪吒 哪吒
|
||||
回覆 回复
|
||||
壺裏乾坤 壶里乾坤
|
||||
大目乾連冥間救母變文 大目乾连冥间救母变文
|
||||
宫商角徵羽 宫商角徵羽
|
||||
射覆 射复
|
||||
尼乾陀 尼乾陀
|
||||
幺麼 幺麽
|
||||
幺麼小丑 幺麽小丑
|
||||
幺麼小醜 幺麽小丑
|
||||
康乾 康乾
|
||||
張法乾 张法乾
|
||||
彷彿 仿佛
|
||||
彷徨 彷徨
|
||||
徵弦 徵弦
|
||||
徵絃 徵弦
|
||||
徵羽摩柯 徵羽摩柯
|
||||
徵聲 徵声
|
||||
徵調 徵调
|
||||
徵音 徵音
|
||||
情有獨鍾 情有独钟 情有独锺
|
||||
憑藉 凭借
|
||||
憑藉着 凭借着
|
||||
手鍊 手链
|
||||
扭轉乾坤 扭转乾坤
|
||||
找藉口 找借口
|
||||
拉鍊 拉链
|
||||
拉鍊工程 拉链工程
|
||||
拜覆 拜复
|
||||
據瞭解 据了解
|
||||
文錦覆阱 文锦复阱
|
||||
於世成 於世成
|
||||
於乎 於乎
|
||||
於仲完 於仲完
|
||||
於倫 於伦
|
||||
於其一 於其一
|
||||
於則 於则
|
||||
於勇明 於勇明
|
||||
於呼哀哉 於呼哀哉
|
||||
於單 於单
|
||||
於坦 於坦
|
||||
於崇文 於崇文
|
||||
於忠祥 於忠祥
|
||||
於惟一 於惟一
|
||||
於戲 於戏
|
||||
於敖 於敖
|
||||
於梨華 於梨华
|
||||
於清言 於清言
|
||||
於琳 於琳
|
||||
於穆 於穆
|
||||
於竹屋 於竹屋
|
||||
於菟 於菟
|
||||
於邑 於邑
|
||||
於陵子 於陵子
|
||||
於潛 於潜
|
||||
旋乾轉坤 旋乾转坤
|
||||
旋轉乾坤 旋转乾坤
|
||||
旋轉乾坤之力 旋转乾坤之力
|
||||
明瞭 明了
|
||||
明覆 明复
|
||||
書中自有千鍾粟 书中自有千锺粟
|
||||
有序 有序
|
||||
朝乾夕惕 朝乾夕惕
|
||||
木吒 木吒
|
||||
李乾德 李乾德
|
||||
李澤鉅 李泽钜
|
||||
李鍊福 李链福
|
||||
李鍾郁 李锺郁
|
||||
樊於期 樊於期
|
||||
沈沒 沉没
|
||||
沈沒成本 沉没成本
|
||||
沈積 沉积
|
||||
沈船 沉船
|
||||
沈默 沉默
|
||||
流徵 流徵
|
||||
浪蕩乾坤 浪荡乾坤
|
||||
滑藉 滑借
|
||||
無序 无序
|
||||
牴牾 抵牾
|
||||
牴觸 抵触
|
||||
狐藉虎威 狐借虎威
|
||||
珍珠項鍊 珍珠项链
|
||||
甚鉅 甚钜
|
||||
申覆 申复
|
||||
畢昇 毕昇
|
||||
發覆 发复
|
||||
盼既示覆 盼既示复
|
||||
瞭如 了如
|
||||
瞭如指掌 了如指掌
|
||||
瞭望 瞭望
|
||||
瞭然 了然
|
||||
瞭然於心 了然于心
|
||||
瞭若指掌 了若指掌
|
||||
瞭解 了解
|
||||
瞭解到 了解到
|
||||
示覆 示复
|
||||
神祇 神祇
|
||||
稟覆 禀复
|
||||
答覆 答复
|
||||
篤麼 笃麽
|
||||
簡單明瞭 简单明了
|
||||
籌畫 筹划
|
||||
素藉 素借
|
||||
老態龍鍾 老态龙钟 老态龙锺
|
||||
肘手鍊足 肘手链足
|
||||
茵藉 茵借
|
||||
萬鍾 万锺
|
||||
蒜薹 蒜薹
|
||||
蕓薹 芸薹
|
||||
蕩覆 荡复
|
||||
蕭乾 萧乾
|
||||
藉代 借代
|
||||
藉以 借以
|
||||
藉助 借助
|
||||
藉助於 借助于
|
||||
藉卉 借卉
|
||||
藉口 借口
|
||||
藉喻 借喻
|
||||
藉寇兵 借寇兵
|
||||
藉寇兵齎盜糧 借寇兵赍盗粮
|
||||
藉手 借手
|
||||
藉據 借据
|
||||
藉故 借故
|
||||
藉故推辭 借故推辞
|
||||
藉方 借方
|
||||
藉條 借条
|
||||
藉槁 借槁
|
||||
藉機 借机
|
||||
藉此 借此
|
||||
藉此機會 借此机会
|
||||
藉甚 借甚
|
||||
藉由 借由
|
||||
藉着 借着
|
||||
藉端 借端
|
||||
藉端生事 借端生事
|
||||
藉箸代籌 借箸代筹
|
||||
藉草枕塊 借草枕块
|
||||
藉藉 藉藉
|
||||
藉藉无名 藉藉无名
|
||||
藉詞 借词
|
||||
藉讀 借读
|
||||
藉資 借资
|
||||
衹得 只得
|
||||
衹見樹木 只见树木
|
||||
衹見樹木不見森林 只见树木不见森林
|
||||
袖裏乾坤 袖里乾坤
|
||||
覆上 复上
|
||||
覆住 复住
|
||||
覆信 复信
|
||||
覆冒 复冒
|
||||
覆呈 复呈
|
||||
覆命 复命
|
||||
覆墓 复墓
|
||||
覆宗 复宗
|
||||
覆帳 复帐
|
||||
覆幬 复帱
|
||||
覆成 复成
|
||||
覆按 复按
|
||||
覆文 复文
|
||||
覆杯 复杯
|
||||
覆校 复校
|
||||
覆瓿 复瓿
|
||||
覆盂 复盂
|
||||
覆盆 覆盆
|
||||
覆盆子 覆盆子
|
||||
覆盤 覆盘
|
||||
覆育 复育
|
||||
覆蕉尋鹿 复蕉寻鹿
|
||||
覆逆 复逆
|
||||
覆醢 复醢
|
||||
覆醬瓿 复酱瓿
|
||||
覆電 复电
|
||||
覆露 复露
|
||||
覆鹿尋蕉 复鹿寻蕉
|
||||
覆鹿遺蕉 复鹿遗蕉
|
||||
覆鼎 复鼎
|
||||
見覆 见复
|
||||
角徵 角徵
|
||||
角徵羽 角徵羽
|
||||
計畫 计划
|
||||
變徵 变徵
|
||||
變徵之聲 变徵之声
|
||||
變徵之音 变徵之音
|
||||
貂覆額 貂复额
|
||||
買臣覆水 买臣复水
|
||||
踅門瞭戶 踅门了户
|
||||
躪藉 躏借
|
||||
郭子乾 郭子乾
|
||||
酒逢知己千鍾少 酒逢知己千锺少
|
||||
酒逢知己千鍾少話不投機半句多 酒逢知己千锺少话不投机半句多
|
||||
醞藉 酝借
|
||||
重覆 重复
|
||||
金吒 金吒
|
||||
金鍊 金链
|
||||
鈞覆 钧复
|
||||
鉅子 钜子
|
||||
鉅萬 钜万
|
||||
鉅防 钜防
|
||||
鉸鍊 铰链
|
||||
銀鍊 银链
|
||||
錢鍾書 钱锺书
|
||||
鍊墜 链坠
|
||||
鍊子 链子
|
||||
鍊形 链形
|
||||
鍊條 链条
|
||||
鍊錘 链锤
|
||||
鍊鎖 链锁
|
||||
鍛鍾 锻锺
|
||||
鍾繇 钟繇 锺繇
|
||||
鍾萬梅 锺万梅
|
||||
鍾重發 锺重发
|
||||
鍾鍛 锺锻
|
||||
鍾馗 锺馗
|
||||
鎖鍊 锁链
|
||||
鐵鍊 铁链
|
||||
鑽石項鍊 钻石项链
|
||||
雁杳魚沈 雁杳鱼沉
|
||||
雖覆能復 虽覆能复
|
||||
電覆 电复
|
||||
露覆 露复
|
||||
項鍊 项链
|
||||
頗覆 颇复
|
||||
頸鍊 颈链
|
||||
顛乾倒坤 颠乾倒坤
|
||||
顛倒乾坤 颠倒乾坤
|
||||
顧藉 顾借
|
||||
麼些族 麽些族
|
||||
黄鍾公 黄锺公
|
||||
龍鍾 龙钟 龙锺
|
386
TMessagesProj/src/main/assets/dictionary/TWPhrasesIT.txt
Normal file
386
TMessagesProj/src/main/assets/dictionary/TWPhrasesIT.txt
Normal file
@ -0,0 +1,386 @@
|
||||
PN結 PN接面
|
||||
SQL注入 SQL隱碼攻擊
|
||||
SQL注入攻擊 SQL隱碼攻擊
|
||||
U盤 隨身碟
|
||||
三極管 三極體
|
||||
下拉列表 下拉選單
|
||||
並行計算 平行計算
|
||||
中間件 中介軟體
|
||||
串口 串列埠
|
||||
串行 序列
|
||||
串行端口 串列埠
|
||||
主引導記錄 主開機記錄
|
||||
主板 主機板
|
||||
二極管 二極體
|
||||
互聯網 網際網路
|
||||
交互 互動
|
||||
交互式 互動式
|
||||
人工智能 人工智慧
|
||||
代碼 程式碼 代碼
|
||||
代碼頁 內碼表
|
||||
以太網 乙太網
|
||||
任務欄 工作列
|
||||
任務管理器 工作管理員
|
||||
仿真 模擬
|
||||
位圖 點陣圖
|
||||
低級 低階 低級
|
||||
便攜式 行動式 攜帶型
|
||||
保存 儲存
|
||||
信噪比 訊雜比
|
||||
信息 資訊
|
||||
信息安全 資訊保安
|
||||
信息技術 資訊科技
|
||||
信息論 資訊理論
|
||||
信號 訊號 信號
|
||||
信道 通道
|
||||
傳感 感測
|
||||
像素 畫素
|
||||
僞代碼 虛擬碼
|
||||
優先級 優先順序
|
||||
優化 最佳化
|
||||
元數據 後設資料
|
||||
元編程 超程式設計
|
||||
光標 游標
|
||||
光盤 光碟
|
||||
光驅 光碟機
|
||||
免提 擴音
|
||||
內存 記憶體
|
||||
內核 核心
|
||||
內置 內建
|
||||
內聯函數 行內函數
|
||||
全局 全域性
|
||||
全角 全形
|
||||
兼容 相容
|
||||
冒泡排序 氣泡排序
|
||||
函數 函式
|
||||
函數式編程 函數語言程式設計
|
||||
刀片服務器 刀鋒伺服器
|
||||
分佈式 分散式
|
||||
分區 分割槽
|
||||
分辨率 解析度
|
||||
刷新 重新整理
|
||||
刻錄 燒錄
|
||||
前綴 字首
|
||||
剪切 剪下
|
||||
剪貼板 剪貼簿
|
||||
創建 建立
|
||||
加載 載入
|
||||
半角 半形
|
||||
博客 部落格
|
||||
卸載 解除安裝
|
||||
原代碼 原始碼
|
||||
參數 引數
|
||||
參數表 參數列
|
||||
句柄 控制代碼
|
||||
可視化 視覺化
|
||||
呼出 撥出
|
||||
呼叫轉移 來電轉駁
|
||||
命令式編程 指令式程式設計
|
||||
命令行 命令列
|
||||
命名空間 名稱空間
|
||||
哈希 雜湊
|
||||
單片機 微控制器
|
||||
回調 回撥
|
||||
固件 韌體
|
||||
圖像 影象
|
||||
圖庫 相簿
|
||||
圖標 圖示
|
||||
在線 線上
|
||||
地址 地址 位址
|
||||
地址欄 位址列
|
||||
城域網 都會網路
|
||||
堆棧 堆疊
|
||||
場效應管 場效電晶體
|
||||
壁紙 桌布 壁紙
|
||||
外置 外接
|
||||
外鍵 外來鍵
|
||||
多任務 多工
|
||||
多態 多型
|
||||
多線程 多執行緒
|
||||
字庫 字型檔
|
||||
字段 欄位
|
||||
字符 字元
|
||||
字符串 字串
|
||||
字符集 字符集
|
||||
字節 位元組
|
||||
字體 字型
|
||||
存儲 儲存
|
||||
存盤 存檔
|
||||
宏 宏 巨集
|
||||
宏內核 單核心
|
||||
寄存器 暫存器
|
||||
密鑰 金鑰
|
||||
實例 例項 實例
|
||||
實模式 真實模式
|
||||
審覈 稽覈
|
||||
寫保護 防寫
|
||||
寬帶 寬頻
|
||||
尋址 定址
|
||||
對話框 對話方塊
|
||||
對象 物件 對象
|
||||
導入 匯入
|
||||
導出 匯出
|
||||
局域網 區域網
|
||||
局部 區域性
|
||||
屏幕 螢幕
|
||||
屏蔽 遮蔽
|
||||
嵌套 巢狀
|
||||
布爾 布林
|
||||
帶寬 頻寬
|
||||
引導程序 載入程式
|
||||
彙編 彙編 組譯
|
||||
彙編語言 組合語言
|
||||
後綴 字尾
|
||||
循環 迴圈 循環
|
||||
性價比 價效比
|
||||
性能 效能
|
||||
截取 擷取
|
||||
截屏 截圖
|
||||
打印 列印
|
||||
打印機 印表機
|
||||
打開 開啟 打開
|
||||
批量 批次
|
||||
拋出 丟擲
|
||||
拷貝 複製
|
||||
持久性 永續性
|
||||
指針 指標
|
||||
捲積 摺積
|
||||
掃描儀 掃描器
|
||||
掛斷 結束通話
|
||||
採樣 取樣
|
||||
採樣率 取樣率
|
||||
接口 介面
|
||||
控件 控制元件
|
||||
插件 外掛
|
||||
搜索 搜尋
|
||||
操作數 運算元
|
||||
操作符 運算子
|
||||
操作系統 作業系統
|
||||
擴展 擴充套件
|
||||
擴展名 副檔名
|
||||
支持 支援
|
||||
支持者 支持者
|
||||
散列 雜湊
|
||||
數字 數字 數位
|
||||
數字印刷 數位印刷
|
||||
數字電子 數位電子
|
||||
數字電路 數位電路
|
||||
數據 資料
|
||||
數據倉庫 資料倉儲
|
||||
數據報 資料包
|
||||
數據庫 資料庫
|
||||
數據挖掘 資料探勘
|
||||
數據源 資料來源
|
||||
數組 陣列
|
||||
文件 檔案
|
||||
文件名 檔名
|
||||
文件夾 資料夾
|
||||
文件擴展名 副檔名
|
||||
文字處理 文書處理
|
||||
文本 文字
|
||||
文檔 文件
|
||||
映射 對映
|
||||
時分多址 分時多重進接
|
||||
時分複用 分時多工
|
||||
時鐘頻率 時脈頻率
|
||||
晶閘管 閘流體
|
||||
晶體管 電晶體
|
||||
智能 智慧
|
||||
最終用戶 終端使用者
|
||||
有損壓縮 有失真壓縮
|
||||
服務器 伺服器
|
||||
本地代碼 原生代碼
|
||||
析構函數 解構函式
|
||||
枚舉 列舉
|
||||
查找 查詢
|
||||
查看 檢視
|
||||
桌面型 桌上型
|
||||
構造函數 建構函式
|
||||
標識符 識別符號
|
||||
模塊 模組
|
||||
模擬 模擬 類比
|
||||
模擬電子 類比電子
|
||||
模擬電路 類比電路
|
||||
權限 許可權
|
||||
正則表達式 正規表示式
|
||||
死機 宕機
|
||||
殺毒 防毒
|
||||
比特 位元
|
||||
比特幣 比特幣
|
||||
比特率 位元率
|
||||
波分複用 波長分波多工
|
||||
消息 訊息 消息
|
||||
添加 新增
|
||||
源代碼 原始碼
|
||||
源文件 原始檔
|
||||
源碼 原始碼
|
||||
溢出 溢位
|
||||
滾動條 捲軸
|
||||
演示文稿 簡報
|
||||
激光 鐳射
|
||||
激活 啟用
|
||||
無損壓縮 無失真壓縮
|
||||
物理內存 實體記憶體
|
||||
物理地址 實體地址
|
||||
狀態欄 狀態列
|
||||
用戶 使用者
|
||||
用戶名 使用者名稱
|
||||
界面 介面
|
||||
異步 非同步
|
||||
登錄 登入
|
||||
發佈 釋出
|
||||
發送 傳送
|
||||
皮膚 面板
|
||||
盤片 碟片
|
||||
盤符 碟符
|
||||
目標代碼 目的碼
|
||||
相冊 相簿
|
||||
矢量 向量
|
||||
知識產權 智慧財產權
|
||||
短信 簡訊
|
||||
硬件 硬體
|
||||
硬盤 硬碟
|
||||
碼分多址 分碼多重進接
|
||||
碼率 位元速率
|
||||
磁盤 磁碟
|
||||
磁道 磁軌
|
||||
社區 社羣 社區
|
||||
移動硬盤 行動硬碟
|
||||
移動網絡 行動網路
|
||||
移動資料 行動資料
|
||||
移動通信 行動通訊
|
||||
移動電話 行動電話
|
||||
程序 程式
|
||||
程序員 程式設計師
|
||||
空分多址 分空間多重進接
|
||||
空分複用 空間多工
|
||||
窗口 視窗
|
||||
端口 埠
|
||||
筆記本電腦 膝上型電腦
|
||||
算子 運算元
|
||||
算法 演算法
|
||||
範式 正規化
|
||||
粘貼 貼上 粘貼
|
||||
紅心大戰 傷心小棧
|
||||
組件 元件
|
||||
綁定 繫結
|
||||
網上鄰居 網路上的芳鄰
|
||||
網卡 網絡卡
|
||||
網吧 網咖
|
||||
網絡 網路
|
||||
網關 閘道器
|
||||
線程 執行緒
|
||||
編程 程式設計
|
||||
編程語言 程式語言
|
||||
緩存 快取
|
||||
縮略圖 縮圖
|
||||
縮進 縮排
|
||||
總線 匯流排
|
||||
缺省 預設
|
||||
聯繫 聯絡
|
||||
聯繫歷史 通話記錄
|
||||
聲卡 音效卡
|
||||
聲明 宣告
|
||||
脫機 離線
|
||||
腳本 指令碼
|
||||
自動轉屏 自動旋轉螢幕
|
||||
臺式機 桌上型電腦
|
||||
航天飛機 太空梭
|
||||
芯片 晶片
|
||||
花屏 破圖
|
||||
菜單 選單 菜單
|
||||
萬維網 全球資訊網
|
||||
藍屏 藍色畫面
|
||||
藍牙 藍芽
|
||||
虛函數 虛擬函式
|
||||
虛擬機 虛擬機器
|
||||
表達式 表示式 運算式
|
||||
複印 影印
|
||||
複選按鈕 覈取按鈕
|
||||
複選框 覈取方塊
|
||||
視圖 檢視
|
||||
視頻 影片 視訊
|
||||
解釋器 直譯器
|
||||
觸摸 觸控
|
||||
觸摸屏 觸控式螢幕
|
||||
計算機安全 電腦保安
|
||||
計算機科學 電腦科學
|
||||
訪問 訪問 存取
|
||||
設備 裝置
|
||||
設置 設定
|
||||
註冊機 序號產生器
|
||||
註冊表 登錄檔
|
||||
註銷 登出
|
||||
調制 調變
|
||||
調度 排程
|
||||
調用 呼叫
|
||||
調色板 調色盤
|
||||
調製解調器 數據機
|
||||
調試 除錯 偵錯
|
||||
調試器 偵錯程式
|
||||
變量 變數
|
||||
軟件 軟體
|
||||
軟驅 軟碟機
|
||||
轉義字符 跳脫字元
|
||||
通信 通訊
|
||||
通訊卡 通話卡
|
||||
通配符 萬用字元
|
||||
連接 連線
|
||||
連接器 聯結器
|
||||
進制 進位制
|
||||
進程 程序 進程
|
||||
運算符 運算子
|
||||
運行 執行
|
||||
過程式編程 程序式程式設計
|
||||
遞歸 遞迴
|
||||
遠程 遠端
|
||||
適配器 介面卡
|
||||
邏輯門 邏輯閘
|
||||
重命名 重新命名
|
||||
重裝 重灌
|
||||
重載 過載
|
||||
金屬氧化物半導體 金氧半導體
|
||||
錄像 錄影
|
||||
鏈接 連結
|
||||
鏈表 連結串列
|
||||
鏡像 映象
|
||||
門戶網站 入口網站
|
||||
門電路 閘電路
|
||||
閃存 快閃記憶體
|
||||
關係數據庫 關聯式資料庫
|
||||
隊列 佇列
|
||||
集成 整合
|
||||
集成電路 積體電路
|
||||
集羣 叢集
|
||||
雲存儲 雲端儲存
|
||||
雲計算 雲端計算
|
||||
面向對象 物件導向
|
||||
面向過程 程序導向
|
||||
音頻 音訊
|
||||
頁眉 頁首
|
||||
頁腳 頁尾
|
||||
項目 專案
|
||||
預處理器 前處理器
|
||||
頭文件 標頭檔案
|
||||
頻分多址 分頻多重進接
|
||||
頻分複用 分頻多工
|
||||
類型 型別
|
||||
類模板 類别範本
|
||||
顯像管 映象管
|
||||
顯卡 顯示卡
|
||||
顯存 視訊記憶體
|
||||
飛行模式 飛航模式
|
||||
首席信息官 資訊長
|
||||
首席執行官 執行長
|
||||
首席技術官 技術長
|
||||
首席運營官 營運長
|
||||
高性能計算 高效能運算
|
||||
高清 高畫質
|
||||
高端 高階 進階
|
||||
高級 高階 進階 高級
|
||||
高速緩存 快取記憶體
|
||||
黑客 駭客
|
||||
默認 預設
|
||||
默認值 預設值
|
||||
點擊 點選
|
||||
鼠標 滑鼠
|
84
TMessagesProj/src/main/assets/dictionary/TWPhrasesName.txt
Normal file
84
TMessagesProj/src/main/assets/dictionary/TWPhrasesName.txt
Normal file
@ -0,0 +1,84 @@
|
||||
乍得 查德
|
||||
也門 葉門
|
||||
仙童半導體 快捷半導體
|
||||
伯利茲 貝里斯
|
||||
佛得角 維德角
|
||||
傅里葉 傅立葉
|
||||
克羅地亞 克羅埃西亞
|
||||
列支敦士登 列支敦斯登
|
||||
利比里亞 賴比瑞亞
|
||||
加納 迦納
|
||||
加蓬 加彭
|
||||
博茨瓦納 波札那
|
||||
卡塔爾 卡達
|
||||
危地馬拉 瓜地馬拉
|
||||
厄瓜多爾 厄瓜多
|
||||
厄立特里亞 厄利垂亞
|
||||
吉布堤 吉布地
|
||||
哈薩克斯坦 哈薩克
|
||||
哥斯達黎加 哥斯大黎加
|
||||
喫茶小舖 喫茶小舖
|
||||
圖瓦盧 吐瓦魯
|
||||
土庫曼斯坦 土庫曼
|
||||
圭亞那 蓋亞那
|
||||
坦桑尼亞 坦尚尼亞
|
||||
埃塞俄比亞 衣索比亞
|
||||
基里巴斯 吉里巴斯
|
||||
塔吉克斯坦 塔吉克
|
||||
塞拉利昂 獅子山
|
||||
塞浦路斯 塞普勒斯
|
||||
塞舌爾 塞席爾
|
||||
多米尼加 多明尼加
|
||||
安提瓜和巴布達 安地卡及巴布達
|
||||
尼日利亞 奈及利亞
|
||||
尼日爾 尼日
|
||||
岡比亞 甘比亞
|
||||
巴巴多斯 巴貝多
|
||||
巴布亞新幾內亞 巴布亞紐幾內亞
|
||||
布基納法索 布吉納法索
|
||||
布隆迪 蒲隆地
|
||||
帕勞 帛琉
|
||||
幾內亞比紹 幾內亞比索
|
||||
意大利 義大利
|
||||
所羅門羣島 索羅門羣島
|
||||
文萊 汶萊
|
||||
斯威士蘭 史瓦濟蘭
|
||||
斯洛文尼亞 斯洛維尼亞
|
||||
新西蘭 紐西蘭
|
||||
格林納達 格瑞那達
|
||||
格魯吉亞 喬治亞
|
||||
歐拉 尤拉
|
||||
毛里塔尼亞 茅利塔尼亞
|
||||
毛里求斯 模里西斯
|
||||
沙特阿拉伯 沙烏地阿拉伯
|
||||
波斯尼亞黑塞哥維那 波士尼亞赫塞哥維納
|
||||
津巴布韋 辛巴威
|
||||
洪都拉斯 宏都拉斯
|
||||
溫納圖萬 那杜
|
||||
烏茲別克斯坦 烏茲別克
|
||||
特立尼達和多巴哥 千里達及托巴哥
|
||||
瑙魯 諾魯
|
||||
瓦努阿圖 萬那杜
|
||||
盧旺達 盧安達
|
||||
科摩羅 葛摩
|
||||
科特迪瓦 象牙海岸
|
||||
突尼斯 突尼西亞
|
||||
純喫茶 純喫茶
|
||||
索馬里 索馬利亞
|
||||
老撾 寮國
|
||||
聖基茨和尼維斯 聖克里斯多福及尼維斯
|
||||
聖文森特和格林納丁斯 聖文森及格瑞那丁
|
||||
聖盧西亞 聖露西亞
|
||||
聖馬力諾 聖馬利諾
|
||||
肯尼亞 肯亞
|
||||
莫桑比克 莫三比克
|
||||
萊索托 賴索托
|
||||
萬象 永珍
|
||||
蘇里南 蘇利南
|
||||
貝寧 貝南
|
||||
贊比亞 尚比亞
|
||||
阿塞拜疆 亞塞拜然
|
||||
阿拉伯聯合酋長國 阿拉伯聯合大公國
|
||||
香農 夏農
|
||||
馬爾代夫 馬爾地夫
|
||||
馬里共和國 馬利共和國
|
36
TMessagesProj/src/main/assets/dictionary/TWPhrasesOther.txt
Normal file
36
TMessagesProj/src/main/assets/dictionary/TWPhrasesOther.txt
Normal file
@ -0,0 +1,36 @@
|
||||
元音 母音
|
||||
冰棍 冰棒
|
||||
出租車 計程車
|
||||
咖喱 咖哩
|
||||
塑料 塑膠
|
||||
奔馳 賓士
|
||||
奶酪 乳酪
|
||||
幾率 機率
|
||||
方便麪 泡麵 速食麵
|
||||
李彥宏 李彥宏
|
||||
概率 機率
|
||||
海內存知己 海內存知己
|
||||
涼菜 冷盤
|
||||
的士 計程車
|
||||
砹 砈
|
||||
硅 矽
|
||||
程序不正義 程序不正義
|
||||
程序正義 程序正義
|
||||
空氣淨化器 空氣清淨機
|
||||
納米 奈米
|
||||
自行車 腳踏車
|
||||
詞組 片語
|
||||
蹦極 高空彈跳
|
||||
輔音 子音
|
||||
通過 透過 通過
|
||||
酰 醯
|
||||
鈁 鍅
|
||||
鈈 鈽
|
||||
錇 鉳
|
||||
鍀 鎝
|
||||
鎄 鑀
|
||||
鎇 鋂
|
||||
鎿 錼
|
||||
鐦 鉲
|
||||
鑥 鎦
|
||||
黃宏 黃宏
|
516
TMessagesProj/src/main/assets/dictionary/TWPhrasesRev.txt
Normal file
516
TMessagesProj/src/main/assets/dictionary/TWPhrasesRev.txt
Normal file
@ -0,0 +1,516 @@
|
||||
PN接面 PN結
|
||||
SQL隱碼攻擊 SQL注入 SQL注入攻擊
|
||||
三極體 三極管
|
||||
下拉選單 下拉列表
|
||||
丟擲 拋出
|
||||
中介軟體 中間件
|
||||
串列埠 串口 串行端口
|
||||
主機板 主板
|
||||
主開機記錄 主引導記錄
|
||||
乙太網 以太網
|
||||
乳酪 奶酪
|
||||
二極體 二極管
|
||||
互動 交互
|
||||
互動式 交互式
|
||||
亞塞拜然 阿塞拜疆
|
||||
人工智慧 人工智能
|
||||
介面 接口 界面
|
||||
介面卡 適配器
|
||||
代碼 代碼
|
||||
伺服器 服務器
|
||||
佇列 隊列
|
||||
位元 比特
|
||||
位元率 比特率
|
||||
位元組 字節
|
||||
位元速率 碼率
|
||||
位址 地址
|
||||
位址列 地址欄
|
||||
低級 低級
|
||||
低階 低級
|
||||
作業系統 操作系統
|
||||
使用者 用戶
|
||||
使用者名稱 用戶名
|
||||
來電轉駁 呼叫轉移
|
||||
例項 實例
|
||||
信號 信號
|
||||
偵錯 調試
|
||||
偵錯程式 調試器
|
||||
傅立葉 傅里葉
|
||||
傳送 發送
|
||||
傷心小棧 紅心大戰
|
||||
價效比 性價比
|
||||
優先順序 優先級
|
||||
儲存 保存 存儲
|
||||
元件 組件
|
||||
光碟 光盤
|
||||
光碟機 光驅
|
||||
克羅埃西亞 克羅地亞
|
||||
入口網站 門戶網站
|
||||
內建 內置
|
||||
內碼表 代碼頁
|
||||
全域性 全局
|
||||
全形 全角
|
||||
全球資訊網 萬維網
|
||||
冰棒 冰棍
|
||||
冷盤 涼菜
|
||||
函式 函數
|
||||
函數語言程式設計 函數式編程
|
||||
刀鋒伺服器 刀片服務器
|
||||
分割槽 分區
|
||||
分散式 分佈式
|
||||
分時多工 時分複用
|
||||
分時多重進接 時分多址
|
||||
分碼多重進接 碼分多址
|
||||
分空間多重進接 空分多址
|
||||
分頻多工 頻分複用
|
||||
分頻多重進接 頻分多址
|
||||
列印 打印
|
||||
列支敦斯登 列支敦士登
|
||||
列舉 枚舉
|
||||
前處理器 預處理器
|
||||
剪下 剪切
|
||||
剪貼簿 剪貼板
|
||||
副檔名 擴展名 文件擴展名
|
||||
加彭 加蓬
|
||||
匯入 導入
|
||||
匯出 導出
|
||||
匯流排 總線
|
||||
區域性 局部
|
||||
區域網 局域網
|
||||
千里達及托巴哥 特立尼達和多巴哥
|
||||
半形 半角
|
||||
卡達 卡塔爾
|
||||
印表機 打印機
|
||||
厄利垂亞 厄立特里亞
|
||||
厄瓜多 厄瓜多爾
|
||||
原始檔 源文件
|
||||
原始碼 原代碼 源代碼 源碼
|
||||
原生代碼 本地代碼
|
||||
參數列 參數表
|
||||
取樣 採樣
|
||||
取樣率 採樣率
|
||||
叢集 集羣
|
||||
史瓦濟蘭 斯威士蘭
|
||||
吉布地 吉布堤
|
||||
吉里巴斯 基里巴斯
|
||||
名稱空間 命名空間
|
||||
吐瓦魯 圖瓦盧
|
||||
向量 矢量
|
||||
呼叫 調用
|
||||
命令列 命令行
|
||||
咖哩 咖喱
|
||||
哈薩克 哈薩克斯坦
|
||||
哥斯大黎加 哥斯達黎加
|
||||
啟用 激活
|
||||
喫茶小舖 喫茶小舖
|
||||
喬治亞 格魯吉亞
|
||||
單核心 宏內核
|
||||
回撥 回調
|
||||
圖示 圖標
|
||||
土庫曼 土庫曼斯坦
|
||||
地址 地址
|
||||
坦尚尼亞 坦桑尼亞
|
||||
型別 類型
|
||||
埠 端口
|
||||
執行 運行
|
||||
執行緒 線程
|
||||
執行長 首席執行官
|
||||
堆疊 堆棧
|
||||
場效電晶體 場效應管
|
||||
塑膠 塑料
|
||||
塔吉克 塔吉克斯坦
|
||||
塞席爾 塞舌爾
|
||||
塞普勒斯 塞浦路斯
|
||||
壁紙 壁紙
|
||||
夏農 香農
|
||||
外來鍵 外鍵
|
||||
外掛 插件
|
||||
外接 外置
|
||||
多型 多態
|
||||
多執行緒 多線程
|
||||
多工 多任務
|
||||
多明尼加 多米尼加
|
||||
太空梭 航天飛機
|
||||
奈及利亞 尼日利亞
|
||||
奈米 納米
|
||||
子音 輔音
|
||||
字串 字符串
|
||||
字元 字符
|
||||
字型 字體
|
||||
字型檔 字庫
|
||||
字尾 後綴
|
||||
字符集 字符集
|
||||
字首 前綴
|
||||
存取 訪問
|
||||
存檔 存盤
|
||||
安地卡及巴布達 安提瓜和巴布達
|
||||
宏 宏
|
||||
宏都拉斯 洪都拉斯
|
||||
宕機 死機
|
||||
定址 尋址
|
||||
宣告 聲明
|
||||
實例 實例
|
||||
實體地址 物理地址
|
||||
實體記憶體 物理內存
|
||||
寬頻 寬帶
|
||||
寮國 老撾
|
||||
專案 項目
|
||||
對映 映射
|
||||
對話方塊 對話框
|
||||
對象 對象
|
||||
尚比亞 贊比亞
|
||||
尤拉 歐拉
|
||||
尼日 尼日爾
|
||||
巢狀 嵌套
|
||||
工作列 任務欄
|
||||
工作管理員 任務管理器
|
||||
巨集 宏
|
||||
巴布亞紐幾內亞 巴布亞新幾內亞
|
||||
巴貝多 巴巴多斯
|
||||
布吉納法索 布基納法索
|
||||
布林 布爾
|
||||
帛琉 帕勞
|
||||
平行計算 並行計算
|
||||
幾內亞比索 幾內亞比紹
|
||||
序列 串行
|
||||
序號產生器 註冊機
|
||||
建構函式 構造函數
|
||||
建立 創建
|
||||
引數 參數
|
||||
彙編 彙編
|
||||
影印 複印
|
||||
影片 視頻
|
||||
影象 圖像
|
||||
後設資料 元數據
|
||||
循環 循環
|
||||
微控制器 單片機
|
||||
快取 緩存
|
||||
快取記憶體 高速緩存
|
||||
快捷半導體 仙童半導體
|
||||
快閃記憶體 閃存
|
||||
感測 傳感
|
||||
截圖 截屏
|
||||
打開 打開
|
||||
批次 批量
|
||||
技術長 首席技術官
|
||||
指令式程式設計 命令式編程
|
||||
指令碼 腳本
|
||||
指標 指針
|
||||
捲軸 滾動條
|
||||
掃描器 掃描儀
|
||||
排程 調度
|
||||
控制代碼 句柄
|
||||
控制元件 控件
|
||||
搜尋 搜索
|
||||
摺積 捲積
|
||||
撥出 呼出
|
||||
擴充套件 擴展
|
||||
擴音 免提
|
||||
擷取 截取
|
||||
攜帶型 便攜式
|
||||
支持者 支持者
|
||||
支援 支持
|
||||
效能 性能
|
||||
整合 集成
|
||||
數位 數字
|
||||
數位印刷 數字印刷
|
||||
數位電子 數字電子
|
||||
數位電路 數字電路
|
||||
數字 數字
|
||||
數據機 調製解調器
|
||||
文件 文檔
|
||||
文字 文本
|
||||
文書處理 文字處理
|
||||
斯洛維尼亞 斯洛文尼亞
|
||||
新增 添加
|
||||
映象 鏡像
|
||||
映象管 顯像管
|
||||
時脈頻率 時鐘頻率
|
||||
晶片 芯片
|
||||
智慧 智能
|
||||
智慧財產權 知識產權
|
||||
暫存器 寄存器
|
||||
最佳化 優化
|
||||
有失真壓縮 有損壓縮
|
||||
李彥宏 李彥宏
|
||||
查德 乍得
|
||||
查詢 查找
|
||||
核心 內核
|
||||
格瑞那達 格林納達
|
||||
桌上型 桌面型
|
||||
桌上型電腦 臺式機
|
||||
桌布 壁紙
|
||||
標頭檔案 頭文件
|
||||
模擬 仿真 模擬
|
||||
模組 模塊
|
||||
模里西斯 毛里求斯
|
||||
機率 幾率 概率
|
||||
檔名 文件名
|
||||
檔案 文件
|
||||
檢視 查看 視圖
|
||||
欄位 字段
|
||||
正規化 範式
|
||||
正規表示式 正則表達式
|
||||
母音 元音
|
||||
比特幣 比特幣
|
||||
氣泡排序 冒泡排序
|
||||
永珍 萬象
|
||||
永續性 持久性
|
||||
汶萊 文萊
|
||||
沙烏地阿拉伯 沙特阿拉伯
|
||||
泡麵 方便麪
|
||||
波士尼亞赫塞哥維納 波斯尼亞黑塞哥維那
|
||||
波札那 博茨瓦納
|
||||
波長分波多工 波分複用
|
||||
海內存知己 海內存知己
|
||||
消息 消息
|
||||
游標 光標
|
||||
溢位 溢出
|
||||
滑鼠 鼠標
|
||||
演算法 算法
|
||||
烏茲別克 烏茲別克斯坦
|
||||
無失真壓縮 無損壓縮
|
||||
燒錄 刻錄
|
||||
營運長 首席運營官
|
||||
片語 詞組
|
||||
物件 對象
|
||||
物件導向 面向對象
|
||||
狀態列 狀態欄
|
||||
獅子山 塞拉利昂
|
||||
瓜地馬拉 危地馬拉
|
||||
甘比亞 岡比亞
|
||||
畫素 像素
|
||||
登入 登錄
|
||||
登出 註銷
|
||||
登錄檔 註冊表
|
||||
盧安達 盧旺達
|
||||
目的碼 目標代碼
|
||||
直譯器 解釋器
|
||||
相容 兼容
|
||||
相簿 圖庫 相冊
|
||||
真實模式 實模式
|
||||
矽 硅
|
||||
砈 砹
|
||||
破圖 花屏
|
||||
硬碟 硬盤
|
||||
硬體 硬件
|
||||
碟片 盤片
|
||||
碟符 盤符
|
||||
磁碟 磁盤
|
||||
磁軌 磁道
|
||||
社區 社區
|
||||
社羣 社區
|
||||
程序 進程
|
||||
程序不正義 程序不正義
|
||||
程序導向 面向過程
|
||||
程序式程式設計 過程式編程
|
||||
程序正義 程序正義
|
||||
程式 程序
|
||||
程式碼 代碼
|
||||
程式設計 編程
|
||||
程式設計師 程序員
|
||||
程式語言 編程語言
|
||||
稽覈 審覈
|
||||
積體電路 集成電路
|
||||
空氣清淨機 空氣淨化器
|
||||
空間多工 空分複用
|
||||
突尼西亞 突尼斯
|
||||
簡報 演示文稿
|
||||
簡訊 短信
|
||||
粘貼 粘貼
|
||||
紐西蘭 新西蘭
|
||||
純喫茶 純喫茶
|
||||
索羅門羣島 所羅門羣島
|
||||
索馬利亞 索馬里
|
||||
終端使用者 最終用戶
|
||||
組合語言 彙編語言
|
||||
組譯 彙編
|
||||
結束通話 掛斷
|
||||
維德角 佛得角
|
||||
網咖 網吧
|
||||
網絡卡 網卡
|
||||
網路 網絡
|
||||
網路上的芳鄰 網上鄰居
|
||||
網際網路 互聯網
|
||||
線上 在線
|
||||
縮圖 縮略圖
|
||||
縮排 縮進
|
||||
繫結 綁定
|
||||
義大利 意大利
|
||||
聖克里斯多福及尼維斯 聖基茨和尼維斯
|
||||
聖文森及格瑞那丁 聖文森特和格林納丁斯
|
||||
聖露西亞 聖盧西亞
|
||||
聖馬利諾 聖馬力諾
|
||||
聯結器 連接器
|
||||
聯絡 聯繫
|
||||
肯亞 肯尼亞
|
||||
腳踏車 自行車
|
||||
膝上型電腦 筆記本電腦
|
||||
自動旋轉螢幕 自動轉屏
|
||||
茅利塔尼亞 毛里塔尼亞
|
||||
莫三比克 莫桑比克
|
||||
菜單 菜單
|
||||
萬用字元 通配符
|
||||
萬那杜 瓦努阿圖
|
||||
葉門 也門
|
||||
葛摩 科摩羅
|
||||
蒲隆地 布隆迪
|
||||
蓋亞那 圭亞那
|
||||
藍色畫面 藍屏
|
||||
藍芽 藍牙
|
||||
蘇利南 蘇里南
|
||||
虛擬函式 虛函數
|
||||
虛擬機器 虛擬機
|
||||
虛擬碼 僞代碼
|
||||
螢幕 屏幕
|
||||
行內函數 內聯函數
|
||||
行動式 便攜式
|
||||
行動硬碟 移動硬盤
|
||||
行動網路 移動網絡
|
||||
行動資料 移動資料
|
||||
行動通訊 移動通信
|
||||
行動電話 移動電話
|
||||
衣索比亞 埃塞俄比亞
|
||||
表示式 表達式
|
||||
裝置 設備
|
||||
複製 拷貝
|
||||
覈取按鈕 複選按鈕
|
||||
覈取方塊 複選框
|
||||
視窗 窗口
|
||||
視覺化 可視化
|
||||
視訊 視頻
|
||||
視訊記憶體 顯存
|
||||
解析度 分辨率
|
||||
解構函式 析構函數
|
||||
解除安裝 卸載
|
||||
觸控 觸摸
|
||||
觸控式螢幕 觸摸屏
|
||||
計程車 出租車 的士
|
||||
訊息 消息
|
||||
訊號 信號
|
||||
訊雜比 信噪比
|
||||
記憶體 內存
|
||||
訪問 訪問
|
||||
設定 設置
|
||||
許可權 權限
|
||||
調色盤 調色板
|
||||
調變 調制
|
||||
諾魯 瑙魯
|
||||
識別符號 標識符
|
||||
變數 變量
|
||||
象牙海岸 科特迪瓦
|
||||
貝南 貝寧
|
||||
貝里斯 伯利茲
|
||||
貼上 粘貼
|
||||
資料 數據
|
||||
資料來源 數據源
|
||||
資料倉儲 數據倉庫
|
||||
資料包 數據報
|
||||
資料夾 文件夾
|
||||
資料庫 數據庫
|
||||
資料探勘 數據挖掘
|
||||
資訊 信息
|
||||
資訊保安 信息安全
|
||||
資訊理論 信息論
|
||||
資訊科技 信息技術
|
||||
資訊長 首席信息官
|
||||
賓士 奔馳
|
||||
賴比瑞亞 利比里亞
|
||||
賴索托 萊索托
|
||||
超程式設計 元編程
|
||||
跳脫字元 轉義字符
|
||||
軟碟機 軟驅
|
||||
軟體 軟件
|
||||
載入 加載
|
||||
載入程式 引導程序
|
||||
辛巴威 津巴布韋
|
||||
迦納 加納
|
||||
迴圈 循環
|
||||
透過 通過
|
||||
通訊 通信
|
||||
通話卡 通訊卡
|
||||
通話記錄 聯繫歷史
|
||||
通過 通過
|
||||
通道 信道
|
||||
速食麵 方便麪
|
||||
連結 鏈接
|
||||
連結串列 鏈表
|
||||
連線 連接
|
||||
進位制 進制
|
||||
進程 進程
|
||||
進階 高端 高級
|
||||
運算元 操作數 算子
|
||||
運算子 操作符 運算符
|
||||
運算式 表達式
|
||||
過載 重載
|
||||
遞迴 遞歸
|
||||
遠端 遠程
|
||||
遮蔽 屏蔽
|
||||
選單 菜單
|
||||
邏輯閘 邏輯門
|
||||
那杜 溫納圖萬
|
||||
部落格 博客
|
||||
都會網路 城域網
|
||||
醯 酰
|
||||
釋出 發佈
|
||||
重新命名 重命名
|
||||
重新整理 刷新
|
||||
重灌 重裝
|
||||
金氧半導體 金屬氧化物半導體
|
||||
金鑰 密鑰
|
||||
鈽 鈈
|
||||
鉲 鐦
|
||||
鉳 錇
|
||||
鋂 鎇
|
||||
錄影 錄像
|
||||
錼 鎿
|
||||
鍅 鈁
|
||||
鎝 鍀
|
||||
鎦 鑥
|
||||
鐳射 激光
|
||||
鑀 鎄
|
||||
開啟 打開
|
||||
閘流體 晶閘管
|
||||
閘道器 網關
|
||||
閘電路 門電路
|
||||
關聯式資料庫 關係數據庫
|
||||
防寫 寫保護
|
||||
防毒 殺毒
|
||||
阿拉伯聯合大公國 阿拉伯聯合酋長國
|
||||
陣列 數組
|
||||
除錯 調試
|
||||
隨身碟 U盤
|
||||
雜湊 哈希 散列
|
||||
離線 脫機
|
||||
雲端儲存 雲存儲
|
||||
雲端計算 雲計算
|
||||
電晶體 晶體管
|
||||
電腦保安 計算機安全
|
||||
電腦科學 計算機科學
|
||||
非同步 異步
|
||||
面板 皮膚
|
||||
韌體 固件
|
||||
音效卡 聲卡
|
||||
音訊 音頻
|
||||
頁尾 頁腳
|
||||
頁首 頁眉
|
||||
預設 缺省 默認
|
||||
預設值 默認值
|
||||
頻寬 帶寬
|
||||
類别範本 類模板
|
||||
類比 模擬
|
||||
類比電子 模擬電子
|
||||
類比電路 模擬電路
|
||||
顯示卡 顯卡
|
||||
飛航模式 飛行模式
|
||||
馬利共和國 馬里共和國
|
||||
馬爾地夫 馬爾代夫
|
||||
駭客 黑客
|
||||
高效能運算 高性能計算
|
||||
高畫質 高清
|
||||
高空彈跳 蹦極
|
||||
高級 高級
|
||||
高階 高端 高級
|
||||
黃宏 黃宏
|
||||
點選 點擊
|
||||
點陣圖 位圖
|
39
TMessagesProj/src/main/assets/dictionary/TWVariants.txt
Normal file
39
TMessagesProj/src/main/assets/dictionary/TWVariants.txt
Normal file
@ -0,0 +1,39 @@
|
||||
僞 偽
|
||||
啓 啟
|
||||
喫 吃
|
||||
嫺 嫻
|
||||
嬀 媯
|
||||
峯 峰
|
||||
幺 么
|
||||
擡 抬
|
||||
棱 稜
|
||||
檐 簷
|
||||
污 汙
|
||||
泄 洩
|
||||
潙 溈
|
||||
潨 潀
|
||||
爲 為
|
||||
牀 床
|
||||
痹 痺
|
||||
癡 痴
|
||||
皁 皂
|
||||
着 著
|
||||
睾 睪
|
||||
祕 秘
|
||||
竈 灶
|
||||
糉 粽
|
||||
繮 韁
|
||||
纔 才
|
||||
羣 群
|
||||
脣 唇
|
||||
蔘 參
|
||||
蔿 蒍
|
||||
衆 眾
|
||||
裏 裡
|
||||
覈 核
|
||||
踊 踴
|
||||
鉢 缽
|
||||
鍼 針
|
||||
鮎 鯰
|
||||
麪 麵
|
||||
齶 顎
|
39
TMessagesProj/src/main/assets/dictionary/TWVariantsRev.txt
Normal file
39
TMessagesProj/src/main/assets/dictionary/TWVariantsRev.txt
Normal file
@ -0,0 +1,39 @@
|
||||
么 么 幺
|
||||
偽 僞
|
||||
參 蔘
|
||||
吃 喫
|
||||
唇 脣
|
||||
啟 啓
|
||||
媯 嬀
|
||||
嫻 嫺
|
||||
峰 峯
|
||||
床 牀
|
||||
才 才 纔
|
||||
抬 擡
|
||||
核 核 覈
|
||||
汙 污
|
||||
洩 泄
|
||||
溈 潙
|
||||
潀 潨
|
||||
灶 竈
|
||||
為 爲
|
||||
痴 癡
|
||||
痺 痹
|
||||
皂 皁 皂
|
||||
眾 衆
|
||||
睪 睾 睪
|
||||
秘 祕
|
||||
稜 棱
|
||||
簷 檐
|
||||
粽 糉
|
||||
缽 鉢
|
||||
群 羣
|
||||
著 着 著
|
||||
蒍 蔿
|
||||
裡 裏
|
||||
踴 踊
|
||||
針 針 鍼
|
||||
韁 繮
|
||||
顎 齶
|
||||
鯰 鮎
|
||||
麵 麪
|
@ -0,0 +1,68 @@
|
||||
一口吃個 一口喫個
|
||||
一口吃成 一口喫成
|
||||
一家三口 一家三口
|
||||
一家五口 一家五口
|
||||
一家六口 一家六口
|
||||
一家四口 一家四口
|
||||
凶事 凶事
|
||||
凶信 凶信
|
||||
凶兆 凶兆
|
||||
凶吉 凶吉
|
||||
凶地 凶地
|
||||
凶多吉少 凶多吉少
|
||||
凶宅 凶宅
|
||||
凶年 凶年
|
||||
凶德 凶德
|
||||
凶怪 凶怪
|
||||
凶日 凶日
|
||||
凶服 凶服
|
||||
凶歲 凶歲
|
||||
凶死 凶死
|
||||
凶氣 凶氣
|
||||
凶煞 凶煞
|
||||
凶燄 凶燄
|
||||
凶神 凶神
|
||||
凶禮 凶禮
|
||||
凶耗 凶耗
|
||||
凶肆 凶肆
|
||||
凶荒 凶荒
|
||||
凶訊 凶訊
|
||||
凶豎 凶豎
|
||||
凶身 凶身
|
||||
凶逆 凶逆
|
||||
凶門 凶門
|
||||
口吃 口吃
|
||||
吃口 喫口 吃口
|
||||
吃口令 吃口令
|
||||
吃口飯 喫口飯
|
||||
吃吃 喫喫 吃吃
|
||||
吃子 喫子 吃子
|
||||
合著 合著
|
||||
吉凶 吉凶
|
||||
名著 名著
|
||||
四凶 四凶
|
||||
大凶 大凶
|
||||
巨著 巨著
|
||||
張口 張口
|
||||
昭著 昭著
|
||||
歲凶 歲凶
|
||||
胃口 胃口
|
||||
著作 著作
|
||||
著名 著名
|
||||
著式 著式
|
||||
著志 著志
|
||||
著於 著於
|
||||
著書 著書
|
||||
著白 著白
|
||||
著稱 著稱
|
||||
著者 著者
|
||||
著述 著述
|
||||
著錄 著錄
|
||||
蹇吃 蹇吃
|
||||
逢凶 逢凶
|
||||
避凶 避凶
|
||||
鄧艾吃 鄧艾吃
|
||||
鉅著 鉅著
|
||||
開口 開口
|
||||
閔凶 閔凶
|
||||
顯著 顯著
|
@ -16,7 +16,9 @@
|
||||
package com.google.android.exoplayer2;
|
||||
|
||||
import android.os.Looper;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.google.android.exoplayer2.decoder.DecoderInputBuffer;
|
||||
import com.google.android.exoplayer2.drm.DrmInitData;
|
||||
import com.google.android.exoplayer2.drm.DrmSession;
|
||||
@ -26,6 +28,7 @@ import com.google.android.exoplayer2.source.SampleStream;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
import com.google.android.exoplayer2.util.MediaClock;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
@ -183,7 +186,7 @@ public abstract class BaseRenderer implements Renderer, RendererCapabilities {
|
||||
return ADAPTIVE_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
// PlayerMessage.Target implementation.
|
||||
// PlayerMessage.CCTarget implementation.
|
||||
|
||||
@Override
|
||||
public void handleMessage(int what, @Nullable Object object) throws ExoPlaybackException {
|
||||
|
@ -16,19 +16,23 @@
|
||||
package com.google.android.exoplayer2;
|
||||
|
||||
import androidx.annotation.Nullable;
|
||||
|
||||
import com.google.android.exoplayer2.source.SampleStream;
|
||||
import com.google.android.exoplayer2.util.Assertions;
|
||||
import com.google.android.exoplayer2.util.MediaClock;
|
||||
import java.io.IOException;
|
||||
|
||||
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* A {@link Renderer} implementation whose track type is {@link C#TRACK_TYPE_NONE} and does not
|
||||
* consume data from its {@link SampleStream}.
|
||||
*/
|
||||
public abstract class NoSampleRenderer implements Renderer, RendererCapabilities {
|
||||
|
||||
@MonotonicNonNull private RendererConfiguration configuration;
|
||||
@MonotonicNonNull
|
||||
private RendererConfiguration configuration;
|
||||
private int index;
|
||||
private int state;
|
||||
@Nullable private SampleStream stream;
|
||||
@ -196,7 +200,7 @@ public abstract class NoSampleRenderer implements Renderer, RendererCapabilities
|
||||
return ADAPTIVE_NOT_SUPPORTED;
|
||||
}
|
||||
|
||||
// PlayerMessage.Target implementation.
|
||||
// PlayerMessage.CCTarget implementation.
|
||||
|
||||
@Override
|
||||
public void handleMessage(int what, @Nullable Object object) throws ExoPlaybackException {
|
||||
|
@ -16,6 +16,7 @@
|
||||
package com.google.android.exoplayer2.extractor.wav;
|
||||
|
||||
import android.util.Pair;
|
||||
|
||||
import com.google.android.exoplayer2.C;
|
||||
import com.google.android.exoplayer2.Format;
|
||||
import com.google.android.exoplayer2.ParserException;
|
||||
@ -30,10 +31,12 @@ import com.google.android.exoplayer2.util.Assertions;
|
||||
import com.google.android.exoplayer2.util.MimeTypes;
|
||||
import com.google.android.exoplayer2.util.ParsableByteArray;
|
||||
import com.google.android.exoplayer2.util.Util;
|
||||
import java.io.IOException;
|
||||
|
||||
import org.checkerframework.checker.nullness.qual.EnsuresNonNull;
|
||||
import org.checkerframework.checker.nullness.qual.MonotonicNonNull;
|
||||
|
||||
import java.io.IOException;
|
||||
|
||||
/**
|
||||
* Extracts data from WAV byte streams.
|
||||
*/
|
||||
@ -313,9 +316,11 @@ public final class WavExtractor implements Extractor {
|
||||
|
||||
/** Number of frames per block of the input (yet to be decoded) data. */
|
||||
private final int framesPerBlock;
|
||||
/** Target for the input (yet to be decoded) data. */
|
||||
/**
|
||||
* CCTarget for the input (yet to be decoded) data.
|
||||
*/
|
||||
private final byte[] inputData;
|
||||
/** Target for decoded (yet to be output) data. */
|
||||
/** CCTarget for decoded (yet to be output) data. */
|
||||
private final ParsableByteArray decodedData;
|
||||
/** The target size of each output sample, in frames. */
|
||||
private final int targetSampleSizeFrames;
|
||||
|
@ -141,7 +141,10 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import cn.hutool.core.io.IoUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import kotlin.Unit;
|
||||
import kotlin.text.StringsKt;
|
||||
import tw.nekomimi.nekogram.NekoConfig;
|
||||
import tw.nekomimi.nekogram.cc.CCConverter;
|
||||
import tw.nekomimi.nekogram.cc.CCTarget;
|
||||
import tw.nekomimi.nekogram.transtale.TranslateDb;
|
||||
import tw.nekomimi.nekogram.transtale.Translator;
|
||||
import tw.nekomimi.nekogram.transtale.TranslatorKt;
|
||||
@ -3244,6 +3247,42 @@ public class ChatActivityEnterView extends FrameLayout implements NotificationCe
|
||||
});
|
||||
cell.setMinimumWidth(AndroidUtilities.dp(196));
|
||||
menuPopupLayout.addView(cell, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT, 0, 48 * a++, 0, 0));
|
||||
cell = new ActionBarMenuSubItem(getContext());
|
||||
|
||||
cell.setTextAndIcon(LocaleController.getString("Translate", R.string.OpenCC), R.drawable.ic_translate);
|
||||
ActionBarMenuSubItem finalCell1 = cell;
|
||||
cell.setOnClickListener(v -> {
|
||||
if (menuPopupWindow != null && menuPopupWindow.isShowing()) {
|
||||
menuPopupWindow.dismiss();
|
||||
}
|
||||
String ccTarget = TranslateDb.getChatCCTarget(chatId, NekoConfig.ccInputLang);
|
||||
if (ccTarget == null || StringsKt.isBlank(ccTarget)) {
|
||||
Translator.showCCTargetSelect(finalCell1, (target) -> {
|
||||
if (menuPopupWindow != null && menuPopupWindow.isShowing()) {
|
||||
menuPopupWindow.dismiss();
|
||||
}
|
||||
ccComment(target);
|
||||
TranslateDb.saveChatCCTarget(chatId, target);
|
||||
return Unit.INSTANCE;
|
||||
});
|
||||
return;
|
||||
}
|
||||
ccComment(ccTarget);
|
||||
});
|
||||
cell.setOnLongClickListener(v -> {
|
||||
Translator.showCCTargetSelect(finalCell1, (target) -> {
|
||||
if (menuPopupWindow != null && menuPopupWindow.isShowing()) {
|
||||
menuPopupWindow.dismiss();
|
||||
}
|
||||
ccComment(target);
|
||||
TranslateDb.saveChatCCTarget(chatId, target);
|
||||
return Unit.INSTANCE;
|
||||
});
|
||||
return true;
|
||||
});
|
||||
cell.setMinimumWidth(AndroidUtilities.dp(196));
|
||||
menuPopupLayout.addView(cell, LayoutHelper.createFrame(LayoutHelper.MATCH_PARENT, 48, LocaleController.isRTL ? Gravity.RIGHT : Gravity.LEFT, 0, 48 * a++, 0, 0));
|
||||
|
||||
|
||||
}
|
||||
|
||||
@ -3561,6 +3600,12 @@ public class ChatActivityEnterView extends FrameLayout implements NotificationCe
|
||||
|
||||
}
|
||||
|
||||
private void ccComment(String target) {
|
||||
String text = messageEditText.getText().toString();
|
||||
text = CCConverter.get(CCTarget.valueOf(target)).convert(text);
|
||||
messageEditText.setText(text);
|
||||
}
|
||||
|
||||
public boolean isSendButtonVisible() {
|
||||
return sendButton.getVisibility() == VISIBLE;
|
||||
}
|
||||
|
@ -101,6 +101,9 @@ public class NekoConfig {
|
||||
public static String translateToLang;
|
||||
public static String translateInputLang;
|
||||
|
||||
public static String ccToLang;
|
||||
public static String ccInputLang;
|
||||
|
||||
public static boolean hideProxyByDefault;
|
||||
public static boolean useProxyItem;
|
||||
|
||||
@ -232,6 +235,9 @@ public class NekoConfig {
|
||||
translateToLang = preferences.getString("trans_to_lang", null);
|
||||
translateInputLang = preferences.getString("trans_input_to_lang", "en");
|
||||
|
||||
translateToLang = preferences.getString("opencc_to_lang", null);
|
||||
translateInputLang = preferences.getString("opencc_input_to_lang", null);
|
||||
|
||||
tabsTitleType = preferences.getInt("tabsTitleType", TITLE_TYPE_TEXT);
|
||||
confirmAVMessage = preferences.getBoolean("confirmAVMessage", false);
|
||||
askBeforeCall = preferences.getBoolean("askBeforeCall", false);
|
||||
@ -804,4 +810,18 @@ public class NekoConfig {
|
||||
preferences.edit().putBoolean("sendCommentAfterForward", sendCommentAfterForward = !sendCommentAfterForward).apply();
|
||||
|
||||
}
|
||||
|
||||
public static void setCCToLang(String toLang) {
|
||||
|
||||
preferences.edit().putString("opencc_to_lang", ccToLang = toLang).apply();
|
||||
|
||||
}
|
||||
|
||||
public static void setCCInputToLang(String toLang) {
|
||||
|
||||
preferences.edit().putString("opencc_input_to_lang", ccInputLang = toLang).apply();
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
@ -0,0 +1,455 @@
|
||||
package tw.nekomimi.nekogram.cc;
|
||||
|
||||
import java.io.DataOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.ObjectInputStream;
|
||||
import java.io.ObjectOutputStream;
|
||||
import java.util.AbstractMap;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Queue;
|
||||
import java.util.Set;
|
||||
import java.util.TreeMap;
|
||||
import java.util.TreeSet;
|
||||
import java.util.concurrent.LinkedBlockingDeque;
|
||||
|
||||
public class AhoCorasickDoubleArrayTrie<V> {
|
||||
protected int[] check;
|
||||
protected int[] base;
|
||||
int[] fail;
|
||||
int[][] output;
|
||||
protected V[] v;
|
||||
protected int[] l;
|
||||
protected int size;
|
||||
|
||||
public void parseText(char[] text, IHit<V> processor) {
|
||||
int position = 1;
|
||||
int currentState = 0;
|
||||
for (char c : text) {
|
||||
currentState = getState(currentState, c);
|
||||
int[] hitArray = output[currentState];
|
||||
if (hitArray != null) {
|
||||
for (int hit : hitArray) {
|
||||
processor.hit(position - l[hit], position, v[hit]);
|
||||
}
|
||||
}
|
||||
++position;
|
||||
}
|
||||
}
|
||||
|
||||
public void save(DataOutputStream out) throws Exception {
|
||||
out.writeInt(size);
|
||||
for (int i = 0; i < size; i++) {
|
||||
out.writeInt(base[i]);
|
||||
out.writeInt(check[i]);
|
||||
out.writeInt(fail[i]);
|
||||
int[] output = this.output[i];
|
||||
if (output == null) {
|
||||
out.writeInt(0);
|
||||
} else {
|
||||
out.writeInt(output.length);
|
||||
for (int o : output) {
|
||||
out.writeInt(o);
|
||||
}
|
||||
}
|
||||
}
|
||||
out.writeInt(l.length);
|
||||
for (int length : l) {
|
||||
out.writeInt(length);
|
||||
}
|
||||
}
|
||||
|
||||
public void save(ObjectOutputStream out) throws IOException {
|
||||
out.writeObject(base);
|
||||
out.writeObject(check);
|
||||
out.writeObject(fail);
|
||||
out.writeObject(output);
|
||||
out.writeObject(l);
|
||||
}
|
||||
|
||||
public void load(ObjectInputStream in, V[] value) throws IOException, ClassNotFoundException {
|
||||
base = (int[]) in.readObject();
|
||||
check = (int[]) in.readObject();
|
||||
fail = (int[]) in.readObject();
|
||||
output = (int[][]) in.readObject();
|
||||
l = (int[]) in.readObject();
|
||||
v = value;
|
||||
}
|
||||
|
||||
public V get(String key) {
|
||||
int index = exactMatchSearch(key);
|
||||
if (index >= 0) {
|
||||
return v[index];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public boolean set(String key, V value) {
|
||||
int index = exactMatchSearch(key);
|
||||
if (index >= 0) {
|
||||
v[index] = value;
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public V get(int index) {
|
||||
return v[index];
|
||||
}
|
||||
|
||||
public interface IHit<V> {
|
||||
void hit(int begin, int end, V value);
|
||||
}
|
||||
|
||||
public static class Hit<V> {
|
||||
public final int begin;
|
||||
public final int end;
|
||||
public final V value;
|
||||
|
||||
public Hit(int begin, int end, V value) {
|
||||
this.begin = begin;
|
||||
this.end = end;
|
||||
this.value = value;
|
||||
}
|
||||
}
|
||||
|
||||
private int getState(int currentState, char character) {
|
||||
int newCurrentState = transitionWithRoot(currentState, character);
|
||||
while (newCurrentState == -1) {
|
||||
currentState = fail[currentState];
|
||||
newCurrentState = transitionWithRoot(currentState, character);
|
||||
}
|
||||
return newCurrentState;
|
||||
}
|
||||
|
||||
protected int transition(int current, char c) {
|
||||
int b = current;
|
||||
int p;
|
||||
p = b + c + 1;
|
||||
if (b == check[p])
|
||||
b = base[p];
|
||||
else
|
||||
return -1;
|
||||
p = b;
|
||||
return p;
|
||||
}
|
||||
|
||||
protected int transitionWithRoot(int nodePos, char c) {
|
||||
int b = base[nodePos];
|
||||
int p;
|
||||
p = b + c + 1;
|
||||
if (b != check[p]) {
|
||||
if (nodePos == 0) return 0;
|
||||
return -1;
|
||||
}
|
||||
return p;
|
||||
}
|
||||
|
||||
public void build(TreeMap<String, V> map) {
|
||||
new Builder().build(map);
|
||||
}
|
||||
|
||||
private int fetch(State parent, List<Map.Entry<Integer, State>> siblings) {
|
||||
if (parent.isAcceptable()) {
|
||||
State fakeNode = new State(-(parent.getDepth() + 1));
|
||||
fakeNode.addEmit(parent.getLargestValueId());
|
||||
siblings.add(new AbstractMap.SimpleEntry<>(0, fakeNode));
|
||||
}
|
||||
for (Map.Entry<Character, State> entry : parent.getSuccess().entrySet()) {
|
||||
siblings.add(new AbstractMap.SimpleEntry<>(entry.getKey() + 1, entry.getValue()));
|
||||
}
|
||||
return siblings.size();
|
||||
}
|
||||
|
||||
private int exactMatchSearch(String key) {
|
||||
int result = -1;
|
||||
char[] keyChars = key.toCharArray();
|
||||
int b = base[0];
|
||||
int p;
|
||||
for (int i = 0; i < 0; i++) {
|
||||
p = b + (int) (keyChars[i]) + 1;
|
||||
if (b == check[p])
|
||||
b = base[p];
|
||||
else
|
||||
return result;
|
||||
}
|
||||
p = b;
|
||||
int n = base[p];
|
||||
if (b == check[p] && n < 0) {
|
||||
result = -n - 1;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
public int size() {
|
||||
return v == null ? 0 : v.length;
|
||||
}
|
||||
|
||||
private class Builder {
|
||||
private State rootState = new State();
|
||||
private boolean[] used;
|
||||
private int allocSize;
|
||||
private int progress;
|
||||
private int nextCheckPos;
|
||||
private int keySize;
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
public void build(TreeMap<String, V> map) {
|
||||
v = (V[]) map.values().toArray();
|
||||
l = new int[v.length];
|
||||
Set<String> keySet = map.keySet();
|
||||
addAllKeyword(keySet);
|
||||
buildDoubleArrayTrie(keySet);
|
||||
used = null;
|
||||
constructFailureStates();
|
||||
rootState = null;
|
||||
loseWeight();
|
||||
}
|
||||
|
||||
private void addKeyword(String keyword, int index) {
|
||||
State currentState = this.rootState;
|
||||
for (Character character : keyword.toCharArray()) {
|
||||
currentState = currentState.addState(character);
|
||||
}
|
||||
currentState.addEmit(index);
|
||||
l[index] = keyword.length();
|
||||
}
|
||||
|
||||
private void addAllKeyword(Collection<String> keywordSet) {
|
||||
int i = 0;
|
||||
for (String keyword : keywordSet) {
|
||||
addKeyword(keyword, i++);
|
||||
}
|
||||
}
|
||||
|
||||
private void constructFailureStates() {
|
||||
fail = new int[size + 1];
|
||||
fail[1] = base[0];
|
||||
output = new int[size + 1][];
|
||||
Queue<State> queue = new LinkedBlockingDeque<>();
|
||||
for (State depthOneState : this.rootState.getStates()) {
|
||||
depthOneState.setFailure(this.rootState, fail);
|
||||
queue.add(depthOneState);
|
||||
constructOutput(depthOneState);
|
||||
}
|
||||
while (!queue.isEmpty()) {
|
||||
State currentState = queue.remove();
|
||||
for (Character transition : currentState.getTransitions()) {
|
||||
State targetState = currentState.nextState(transition);
|
||||
queue.add(targetState);
|
||||
State traceFailureState = currentState.failure();
|
||||
while (traceFailureState.nextState(transition) == null) {
|
||||
traceFailureState = traceFailureState.failure();
|
||||
}
|
||||
State newFailureState = traceFailureState.nextState(transition);
|
||||
targetState.setFailure(newFailureState, fail);
|
||||
targetState.addEmit(newFailureState.emit());
|
||||
constructOutput(targetState);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void constructOutput(State targetState) {
|
||||
Collection<Integer> emit = targetState.emit();
|
||||
if (emit == null || emit.size() == 0) return;
|
||||
int[] output = new int[emit.size()];
|
||||
Iterator<Integer> it = emit.iterator();
|
||||
for (int i = 0; i < output.length; ++i) {
|
||||
output[i] = it.next();
|
||||
}
|
||||
AhoCorasickDoubleArrayTrie.this.output[targetState.getIndex()] = output;
|
||||
}
|
||||
|
||||
private void buildDoubleArrayTrie(Set<String> keySet) {
|
||||
progress = 0;
|
||||
keySize = keySet.size();
|
||||
resize(65536 * 32);
|
||||
base[0] = 1;
|
||||
nextCheckPos = 0;
|
||||
State root_node = this.rootState;
|
||||
List<Map.Entry<Integer, State>> siblings = new ArrayList<>(root_node.getSuccess().entrySet().size());
|
||||
fetch(root_node, siblings);
|
||||
insert(siblings);
|
||||
}
|
||||
|
||||
private void resize(int newSize) {
|
||||
int[] base2 = new int[newSize];
|
||||
int[] check2 = new int[newSize];
|
||||
boolean[] used2 = new boolean[newSize];
|
||||
if (allocSize > 0) {
|
||||
System.arraycopy(base, 0, base2, 0, allocSize);
|
||||
System.arraycopy(check, 0, check2, 0, allocSize);
|
||||
System.arraycopy(used, 0, used2, 0, allocSize);
|
||||
}
|
||||
base = base2;
|
||||
check = check2;
|
||||
used = used2;
|
||||
allocSize = newSize;
|
||||
}
|
||||
|
||||
private int insert(List<Map.Entry<Integer, State>> siblings) {
|
||||
int begin;
|
||||
int pos = Math.max(siblings.get(0).getKey() + 1, nextCheckPos) - 1;
|
||||
int nonzero_num = 0;
|
||||
int first = 0;
|
||||
if (allocSize <= pos)
|
||||
resize(pos + 1);
|
||||
outer:
|
||||
while (true) {
|
||||
pos++;
|
||||
if (allocSize <= pos)
|
||||
resize(pos + 1);
|
||||
if (check[pos] != 0) {
|
||||
nonzero_num++;
|
||||
continue;
|
||||
} else if (first == 0) {
|
||||
nextCheckPos = pos;
|
||||
first = 1;
|
||||
}
|
||||
begin = pos - siblings.get(0).getKey();
|
||||
if (allocSize <= (begin + siblings.get(siblings.size() - 1).getKey())) {
|
||||
double l = Math.max(1.05, 1.0 * keySize / (progress + 1));
|
||||
resize((int) (allocSize * l));
|
||||
}
|
||||
if (used[begin])
|
||||
continue;
|
||||
for (int i = 1; i < siblings.size(); i++)
|
||||
if (check[begin + siblings.get(i).getKey()] != 0)
|
||||
continue outer;
|
||||
break;
|
||||
}
|
||||
if (1.0 * nonzero_num / (pos - nextCheckPos + 1) >= 0.95)
|
||||
nextCheckPos = pos;
|
||||
used[begin] = true;
|
||||
size = Math.max(size, begin + siblings.get(siblings.size() - 1).getKey() + 1);
|
||||
for (Map.Entry<Integer, State> sibling : siblings) {
|
||||
check[begin + sibling.getKey()] = begin;
|
||||
}
|
||||
for (Map.Entry<Integer, State> sibling : siblings) {
|
||||
List<Map.Entry<Integer, State>> new_siblings = new ArrayList<>(sibling.getValue().getSuccess().entrySet().size() + 1);
|
||||
if (fetch(sibling.getValue(), new_siblings) == 0) {
|
||||
base[begin + sibling.getKey()] = (-sibling.getValue().getLargestValueId() - 1);
|
||||
progress++;
|
||||
} else {
|
||||
int h = insert(new_siblings);
|
||||
base[begin + sibling.getKey()] = h;
|
||||
}
|
||||
sibling.getValue().setIndex(begin + sibling.getKey());
|
||||
}
|
||||
return begin;
|
||||
}
|
||||
|
||||
private void loseWeight() {
|
||||
int[] nbase = new int[size + 65535];
|
||||
System.arraycopy(base, 0, nbase, 0, size);
|
||||
base = nbase;
|
||||
int[] ncheck = new int[size + 65535];
|
||||
System.arraycopy(check, 0, ncheck, 0, size);
|
||||
check = ncheck;
|
||||
}
|
||||
}
|
||||
|
||||
private static class State {
|
||||
protected final int depth;
|
||||
private State failure = null;
|
||||
private Set<Integer> emits = null;
|
||||
private final Map<Character, State> success = new TreeMap<>();
|
||||
private int index;
|
||||
|
||||
public State() {
|
||||
this(0);
|
||||
}
|
||||
|
||||
public State(int depth) {
|
||||
this.depth = depth;
|
||||
}
|
||||
|
||||
public int getDepth() {
|
||||
return this.depth;
|
||||
}
|
||||
|
||||
public void addEmit(int keyword) {
|
||||
if (this.emits == null) {
|
||||
this.emits = new TreeSet<>(Collections.reverseOrder());
|
||||
}
|
||||
this.emits.add(keyword);
|
||||
}
|
||||
|
||||
public Integer getLargestValueId() {
|
||||
if (emits == null || emits.size() == 0) return null;
|
||||
return emits.iterator().next();
|
||||
}
|
||||
|
||||
public void addEmit(Collection<Integer> emits) {
|
||||
for (int emit : emits) {
|
||||
addEmit(emit);
|
||||
}
|
||||
}
|
||||
|
||||
public Collection<Integer> emit() {
|
||||
return this.emits == null ? Collections.emptyList() : this.emits;
|
||||
}
|
||||
|
||||
public boolean isAcceptable() {
|
||||
return this.depth > 0 && this.emits != null;
|
||||
}
|
||||
|
||||
public State failure() {
|
||||
return this.failure;
|
||||
}
|
||||
|
||||
public void setFailure(State failState, int[] fail) {
|
||||
this.failure = failState;
|
||||
fail[index] = failState.index;
|
||||
}
|
||||
|
||||
private State nextState(Character character, boolean ignoreRootState) {
|
||||
State nextState = this.success.get(character);
|
||||
if (!ignoreRootState && nextState == null && this.depth == 0) {
|
||||
nextState = this;
|
||||
}
|
||||
return nextState;
|
||||
}
|
||||
|
||||
public State nextState(Character character) {
|
||||
return nextState(character, false);
|
||||
}
|
||||
|
||||
public State nextStateIgnoreRootState(Character character) {
|
||||
return nextState(character, true);
|
||||
}
|
||||
|
||||
public State addState(Character character) {
|
||||
State nextState = nextStateIgnoreRootState(character);
|
||||
if (nextState == null) {
|
||||
nextState = new State(this.depth + 1);
|
||||
this.success.put(character, nextState);
|
||||
}
|
||||
return nextState;
|
||||
}
|
||||
|
||||
public Collection<State> getStates() {
|
||||
return this.success.values();
|
||||
}
|
||||
|
||||
public Collection<Character> getTransitions() {
|
||||
return this.success.keySet();
|
||||
}
|
||||
|
||||
public Map<Character, State> getSuccess() {
|
||||
return success;
|
||||
}
|
||||
|
||||
public int getIndex() {
|
||||
return index;
|
||||
}
|
||||
|
||||
public void setIndex(int index) {
|
||||
this.index = index;
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,130 @@
|
||||
package tw.nekomimi.nekogram.cc
|
||||
|
||||
import java.util.*
|
||||
import kotlin.collections.HashMap
|
||||
|
||||
class CCConverter(val target: CCTarget) {
|
||||
|
||||
companion object {
|
||||
|
||||
val instances = HashMap<CCTarget, CCConverter>()
|
||||
|
||||
@JvmStatic
|
||||
fun get(target: CCTarget): CCConverter {
|
||||
return instances[target] ?: synchronized(instances) {
|
||||
instances[target] ?: CCConverter(target).also {
|
||||
instances[target] = it
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
val tries = LinkedList<AhoCorasickDoubleArrayTrie<String>>()
|
||||
|
||||
private fun addTrie(dicts: Array<CCDict>, revDicts: Array<CCDict> = arrayOf()) {
|
||||
val storage = TreeMap<String, LinkedList<String>>()
|
||||
for (dictionary in dicts) {
|
||||
dictionary.postInit()
|
||||
storage.putAll(dictionary.storage)
|
||||
}
|
||||
for (dictionary in revDicts) {
|
||||
dictionary.postInit()
|
||||
val revMap = HashMap<String, LinkedList<String>>()
|
||||
dictionary.storage.forEach { (key, value) ->
|
||||
value.forEach {
|
||||
revMap.getOrPut(it) { LinkedList() }.add(key)
|
||||
}
|
||||
}
|
||||
storage.putAll(revMap)
|
||||
}
|
||||
tries.add(AhoCorasickDoubleArrayTrie<String>().apply {
|
||||
build(TreeMap(mapOf(* storage.mapNotNull { it.key to it.value[0] }.toTypedArray())))
|
||||
})
|
||||
}
|
||||
|
||||
init {
|
||||
|
||||
when (target) {
|
||||
CCTarget.SC -> {
|
||||
addTrie(arrayOf(
|
||||
CCDict.JPShinjitaiCharacters,
|
||||
CCDict.JPVariantsRev
|
||||
))
|
||||
addTrie(arrayOf(
|
||||
CCDict.TSCharacters
|
||||
))
|
||||
}
|
||||
CCTarget.SP -> {
|
||||
addTrie(arrayOf(
|
||||
CCDict.JPShinjitaiCharacters,
|
||||
CCDict.JPShinjitaiPhrases,
|
||||
CCDict.JPVariantsRev,
|
||||
CCDict.HKVariantsRev,
|
||||
CCDict.HKVariantsRevPhrases,
|
||||
CCDict.TWPhrasesRev,
|
||||
CCDict.TWVariantsRevPhrases
|
||||
))
|
||||
addTrie(arrayOf(
|
||||
CCDict.TSCharacters,
|
||||
CCDict.TSPhrases
|
||||
))
|
||||
}
|
||||
CCTarget.TC -> {
|
||||
addTrie(arrayOf(
|
||||
CCDict.JPShinjitaiCharacters,
|
||||
CCDict.JPVariantsRev,
|
||||
CCDict.STCharacters,
|
||||
CCDict.STPhrases
|
||||
))
|
||||
}
|
||||
CCTarget.TT -> {
|
||||
addTrie(arrayOf(
|
||||
CCDict.JPShinjitaiCharacters,
|
||||
CCDict.JPShinjitaiPhrases,
|
||||
CCDict.JPVariantsRev,
|
||||
CCDict.STCharacters,
|
||||
CCDict.STPhrases
|
||||
))
|
||||
addTrie(arrayOf(
|
||||
CCDict.TWVariants,
|
||||
CCDict.TWPhrasesIT,
|
||||
CCDict.TWPhrasesName,
|
||||
CCDict.TWPhrasesOther
|
||||
))
|
||||
}
|
||||
CCTarget.HK -> {
|
||||
addTrie(arrayOf(
|
||||
CCDict.JPShinjitaiCharacters,
|
||||
CCDict.JPShinjitaiPhrases,
|
||||
CCDict.JPVariantsRev,
|
||||
CCDict.STCharacters,
|
||||
CCDict.STPhrases
|
||||
))
|
||||
addTrie(arrayOf(
|
||||
CCDict.HKVariants
|
||||
))
|
||||
}
|
||||
CCTarget.JP -> {
|
||||
addTrie(arrayOf(
|
||||
CCDict.STCharacters,
|
||||
CCDict.STPhrases
|
||||
))
|
||||
addTrie(arrayOf(
|
||||
CCDict.JPVariants,
|
||||
CCDict.JPShinjitaiCharacters,
|
||||
CCDict.JPShinjitaiPhrases
|
||||
))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun convert(input: String): String {
|
||||
var result = input
|
||||
for (trie in tries) {
|
||||
result = OpenCCUtil.segLongest(result.toCharArray(), trie)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
}
|
@ -0,0 +1,37 @@
|
||||
package tw.nekomimi.nekogram.cc
|
||||
|
||||
import org.telegram.messenger.ApplicationLoader
|
||||
import java.util.*
|
||||
import kotlin.collections.HashMap
|
||||
|
||||
enum class CCDict {
|
||||
HKVariantsRevPhrases,
|
||||
HKVariantsRev,
|
||||
HKVariants,
|
||||
JPShinjitaiCharacters,
|
||||
JPShinjitaiPhrases,
|
||||
JPVariantsRev,
|
||||
JPVariants,
|
||||
STCharacters,
|
||||
STPhrases,
|
||||
TSCharacters,
|
||||
TSPhrases,
|
||||
TWPhrasesIT,
|
||||
TWPhrasesName,
|
||||
TWPhrasesOther,
|
||||
TWPhrasesRev,
|
||||
TWVariantsRevPhrases,
|
||||
TWVariantsRev,
|
||||
TWVariants;
|
||||
|
||||
lateinit var storage: HashMap<String, LinkedList<String>>
|
||||
fun postInit() {
|
||||
if (::storage.isInitialized) return
|
||||
storage = HashMap()
|
||||
|
||||
ApplicationLoader.applicationContext.assets.open("dictionary/$name.txt").bufferedReader().forEachLine {
|
||||
storage[it.substringBefore("\t")] =
|
||||
LinkedList(it.substringAfter("\t").split(" "))
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
package tw.nekomimi.nekogram.cc
|
||||
|
||||
enum class CCTarget {
|
||||
SC, SP, TC, TT, HK, JP;
|
||||
}
|
@ -0,0 +1,31 @@
|
||||
@file:Suppress("unused")
|
||||
|
||||
package tw.nekomimi.nekogram.cc
|
||||
|
||||
object OpenCCUtil {
|
||||
|
||||
fun segLongest(charArray: CharArray, trie: AhoCorasickDoubleArrayTrie<String>): String {
|
||||
val wordNet = arrayOfNulls<String>(charArray.size)
|
||||
val lengthNet = IntArray(charArray.size)
|
||||
trie.parseText(charArray) { begin, end, value ->
|
||||
val length = end - begin
|
||||
if (length > lengthNet[begin]) {
|
||||
wordNet[begin] = value
|
||||
lengthNet[begin] = length
|
||||
}
|
||||
}
|
||||
val sb = StringBuilder(charArray.size)
|
||||
var offset = 0
|
||||
while (offset < wordNet.size) {
|
||||
if (wordNet[offset] == null) {
|
||||
sb.append(charArray[offset])
|
||||
++offset
|
||||
continue
|
||||
}
|
||||
sb.append(wordNet[offset])
|
||||
offset += lengthNet[offset]
|
||||
}
|
||||
return sb.toString()
|
||||
}
|
||||
|
||||
}
|
@ -155,11 +155,11 @@ fun ChatActivity.translateMessages(messages: Array<MessageObject>, target: Local
|
||||
if (parentActivity != null && !canceled.get()) {
|
||||
|
||||
AlertUtil.showTransFailedDialog(parentActivity, it is UnsupportedOperationException, it.message
|
||||
?: it.javaClass.simpleName, Runnable {
|
||||
?: it.javaClass.simpleName) {
|
||||
|
||||
translateMessages(messages, target)
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -192,11 +192,11 @@ fun ChatActivity.translateMessages(messages: Array<MessageObject>, target: Local
|
||||
if (parentActivity != null && !canceled.get()) {
|
||||
|
||||
AlertUtil.showTransFailedDialog(parentActivity, e is UnsupportedOperationException, e.message
|
||||
?: e.javaClass.simpleName, Runnable {
|
||||
?: e.javaClass.simpleName) {
|
||||
|
||||
translateMessages(messages, target)
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -229,11 +229,11 @@ fun ChatActivity.translateMessages(messages: Array<MessageObject>, target: Local
|
||||
if (parentActivity != null && !canceled.get()) {
|
||||
|
||||
AlertUtil.showTransFailedDialog(parentActivity, it is UnsupportedOperationException, it.message
|
||||
?: it.javaClass.simpleName, Runnable {
|
||||
?: it.javaClass.simpleName) {
|
||||
|
||||
translateMessages(messages, target)
|
||||
|
||||
})
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
@ -967,7 +967,6 @@ public class NekoGeneralSettingsActivity extends BaseFragment {
|
||||
} else if (position == appBarShadowRow) {
|
||||
textCell.setTextAndCheck(LocaleController.getString("DisableAppBarShadow", R.string.DisableAppBarShadow), NekoConfig.disableAppBarShadow, eventTypeRow != -1);
|
||||
} else if (position == usePersianCalenderRow) {
|
||||
textCell.setTextAndCheck(LocaleController.getString("UsePersianCalender", R.string.UsePersianCalender), false, false);
|
||||
} else if (position == autoPauseVideoRow) {
|
||||
textCell.setTextAndValueAndCheck(LocaleController.getString("AutoPauseVideo", R.string.AutoPauseVideo), LocaleController.getString("AutoPauseVideoAbout", R.string.AutoPauseVideoAbout), NekoConfig.autoPauseVideo, true, true);
|
||||
}
|
||||
|
@ -0,0 +1,38 @@
|
||||
package tw.nekomimi.nekogram.transtale;
|
||||
|
||||
import org.dizitart.no2.Document;
|
||||
import org.dizitart.no2.mapper.Mappable;
|
||||
import org.dizitart.no2.mapper.NitriteMapper;
|
||||
import org.dizitart.no2.objects.Id;
|
||||
import org.dizitart.no2.objects.Index;
|
||||
|
||||
@Index("chatId")
|
||||
public class ChatCCTarget implements Mappable {
|
||||
|
||||
@Id
|
||||
public int chatId;
|
||||
public String ccTarget;
|
||||
|
||||
public ChatCCTarget() {
|
||||
}
|
||||
|
||||
public ChatCCTarget(int chatId, String ccTarget) {
|
||||
this.chatId = chatId;
|
||||
this.ccTarget = ccTarget;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Document write(NitriteMapper mapper) {
|
||||
Document document = new Document();
|
||||
document.put("chatId", chatId);
|
||||
document.put("ccTarget", ccTarget);
|
||||
return document;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void read(NitriteMapper mapper, Document document) {
|
||||
chatId = ((int) document.get("chatId"));
|
||||
ccTarget = ((String) document.get("ccTarget"));
|
||||
}
|
||||
|
||||
}
|
@ -19,26 +19,49 @@ class TranslateDb(val code: String) {
|
||||
|
||||
val repo = HashMap<Locale, TranslateDb>()
|
||||
val chat = db.getRepository("chat", ChatLanguage::class.java)
|
||||
val ccTarget = db.getRepository("opencc", ChatCCTarget::class.java)
|
||||
|
||||
@JvmStatic fun getChatLanguage(chatId: Int, default: Locale): Locale {
|
||||
|
||||
return chat.find(ObjectFilters.eq("chatId", chatId)).firstOrDefault()?.language?.code2Locale ?: default
|
||||
return chat.find(ObjectFilters.eq("chatId", chatId)).firstOrDefault()?.language?.code2Locale
|
||||
?: default
|
||||
|
||||
}
|
||||
|
||||
@JvmStatic fun saveChatLanguage(chatId: Int, locale: Locale) = UIUtil.runOnIoDispatcher {
|
||||
@JvmStatic
|
||||
fun saveChatLanguage(chatId: Int, locale: Locale) = UIUtil.runOnIoDispatcher {
|
||||
|
||||
chat.update(ChatLanguage(chatId, locale.locale2code), true)
|
||||
|
||||
}
|
||||
|
||||
@JvmStatic fun currentTarget() = NekoConfig.translateToLang?.transDbByCode ?: LocaleController.getInstance().currentLocale.transDb
|
||||
@JvmStatic
|
||||
fun getChatCCTarget(chatId: Int, default: String?): String? {
|
||||
|
||||
@JvmStatic fun forLocale(locale: Locale) = locale.transDb
|
||||
return ccTarget.find(ObjectFilters.eq("chatId", chatId)).firstOrDefault()?.ccTarget
|
||||
?: default
|
||||
|
||||
@JvmStatic fun currentInputTarget() = NekoConfig.translateInputLang.transDbByCode
|
||||
}
|
||||
|
||||
@JvmStatic fun clearAll() {
|
||||
@JvmStatic
|
||||
fun saveChatCCTarget(chatId: Int, target: String) = UIUtil.runOnIoDispatcher {
|
||||
|
||||
ccTarget.update(ChatCCTarget(chatId, target), true)
|
||||
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun currentTarget() = NekoConfig.translateToLang?.transDbByCode
|
||||
?: LocaleController.getInstance().currentLocale.transDb
|
||||
|
||||
@JvmStatic
|
||||
fun forLocale(locale: Locale) = locale.transDb
|
||||
|
||||
@JvmStatic
|
||||
fun currentInputTarget() = NekoConfig.translateInputLang.transDbByCode
|
||||
|
||||
@JvmStatic
|
||||
fun clearAll() {
|
||||
|
||||
db.listRepositories()
|
||||
.filter { it != "chat" }
|
||||
|
@ -8,6 +8,7 @@ import org.telegram.messenger.LocaleController
|
||||
import org.telegram.messenger.R
|
||||
import tw.nekomimi.nekogram.NekoConfig
|
||||
import tw.nekomimi.nekogram.PopupBuilder
|
||||
import tw.nekomimi.nekogram.cc.CCTarget
|
||||
import tw.nekomimi.nekogram.transtale.source.GoogleAppTranslator
|
||||
import tw.nekomimi.nekogram.transtale.source.LingoTranslator
|
||||
import tw.nekomimi.nekogram.transtale.source.YandexTranslator
|
||||
@ -98,7 +99,9 @@ interface Translator {
|
||||
|
||||
}
|
||||
|
||||
@JvmStatic @JvmOverloads fun showTargetLangSelect(anchor: View, input: Boolean = false, full: Boolean = false, callback: (Locale) -> Unit) {
|
||||
@JvmStatic
|
||||
@JvmOverloads
|
||||
fun showTargetLangSelect(anchor: View, input: Boolean = false, full: Boolean = false, callback: (Locale) -> Unit) {
|
||||
|
||||
val builder = PopupBuilder(anchor)
|
||||
|
||||
@ -168,9 +171,39 @@ interface Translator {
|
||||
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun showCCTargetSelect(anchor: View, callback: (String) -> Unit) {
|
||||
|
||||
val builder = PopupBuilder(anchor)
|
||||
|
||||
builder.setItems(arrayOf(
|
||||
LocaleController.getString("CCNo", R.string.CCNo),
|
||||
LocaleController.getString("CCSC", R.string.CCSC),
|
||||
LocaleController.getString("CCSP", R.string.CCSP),
|
||||
LocaleController.getString("CCTC", R.string.CCTC),
|
||||
LocaleController.getString("CCHK", R.string.CCHK),
|
||||
LocaleController.getString("CCTT", R.string.CCTT),
|
||||
LocaleController.getString("CCJP", R.string.CCJP)
|
||||
)) { index: Int, _ ->
|
||||
callback(when (index) {
|
||||
1 -> CCTarget.SC.name
|
||||
2 -> CCTarget.SP.name
|
||||
3 -> CCTarget.TC.name
|
||||
4 -> CCTarget.HK.name
|
||||
5 -> CCTarget.TT.name
|
||||
6 -> CCTarget.JP.name
|
||||
else -> ""
|
||||
})
|
||||
}
|
||||
|
||||
builder.show()
|
||||
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
@JvmOverloads
|
||||
fun translate(to: Locale = NekoConfig.translateToLang?.code2Locale ?: LocaleController.getInstance().currentLocale, query: String, translateCallBack: TranslateCallBack) {
|
||||
fun translate(to: Locale = NekoConfig.translateToLang?.code2Locale
|
||||
?: LocaleController.getInstance().currentLocale, query: String, translateCallBack: TranslateCallBack) {
|
||||
|
||||
UIUtil.runOnIoDispatcher {
|
||||
|
||||
@ -186,7 +219,8 @@ interface Translator {
|
||||
|
||||
}.onFailure {
|
||||
|
||||
translateCallBack.onFailed(it is UnsupportedOperationException, it.message ?: it.javaClass.simpleName)
|
||||
translateCallBack.onFailed(it is UnsupportedOperationException, it.message
|
||||
?: it.javaClass.simpleName)
|
||||
|
||||
}
|
||||
|
||||
|
@ -230,8 +230,6 @@
|
||||
<string name="NekoXFaq">NekoX FAQ</string>
|
||||
|
||||
<string name="TransSite">Translate Platform</string>
|
||||
<string name="UsePersianCalender">Use Persian Calender</string>
|
||||
|
||||
<string name="OpenKayChain">OpenPGP Client</string>
|
||||
<string name="OpenPGPApp">OpenPGP Provider</string>
|
||||
<string name="OpenPGPKey">OpenPGP Key</string>
|
||||
@ -261,4 +259,15 @@
|
||||
<string name="FCTitle">About application updates</string>
|
||||
<string name="FCInfo">Follow our announcements and updates channel?</string>
|
||||
|
||||
<string name="OpenCC" translatable="false">OpenCC</string>
|
||||
<string name="CCTitle">OpenCC (Chinese Convert)</string>
|
||||
<string name="CCTarget">Target</string>
|
||||
<string name="CCNo">None</string>
|
||||
<string name="CCTC">Traditional Chinese</string>
|
||||
<string name="CCHK">Traditional Chinese (Hong Kong)</string>
|
||||
<string name="CCTT">Traditional Chinese (Taiwan)</string>
|
||||
<string name="CCSC">Simplified Chinese</string>
|
||||
<string name="CCSP">Simplified Chinese (China)</string>
|
||||
<string name="CCJP">New Japanese Kanji (Shinjitai)</string>
|
||||
|
||||
</resources>
|
@ -0,0 +1,22 @@
|
||||
package tw.nekomimi.nekogram.cc
|
||||
|
||||
import org.junit.Test
|
||||
import org.junit.runner.RunWith
|
||||
import org.robolectric.RobolectricTestRunner
|
||||
|
||||
@RunWith(RobolectricTestRunner::class)
|
||||
class OpenCCTest {
|
||||
|
||||
@Test
|
||||
fun ccTest() {
|
||||
|
||||
val example = "你好, 开放中文转换!"
|
||||
|
||||
for (target in CCTarget.values()) {
|
||||
print(target.name + ": ")
|
||||
println(CCConverter(target).convert(example))
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
Loading…
Reference in New Issue
Block a user