• R/O
  • SSH
  • HTTPS

mergedoc: Commit


Commit MetaInfo

Revisión2949 (tree)
Tiempo2022-11-30 18:00:14
Autorcypher256

Log Message

(empty log message)

Cambiar Resumen

Diferencia incremental

--- trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/resource/TranslationString.java (revision 2948)
+++ trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/resource/TranslationString.java (revision 2949)
@@ -8,6 +8,7 @@
88
99 import static jp.sourceforge.mergedoc.pleiades.resource.FileNamez.*;
1010
11+import java.nio.charset.Charset;
1112 import java.util.ArrayList;
1213 import java.util.List;
1314 import java.util.Set;
@@ -354,6 +355,17 @@
354355 ends.insert(0, mat.group(4));
355356 }
356357 }
358+
359+ // 先頭絵文字をトリム
360+ if (body.length() >= 2) {
361+ Charset MS_CHAR = Charset.forName("MS932");
362+ String bef = body.substring(0, 1);
363+ String aft = new String(bef.getBytes(MS_CHAR), MS_CHAR);
364+ if (!bef.equals(aft)) {
365+ starts.append(bef);
366+ body = body.substring(1);
367+ }
368+ }
357369
358370 // ピリオド + 連続する英小文字の場合は何もしない 例) .project
359371 if (body.startsWith(".") && body.matches("\\.[a-z]+")) {
--- trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/resource/TranslationDictionary.java (revision 2948)
+++ trunk/Pleiades/src/main/java/jp/sourceforge/mergedoc/pleiades/runtime/resource/TranslationDictionary.java (revision 2949)
@@ -10,6 +10,7 @@
1010
1111 import java.io.File;
1212 import java.io.FileNotFoundException;
13+import java.nio.charset.Charset;
1314 import java.util.HashMap;
1415 import java.util.List;
1516 import java.util.Map;
@@ -56,6 +57,9 @@
5657
5758 /** グローバルマルチバイト文字配列 (英語圏でも使用されるマルチバイト文字) */
5859 private static final char[] GLOBAL_MULTIBYTES_CHARS = "‐‘’“”¤¶\u00A0…⇧⌘⌥⌃⏎→".toCharArray();
60+
61+ /** 絵文字が使用できない日本語文字セット (絵文字混入判定用) */
62+ private static final Charset NON_EMOJI_JP_CHARSET = Charset.forName("MS932");
5963
6064 /** Pleiades コンテキスト */
6165 private static PleiadesContext pleiadesContext = PleiadesContext.getInstance();
@@ -476,7 +480,9 @@
476480 if (
477481 e.length() != e.getBytes().length &&
478482 !e.contains(" (") && // 丸括弧内のみ翻訳されている場合があるため
479- !StringUtils.containsAny(e, GLOBAL_MULTIBYTES_CHARS)
483+ !StringUtils.containsAny(e, GLOBAL_MULTIBYTES_CHARS) &&
484+ // ただし、絵文字 (MS 日本語以外のマルチバイト) が含まれていないこと (先頭絵文字トリム対応)
485+ e.equals(new String(e.getBytes(NON_EMOJI_JP_CHARSET), NON_EMOJI_JP_CHARSET))
480486 ) {
481487 ja = en;
482488 }
--- trunk/Pleiades/src/test/java/jp/sourceforge/mergedoc/pleiades/runtime/resource/TranslationDictionaryTest.java (revision 2948)
+++ trunk/Pleiades/src/test/java/jp/sourceforge/mergedoc/pleiades/runtime/resource/TranslationDictionaryTest.java (revision 2949)
@@ -394,6 +394,13 @@
394394 assertLookup("Invalid input url:", "無効な URL 入力:");
395395 assertLookup("Invalid input url", "無効な URL 入力");
396396
397+ // 先頭トリム:絵文字
398+ assertLookup("📂 Browse...", "📂 参照...");
399+ assertLookup("🗑️ Remove", "🗑️ 除去");
400+ assertLookup("⚠️ Security risk", "⚠️ セキュリティー・リスク");
401+ assertLookup("🔏 Open in Editor...", "🔏 エディターで開く...");
402+ assertLookup("⚠️ Do you trust unsigned content of unknown origin?", "⚠️ 出所不明の署名されていないコンテンツを信頼しますか?");
403+
397404 // 全角混在 (記号表記は AOP で変更可能にしたため訳から除外)
398405 assertLookup("Space ( ・ )", "空白");
399406 assertLookup("Ideographic space ( ° )", "全角空白");
Show on old repository browser