From eaf3267353710db159eac311af8983ad7ad60667 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=98=E9=9F=AC=20=E5=BC=A0?= Date: Tue, 8 Dec 2020 19:48:42 +0800 Subject: [PATCH 1/5] Add space for pinyin translation --- Flow.Launcher.Infrastructure/PinyinAlphabet.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Flow.Launcher.Infrastructure/PinyinAlphabet.cs b/Flow.Launcher.Infrastructure/PinyinAlphabet.cs index 38f1ab879c1..9396226c753 100644 --- a/Flow.Launcher.Infrastructure/PinyinAlphabet.cs +++ b/Flow.Launcher.Infrastructure/PinyinAlphabet.cs @@ -36,8 +36,8 @@ public string Translate(string content) { if (WordsHelper.HasChinese(content)) { - var result = WordsHelper.GetPinyin(content, ";"); - result = GetFirstPinyinChar(result) + result.Replace(";", ""); + var result = WordsHelper.GetPinyin(content, " "); + result = GetFirstPinyinChar(result) + result; _pinyinCache[content] = result; return result; } @@ -59,7 +59,7 @@ public string Translate(string content) private string GetFirstPinyinChar(string content) { - return string.Concat(content.Split(';').Select(x => x.First())); + return string.Concat(content.Split(' ').Select(x => x.First())); } } } \ No newline at end of file From aaa938191ad3e69aff5ae9de1daabfc69b5a9b74 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=98=E9=9F=AC=20=E5=BC=A0?= Date: Fri, 11 Dec 2020 22:08:46 +0800 Subject: [PATCH 2/5] Manually add sapce to only the cinese character and the surrounding. --- .../PinyinAlphabet.cs | 42 +++++++++++++++++-- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/Flow.Launcher.Infrastructure/PinyinAlphabet.cs b/Flow.Launcher.Infrastructure/PinyinAlphabet.cs index 9396226c753..d35250398bf 100644 --- a/Flow.Launcher.Infrastructure/PinyinAlphabet.cs +++ b/Flow.Launcher.Infrastructure/PinyinAlphabet.cs @@ -9,6 +9,7 @@ using Flow.Launcher.Infrastructure.UserSettings; using ToolGood.Words.Pinyin; using System.Threading.Tasks; +using Microsoft.AspNetCore.Localization; namespace Flow.Launcher.Infrastructure { @@ -36,10 +37,43 @@ public string Translate(string content) { if (WordsHelper.HasChinese(content)) { - var result = WordsHelper.GetPinyin(content, " "); - result = GetFirstPinyinChar(result) + result; - _pinyinCache[content] = result; - return result; + var resultList = WordsHelper.GetPinyinList(content); + + List chineseIndexs = new List(); + + for (int i = 0; i < content.Length; i++) + { + if (resultList[i].Length != 1 || !(resultList[i][0] == content[i])) + chineseIndexs.Add(i); + } + StringBuilder resultBuilder = new StringBuilder(); + resultBuilder.Append(string.Concat(resultList.Where((r, i) => chineseIndexs.Contains(i)).Select(s => s.First()))); + resultBuilder.Append(' '); + + int currentChineseIndex = 0; + int lastChineseIndex = -1; + for (int i = 0; i < resultList.Length; i++) + { + if (currentChineseIndex < chineseIndexs.Count && chineseIndexs[currentChineseIndex] == i) + { + resultBuilder.Append(' '); + + resultBuilder.Append(resultList[i]); + currentChineseIndex++; + lastChineseIndex = i; + } + else + { + if (i == lastChineseIndex + 1) + { + resultBuilder.Append(' '); + } + resultBuilder.Append(resultList[i]); + } + } + + + return _pinyinCache[content] = resultBuilder.ToString(); } else { From d64b4b5b0c27918281975f2260f8bc2d1d50c0d3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=98=E9=9F=AC=20=E5=BC=A0?= Date: Fri, 11 Dec 2020 22:20:09 +0800 Subject: [PATCH 3/5] Change the way getting acronym --- Flow.Launcher.Infrastructure/PinyinAlphabet.cs | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/Flow.Launcher.Infrastructure/PinyinAlphabet.cs b/Flow.Launcher.Infrastructure/PinyinAlphabet.cs index d35250398bf..59bd897be0c 100644 --- a/Flow.Launcher.Infrastructure/PinyinAlphabet.cs +++ b/Flow.Launcher.Infrastructure/PinyinAlphabet.cs @@ -47,7 +47,11 @@ public string Translate(string content) chineseIndexs.Add(i); } StringBuilder resultBuilder = new StringBuilder(); - resultBuilder.Append(string.Concat(resultList.Where((r, i) => chineseIndexs.Contains(i)).Select(s => s.First()))); + + foreach (var chineseIndex in chineseIndexs) + { + resultBuilder.Append(resultList[chineseIndex].First()); + } resultBuilder.Append(' '); int currentChineseIndex = 0; @@ -90,10 +94,5 @@ public string Translate(string content) return content; } } - - private string GetFirstPinyinChar(string content) - { - return string.Concat(content.Split(' ').Select(x => x.First())); - } } } \ No newline at end of file From 64d67c1aa58c112d457d5997b4c8c0ce17855e4e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=98=E9=9F=AC=20=E5=BC=A0?= Date: Sat, 12 Dec 2020 14:55:41 +0800 Subject: [PATCH 4/5] Update PinyinAlphabet.cs optimize Chinese character check logic Co-Authored-By: ToolGood --- .../PinyinAlphabet.cs | 27 ++++++++----------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/Flow.Launcher.Infrastructure/PinyinAlphabet.cs b/Flow.Launcher.Infrastructure/PinyinAlphabet.cs index 59bd897be0c..d5271437cac 100644 --- a/Flow.Launcher.Infrastructure/PinyinAlphabet.cs +++ b/Flow.Launcher.Infrastructure/PinyinAlphabet.cs @@ -39,37 +39,32 @@ public string Translate(string content) { var resultList = WordsHelper.GetPinyinList(content); - List chineseIndexs = new List(); - - for (int i = 0; i < content.Length; i++) - { - if (resultList[i].Length != 1 || !(resultList[i][0] == content[i])) - chineseIndexs.Add(i); - } StringBuilder resultBuilder = new StringBuilder(); + - foreach (var chineseIndex in chineseIndexs) + for (int i = 0; i < resultList.Length; i++) { - resultBuilder.Append(resultList[chineseIndex].First()); + if (content[i] >= 0x3400 && content[i] <= 0x9FD5) + resultBuilder.Append(resultList[i].First()); } + resultBuilder.Append(' '); - int currentChineseIndex = 0; - int lastChineseIndex = -1; + bool pre = false; + for (int i = 0; i < resultList.Length; i++) { - if (currentChineseIndex < chineseIndexs.Count && chineseIndexs[currentChineseIndex] == i) + if (content[i] >= 0x3400 && content[i] <= 0x9FD5) { resultBuilder.Append(' '); - resultBuilder.Append(resultList[i]); - currentChineseIndex++; - lastChineseIndex = i; + pre = true; } else { - if (i == lastChineseIndex + 1) + if (pre) { + pre = false; resultBuilder.Append(' '); } resultBuilder.Append(resultList[i]); From 4c773dbaa1842f15e4890139216637a83dacdcb2 Mon Sep 17 00:00:00 2001 From: Jeremy Wu Date: Mon, 14 Dec 2020 21:21:48 +1100 Subject: [PATCH 5/5] clean up, no code changes --- Flow.Launcher.Infrastructure/PinyinAlphabet.cs | 8 -------- 1 file changed, 8 deletions(-) diff --git a/Flow.Launcher.Infrastructure/PinyinAlphabet.cs b/Flow.Launcher.Infrastructure/PinyinAlphabet.cs index d5271437cac..80fd1282035 100644 --- a/Flow.Launcher.Infrastructure/PinyinAlphabet.cs +++ b/Flow.Launcher.Infrastructure/PinyinAlphabet.cs @@ -1,15 +1,10 @@ using System; using System.Collections.Concurrent; -using System.Collections.Generic; using System.Linq; using System.Text; using JetBrains.Annotations; -using Flow.Launcher.Infrastructure.Logger; -using Flow.Launcher.Infrastructure.Storage; using Flow.Launcher.Infrastructure.UserSettings; using ToolGood.Words.Pinyin; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Localization; namespace Flow.Launcher.Infrastructure { @@ -28,7 +23,6 @@ public void Initialize([NotNull] Settings settings) _settings = settings ?? throw new ArgumentNullException(nameof(settings)); } - public string Translate(string content) { if (_settings.ShouldUsePinyin) @@ -40,7 +34,6 @@ public string Translate(string content) var resultList = WordsHelper.GetPinyinList(content); StringBuilder resultBuilder = new StringBuilder(); - for (int i = 0; i < resultList.Length; i++) { @@ -71,7 +64,6 @@ public string Translate(string content) } } - return _pinyinCache[content] = resultBuilder.ToString(); } else