Wikipedia翻訳支援ツール
Revision | 1aa71461426e862b580d4f6c44fe152f0e69585a (tree) |
---|---|
Time | 2014-04-03 18:14:39 |
Author | ![]() |
Commiter | honeplus |
#30840 記事名のエスケープを明示的に行うようにし、扱えない文字が残っていたのを修正,
1.31リリースに向けた各種記述更新,
開発環境がVS2013になったことによる差分
git-svn-id: http://svn.osdn.net/svnroot/wptscs/trunk@53 7cc79d57-4d93-40a1-83d5-ec7b38613dec
@@ -71,6 +71,9 @@ | ||
71 | 71 | <Name>HmLib</Name> |
72 | 72 | </ProjectReference> |
73 | 73 | </ItemGroup> |
74 | + <ItemGroup> | |
75 | + <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" /> | |
76 | + </ItemGroup> | |
74 | 77 | <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" /> |
75 | 78 | <Import Project="$(ProgramFiles)\MSBuild\StyleCop\v4.7\StyleCop.Targets" /> |
76 | 79 | <!-- To modify your build process, add your task inside one of the targets below and uncomment it. |
@@ -1,12 +1,12 @@ | ||
1 | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | 2 | <WixLocalization Culture="en-us" Codepage="1252" xmlns="http://schemas.microsoft.com/wix/2006/localization"> |
3 | - <String Id="ProductName" Overridable="yes">Translation Support for Wikipedia Ver1.30</String> | |
3 | + <String Id="ProductName" Overridable="yes">Translation Support for Wikipedia Ver1.31</String> | |
4 | 4 | <String Id="LanguageCode" Overridable="yes">1033</String> |
5 | 5 | <String Id="CodepageCode" Overridable="yes">1252</String> |
6 | 6 | <String Id="Culture" Overridable="yes">en-us</String> |
7 | 7 | <String Id="Manufacturer" Overridable="yes">honeplus</String> |
8 | 8 | <String Id="PackageKeywords" Overridable="yes">Installer</String> |
9 | - <String Id="PackageDescription" Overridable="yes">Translation Support for Wikipedia Ver1.30 Installer</String> | |
9 | + <String Id="PackageDescription" Overridable="yes">Translation Support for Wikipedia Ver1.31 Installer</String> | |
10 | 10 | <String Id="ExeShortcutName" Overridable="yes">Translation Support for Wikipedia</String> |
11 | 11 | <String Id="AppUrlInfoAbout" Overridable="yes">http://sourceforge.jp/projects/wptscs/</String> |
12 | 12 | <String Id="NoDowngradeMsg" Overridable="yes">A later version of [ProductName] is already installed.</String> |
@@ -1,12 +1,12 @@ | ||
1 | 1 | <?xml version="1.0" encoding="utf-8"?> |
2 | 2 | <WixLocalization Culture="ja-jp" Codepage="932" xmlns="http://schemas.microsoft.com/wix/2006/localization"> |
3 | - <String Id="ProductName" Overridable="yes">Wikipedia 翻訳支援ツール Ver1.30</String> | |
3 | + <String Id="ProductName" Overridable="yes">Wikipedia 翻訳支援ツール Ver1.31</String> | |
4 | 4 | <String Id="LanguageCode" Overridable="yes">1041</String> |
5 | 5 | <String Id="CodepageCode" Overridable="yes">932</String> |
6 | 6 | <String Id="Culture" Overridable="yes">ja-jp</String> |
7 | 7 | <String Id="Manufacturer" Overridable="yes">honeplus</String> |
8 | 8 | <String Id="PackageKeywords" Overridable="yes">インストーラ</String> |
9 | - <String Id="PackageDescription" Overridable="yes">Wikipedia 翻訳支援ツール Ver1.30 インストーラ</String> | |
9 | + <String Id="PackageDescription" Overridable="yes">Wikipedia 翻訳支援ツール Ver1.31 インストーラ</String> | |
10 | 10 | <String Id="ExeShortcutName" Overridable="yes">Wikipedia 翻訳支援ツール</String> |
11 | 11 | <String Id="AppUrlInfoAbout" Overridable="yes">http://sourceforge.jp/projects/wptscs/</String> |
12 | 12 | <String Id="NoDowngradeMsg" Overridable="yes">[ProductName] の新しいバージョンが既にインストールされています。</String> |
@@ -3,7 +3,7 @@ | ||
3 | 3 | // Wikipedia翻訳支援ツールのアセンブリソース</summary> |
4 | 4 | // |
5 | 5 | // <copyright file="AssemblyInfo.cs" company="honeplusのメモ帳"> |
6 | -// Copyright (C) 2013 Honeplus. All rights reserved.</copyright> | |
6 | +// Copyright (C) 2014 Honeplus. All rights reserved.</copyright> | |
7 | 7 | // <author> |
8 | 8 | // Honeplus</author> |
9 | 9 | // ================================================================================================ |
@@ -20,7 +20,7 @@ using System.Runtime.InteropServices; | ||
20 | 20 | [assembly: AssemblyConfiguration("")] |
21 | 21 | [assembly: AssemblyCompany("")] |
22 | 22 | [assembly: AssemblyProduct("Wikipedia 翻訳支援ツール")] |
23 | -[assembly: AssemblyCopyright("Copyright (C) Honeplus 2013")] | |
23 | +[assembly: AssemblyCopyright("Copyright (C) Honeplus 2014")] | |
24 | 24 | [assembly: AssemblyTrademark("")] |
25 | 25 | [assembly: AssemblyCulture("")] |
26 | 26 |
@@ -37,4 +37,4 @@ using System.Runtime.InteropServices; | ||
37 | 37 | // Minor Version |
38 | 38 | // Build Number |
39 | 39 | // Revision |
40 | -[assembly: AssemblyVersion("1.30.*")] | |
40 | +[assembly: AssemblyVersion("1.31.*")] |
@@ -1,9 +1,9 @@ | ||
1 | 1 | ===================================================================== |
2 | 2 | 【タイトル】 Wikipedia 翻訳支援ツール |
3 | -【ファイル】 wptscs130.msi, wptscs130.zip, wptscs130-src.zip | |
4 | -【作成月日】 2013/3/10 | |
3 | +【ファイル】 wptscs131.msi, wptscs131.zip, wptscs131-src.zip | |
4 | +【作成月日】 2014/4/xx | |
5 | 5 | 【制 作 者】 Honeplus |
6 | -【動作環境】 Windows 8 での動作を確認。要.NET Framework 4.0 Client Profile または 4.5 | |
6 | +【動作環境】 Windows 7/8.1 での動作を確認。要.NET Framework 4.0 Client Profile または 4.5 | |
7 | 7 | 【配布形態】 修正BSDライセンス |
8 | 8 | 【HomePage】 http://sourceforge.jp/projects/wptscs/ |
9 | 9 | ===================================================================== |
@@ -33,7 +33,7 @@ Wiktionary.xml : Wiktionary用の設定ファイル | ||
33 | 33 | アプリケーション上で設定した内容は、上記設定ファイルには反映されません。 |
34 | 34 | ユーザーごとのフォルダに出力されます。 |
35 | 35 | 設定ファイルを直接修正、または削除して初期値に戻したい場合は、 |
36 | -下記のようなパスにあるファイルを更新してください(以下はWindows 8の例)。 | |
36 | +下記のようなパスにあるファイルを更新してください(以下はWindows 8.1の例)。 | |
37 | 37 | |
38 | 38 | C:\Users\[ユーザー名]\AppData\Roaming\Honememo\Wikipedia 翻訳支援ツール\[バージョン番号]\config.xml |
39 | 39 | C:\Users\[ユーザー名]\AppData\Local\Honememo\wptscs.exe_[~]\[バージョン番号]\user.config |
@@ -105,8 +105,8 @@ zip版の場合は展開したファイルを削除してください。 | ||
105 | 105 | |
106 | 106 | |
107 | 107 | ・ソースについて |
108 | -wptscs130-src.zip としてソースファイル一式を配布しています。 | |
109 | -開発環境はVisual Studio 2012 Express for Windows Desktopです。 | |
108 | +wptscs131-src.zip としてソースファイル一式を配布しています。 | |
109 | +開発環境はVisual Studio 2013 Express for Windows Desktopです。 | |
110 | 110 | その他外部ツールとしてコーディングスタイルチェック用のStyleCopを使用しています。 |
111 | 111 | また、インストーラの作成にはWiXを使用しています。 |
112 | 112 |
@@ -199,6 +199,7 @@ Ver1.30 2013/03/10 言語間リンクの取得を自前の解析処理を使わ | ||
199 | 199 | その他設定ファイルを精査。 |
200 | 200 | ※ 設定ファイルに互換性はありますが、一部設定項目の変更・追加・削除が発生しています。 |
201 | 201 | 独自の設定を追加している場合、変更が必要になる可能性があります。 |
202 | +Ver1.31 2014/04/xx 記事名のエスケープを明示的に行うようにし、扱えない文字が残っていたのを修正。 | |
202 | 203 | |
203 | 204 | |
204 | 205 | ・仕様上の制限 |
@@ -3,7 +3,7 @@ | ||
3 | 3 | // MediaWikiのウェブサイト(システム)をあらわすモデルクラスソース</summary> |
4 | 4 | // |
5 | 5 | // <copyright file="MediaWiki.cs" company="honeplusのメモ帳"> |
6 | -// Copyright (C) 2013 Honeplus. All rights reserved.</copyright> | |
6 | +// Copyright (C) 2014 Honeplus. All rights reserved.</copyright> | |
7 | 7 | // <author> |
8 | 8 | // Honeplus</author> |
9 | 9 | // ================================================================================================ |
@@ -408,16 +408,8 @@ namespace Honememo.Wptscs.Websites | ||
408 | 408 | /// </remarks> |
409 | 409 | public override Page GetPage(string title) |
410 | 410 | { |
411 | - // fileスキームの場合、記事名からファイルに使えない文字をエスケープ | |
412 | - // ※ 仕組み的な処理はWebsite側に置きたいが、向こうではタイトルだけを抽出できないので | |
413 | - string escapeTitle = title; | |
414 | - if (new Uri(this.Location).IsFile) | |
415 | - { | |
416 | - escapeTitle = FormUtils.ReplaceInvalidFileNameChars(title); | |
417 | - } | |
418 | - | |
419 | - // URIを生成 | |
420 | - Uri uri = new Uri(new Uri(this.Location), StringUtils.FormatDollarVariable(this.InterlanguageApi, escapeTitle)); | |
411 | + // 言語間リンク取得用のURIを生成 | |
412 | + Uri uri = this.CreateUri(this.InterlanguageApi, title); | |
421 | 413 | |
422 | 414 | // ページの言語間リンク情報XMLデータをMediaWikiサーバーから取得 |
423 | 415 | XElement doc; |
@@ -455,16 +447,8 @@ namespace Honememo.Wptscs.Websites | ||
455 | 447 | /// <remarks>ページの取得に失敗した場合(通信エラーなど)は、その状況に応じた例外を投げる。</remarks> |
456 | 448 | public Page GetPageBodyAndTimestamp(string title) |
457 | 449 | { |
458 | - // fileスキームの場合、記事名からファイルに使えない文字をエスケープ | |
459 | - // ※ 仕組み的な処理はWebsite側に置きたいが、向こうではタイトルだけを抽出できないので | |
460 | - string escapeTitle = title; | |
461 | - if (new Uri(this.Location).IsFile) | |
462 | - { | |
463 | - escapeTitle = FormUtils.ReplaceInvalidFileNameChars(title); | |
464 | - } | |
465 | - | |
466 | - // URIを生成 | |
467 | - Uri uri = new Uri(new Uri(this.Location), StringUtils.FormatDollarVariable(this.ContentApi, escapeTitle)); | |
450 | + // 記事データ取得用のURIを生成 | |
451 | + Uri uri = this.CreateUri(this.ContentApi, title); | |
468 | 452 | |
469 | 453 | // ページのXMLデータをMediaWikiサーバーから取得 |
470 | 454 | XElement doc; |
@@ -924,6 +908,40 @@ namespace Honememo.Wptscs.Websites | ||
924 | 908 | return interwikiPrefixs; |
925 | 909 | } |
926 | 910 | |
911 | + /// <summary> | |
912 | + /// URI用のフォーマットと記事名からURIを生成する。 | |
913 | + /// </summary> | |
914 | + /// <param name="format">URI用のフォーマット。</param> | |
915 | + /// <param name="title">フォーマットに埋め込む記事名。</param> | |
916 | + /// <returns>生成されたURI。</returns> | |
917 | + /// <remarks>記事名は必要に応じてエスケープされる。</remarks> | |
918 | + private Uri CreateUri(string format, string title) | |
919 | + { | |
920 | + // ※ 仕組み的な処理はWebsite側に置きたいが、向こうではタイトルだけを抽出できないので。 | |
921 | + // Uriだけでも自動的にエスケープされるが、その場合+など一部の文字が対象にならなかったため | |
922 | + // 明示的に記事名だけエスケープする。 | |
923 | + return new Uri(new Uri(this.Location), StringUtils.FormatDollarVariable(format, this.EscapeString(title))); | |
924 | + } | |
925 | + | |
926 | + /// <summary> | |
927 | + /// 接続に用いるスキームに応じて、文字列をエスケープする。 | |
928 | + /// </summary> | |
929 | + /// <param name="str">エスケープする文字列。</param> | |
930 | + /// <returns>エスケープされた文字列。</returns> | |
931 | + private string EscapeString(string str) | |
932 | + { | |
933 | + if (new Uri(this.Location).IsFile) | |
934 | + { | |
935 | + // fileスキームの場合、ファイルで使えない文字をエスケープ | |
936 | + return FormUtils.ReplaceInvalidFileNameChars(str); | |
937 | + } | |
938 | + else | |
939 | + { | |
940 | + // それ以外はhttp等のURL用のエスケープ | |
941 | + return Uri.EscapeDataString(str); | |
942 | + } | |
943 | + } | |
944 | + | |
927 | 945 | #endregion |
928 | 946 | } |
929 | 947 | } |
@@ -3,7 +3,7 @@ | ||
3 | 3 | // Wikipedia翻訳支援ツール(テスト)のアセンブリソース</summary> |
4 | 4 | // |
5 | 5 | // <copyright file="AssemblyInfo.cs" company="honeplusのメモ帳"> |
6 | -// Copyright (C) 2013 Honeplus. All rights reserved.</copyright> | |
6 | +// Copyright (C) 2014 Honeplus. All rights reserved.</copyright> | |
7 | 7 | // <author> |
8 | 8 | // Honeplus</author> |
9 | 9 | // ================================================================================================ |
@@ -20,7 +20,7 @@ using System.Runtime.InteropServices; | ||
20 | 20 | [assembly: AssemblyConfiguration("")] |
21 | 21 | [assembly: AssemblyCompany("")] |
22 | 22 | [assembly: AssemblyProduct("Wikipedia 翻訳支援ツール")] |
23 | -[assembly: AssemblyCopyright("Copyright (C) Honeplus 2013")] | |
23 | +[assembly: AssemblyCopyright("Copyright (C) Honeplus 2014")] | |
24 | 24 | [assembly: AssemblyTrademark("")] |
25 | 25 | [assembly: AssemblyCulture("")] |
26 | 26 |
@@ -42,4 +42,4 @@ using System.Runtime.InteropServices; | ||
42 | 42 | // すべての値を指定するか、下のように '*' を使ってビルドおよびリビジョン番号を |
43 | 43 | // 既定値にすることができます: |
44 | 44 | // [assembly: AssemblyVersion("1.0.*")] |
45 | -[assembly: AssemblyVersion("1.30.*")] | |
45 | +[assembly: AssemblyVersion("1.31.*")] |
@@ -79,7 +79,9 @@ | ||
79 | 79 | <Name>Wptscs</Name> |
80 | 80 | </ProjectReference> |
81 | 81 | </ItemGroup> |
82 | - <ItemGroup /> | |
82 | + <ItemGroup> | |
83 | + <Service Include="{82A7F48D-3B50-4B1E-B82E-3ADA8210C358}" /> | |
84 | + </ItemGroup> | |
83 | 85 | <ItemGroup> |
84 | 86 | <Content Include="Data\config.xml"> |
85 | 87 | <CopyToOutputDirectory>Always</CopyToOutputDirectory> |