Ticket #44974

プラグインで使用されているスクリプトレットを UTF-8 にしたい (PR #1390 関連)

Open Date: 2022-07-01 20:28 Last Update: 2022-07-11 17:49

Reporter:
Owner:
(None)
Status:
Open
Component:
(None)
MileStone:
(None)
Priority:
5 - Medium
Severity:
5 - Medium
Resolution:
None
File:
None

Details

現在 MergePlugins フォルダにある *.sct ファイルは Shift_JIS で記述されているので、 これを (日本語以外の文字列に対応できるように) UTF-8 にしたいという要望です。 試した範囲では、下記のような状況でした。

*.sct を UTF-8 で保存しても「プラグイン」-「プラグインの設定...」を実行するとエラーになり、 UTF-8 を使用するには sct から wsc に移殖する必要がありそうです。

  • WinMerge 本体側で、拡張子 *.wsc のスクリプトレットを受け付けるように修正 (PR #1390)
  • UTF-8 で書きたい場合は *.sct の代わりに *.wsc を使用する
  • *.wsc のファイル先頭で文字コードを UTF-8 として宣言

insert datetime.sct を insert datetime.wsc に書き換えて動作するところまでは確認しました。 ファイル名を変更した場合 *.sln ファイルや InnoSetup フォルダ以下も書き換える必要があるので、 書き直したスクリプトレットは PR に含めていません。

  1. <?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
  2. <package>
  3. <?component error="true" debug="true"?>
  4. <comment><![CDATA[
  5. insert datetime.wsc
  6. This script was converted from insert datetime.sct
  7. ]]></comment>
  8. <component>
  9. <public>
  10. <property name="PluginEvent">
  11. <get/>
  12. </property>
  13. <property name="PluginDescription">
  14. <get/>
  15. </property>
  16. <property name="PluginExtendedProperties">
  17. <get/>
  18. </property>
  19. <method name="InsertDate"/>
  20. <method name="InsertTime"/>
  21. <method name="ShowSettingsDialog"/>
  22. </public>
  23. <script language="VBScript"><![CDATA[
  24. Option Explicit
  25. Function get_PluginEvent()
  26. get_PluginEvent = "EDITOR_SCRIPT"
  27. End Function
  28. Function get_PluginDescription()
  29. get_PluginDescription = "Basic text functions for the context menu"
  30. End Function
  31. Function get_PluginFileFilters()
  32. get_PluginFileFilters= ".*"
  33. End Function
  34. Function get_PluginExtendedProperties()
  35. get_PluginExtendedProperties = "InsertDate.MenuCaption=Insert Date;InsertTime.MenuCaption=Insert Time"
  36. End Function
  37. ' transformation functions
  38. Function InsertDate(Text)
  39. InsertDate = Text + FormatDateTime(Date, 1)
  40. End Function
  41. Function InsertTime(Text)
  42. InsertTime = Text + FormatDateTime(Time, 4)
  43. End Function
  44. Function ShowSettingsDialog()
  45. MsgBox "There are no configuration options."
  46. End Function
  47. ]]></script>
  48. </component>
  49. </package>

Ticket History (3/3 Histories)

2022-07-01 20:28 Updated by: stonee-k
  • New Ticket "プラグインで使用されているスクリプトレットを UTF-8 にしたい (PR #1390 関連)" created
2022-07-01 23:26 Updated by: sdottaka
Comment

PRありがとうございます。取り込ませていただきました。

既存のプラグインを .sct から .wsc に変更するのは、上書きインストール時に以前の .sct ファイルを削除したり、 ZIP版で上書きされることを考えると、しんどそう躊躇してしまいそうです。

.sct でもUCS-2LE(UTF-16)で保存して、以下の様にプラグインを修正すれば、複数の言語には対応できそうですが、これだとまずいでしょうか? (GitHub等でバイナリファイル扱いされてdiffが見えなくなりそうというものはありますが...)

また、最終的には、WinMerge同梱プラグインで使用している文字列は日本語部を取り除き、各言語に翻訳してもらえるように、.po ファイルに移して、.poファイルから各言語の文字列を取得したいと思っています。

--- C:/dev/winmerge/Plugins/dlls/CompareMSExcelFiles.sct	Thu Jun 30 23:05:19 2022
+++ C:/dev/winmerge/Build/X64/Debug/MergePlugins/CompareMSExcelFiles.sct	Fri Jul  1 23:15:48 2022
@@ -606,7 +606,7 @@
 
 Function ShowSettingsDialog()
 	Dim tname: tname = fso.BuildPath(fso.GetSpecialFolder(2), fso.GetTempName() & ".hta")
-	Dim tfile: Set tfile = fso.CreateTextFile(tname)
+	Dim tfile: Set tfile = fso.CreateTextFile(tname, True, True)
 	Dim mshta
 	tfile.Write getResource("dialog1")
 	tfile.Close
@@ -629,7 +629,7 @@
 <html>
   <head>
     <title>CompareMSExcelFiles.sct WinMerge Plugin Options</title>
-    <meta content="text/html" charset="Shift_JIS">
+    <meta content="text/html" charset="UTF-16">
     <style>
       body { background-color: lightgray; }
       ul { list-style:none; }

(Edited, 2022-07-01 23:37 Updated by: sdottaka)
2022-07-11 17:49 Updated by: stonee-k
Comment

Reply To sdottaka

PRありがとうございます。取り込ませていただきました。

取り込みありがとうございます。

UTF-16 の sct ファイルでも動作を確認してみました。

GitHub に UTF-16 のファイルを登録するのはうれしくない気がするので、多言語対応したい場合は別途 UTF-8 な wsc を用意するか UTF-16 で書き直した sct を手元で管理することになりそうです。

Attachment File List

No attachments

Edit

You are not logged in. I you are not logged in, your comment will be treated as an anonymous post. » Login