this.textBoxBracket = new System.Windows.Forms.TextBox();
this.labelBracket = new System.Windows.Forms.Label();
this.groupBoxServer = new System.Windows.Forms.GroupBox();
+ this.checkBoxHasLanguagePage = new System.Windows.Forms.CheckBox();
this.textBoxLangFormat = new System.Windows.Forms.TextBox();
this.labelLangFormat = new System.Windows.Forms.Label();
this.textBoxLinkInterwikiFormat = new System.Windows.Forms.TextBox();
// groupBoxServer
//
resources.ApplyResources(this.groupBoxServer, "groupBoxServer");
+ this.groupBoxServer.Controls.Add(this.checkBoxHasLanguagePage);
this.groupBoxServer.Controls.Add(this.textBoxLangFormat);
this.groupBoxServer.Controls.Add(this.labelLangFormat);
this.groupBoxServer.Controls.Add(this.textBoxLinkInterwikiFormat);
this.groupBoxServer.Name = "groupBoxServer";
this.groupBoxServer.TabStop = false;
//
+ // checkBoxHasLanguagePage
+ //
+ resources.ApplyResources(this.checkBoxHasLanguagePage, "checkBoxHasLanguagePage");
+ this.checkBoxHasLanguagePage.Name = "checkBoxHasLanguagePage";
+ this.toolTip.SetToolTip(this.checkBoxHasLanguagePage, resources.GetString("checkBoxHasLanguagePage.ToolTip"));
+ this.checkBoxHasLanguagePage.UseVisualStyleBackColor = true;
+ //
// textBoxLangFormat
//
resources.ApplyResources(this.textBoxLangFormat, "textBoxLangFormat");
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnName;
private System.Windows.Forms.DataGridViewTextBoxColumn ColumnShortName;
private System.Windows.Forms.Label labelApplicationConfigNote;
+ private System.Windows.Forms.CheckBox checkBoxHasLanguagePage;
}
}
\ No newline at end of file
this.textBoxDocumentationTemplateDefaultPage.Text = StringUtils.DefaultString(site.DocumentationTemplateDefaultPage);
this.textBoxLinkInterwikiFormat.Text = StringUtils.DefaultString(site.LinkInterwikiFormat);
this.textBoxLangFormat.Text = StringUtils.DefaultString(site.LangFormat);
+ this.checkBoxHasLanguagePage.Checked = site.HasLanguagePage;
}
/// <summary>
site.LangFormat = str;
}
+ site.HasLanguagePage = this.checkBoxHasLanguagePage.Checked;
+
// 以下、数値へのparseは事前にチェックしてあるので、ここではチェックしない
if (!String.IsNullOrWhiteSpace(this.textBoxTemplateNamespace.Text))
{
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
- <data name="buttonCancel.Error" xml:space="preserve">
- <value />
- </data>
- <assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <data name="buttonCancel.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
- <data name="buttonCancel.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="buttonCancel.Location" type="System.Drawing.Point, System.Drawing">
- <value>335, 461</value>
+ <value>335, 481</value>
</data>
<data name="buttonCancel.Text" xml:space="preserve">
<value>キャンセル</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
- <value>624, 493</value>
- </data>
- <data name="labelItemsNote.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelItemsNote.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelItemsNote.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
+ <value>624, 513</value>
</data>
<data name="labelItemsNote.Location" type="System.Drawing.Point, System.Drawing">
- <value>9, 399</value>
+ <value>9, 417</value>
</data>
<data name="labelItemsNote.Size" type="System.Drawing.Size, System.Drawing">
<value>426, 12</value>
<data name="labelItemsNote.Text" xml:space="preserve">
<value>※ 一度に大量の行を削除すると、画面が長時間反応しなくなります(50行程度が限界)。</value>
</data>
- <data name="labelItemsNote.ToolTip" xml:space="preserve">
- <value />
- </data>
<data name="ColumnFromCode.HeaderText" xml:space="preserve">
<value>翻訳元</value>
</data>
<data name="ColumnTimestamp.HeaderText" xml:space="preserve">
<value>取得日時</value>
</data>
- <data name="dataGridViewItems.Error" xml:space="preserve">
- <value />
- </data>
- <data name="dataGridViewItems.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="dataGridViewItems.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="dataGridViewItems.Size" type="System.Drawing.Size, System.Drawing">
- <value>580, 390</value>
- </data>
- <data name="dataGridViewItems.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="tabPageItems.Error" xml:space="preserve">
- <value />
- </data>
- <data name="tabPageItems.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="tabPageItems.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
+ <value>580, 408</value>
</data>
<data name="tabPageItems.Size" type="System.Drawing.Size, System.Drawing">
- <value>592, 417</value>
+ <value>592, 437</value>
</data>
<data name="tabPageItems.Text" xml:space="preserve">
<value>記事の置き換え</value>
</data>
- <data name="tabPageItems.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="dataGridViewHeading.Error" xml:space="preserve">
- <value />
- </data>
- <data name="dataGridViewHeading.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="dataGridViewHeading.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="dataGridViewHeading.Size" type="System.Drawing.Size, System.Drawing">
- <value>580, 405</value>
- </data>
- <data name="dataGridViewHeading.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="tabPageHeadings.Error" xml:space="preserve">
- <value />
- </data>
- <data name="tabPageHeadings.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="tabPageHeadings.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
+ <value>580, 425</value>
</data>
<data name="tabPageHeadings.Size" type="System.Drawing.Size, System.Drawing">
- <value>592, 417</value>
+ <value>592, 437</value>
</data>
<data name="tabPageHeadings.Text" xml:space="preserve">
<value>見出しの置き換え</value>
</data>
- <data name="tabPageHeadings.ToolTip" xml:space="preserve">
- <value />
- </data>
+ <assembly alias="mscorlib" name="mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="buttonLanguageRemove.AutoSize" type="System.Boolean, mscorlib">
<value>False</value>
</data>
- <data name="buttonLanguageRemove.Error" xml:space="preserve">
- <value />
- </data>
- <data name="buttonLanguageRemove.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="buttonLanguageRemove.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="buttonLanguageRemove.Location" type="System.Drawing.Point, System.Drawing">
<value>209, 11</value>
</data>
<data name="buttonLanguageRemove.Text" xml:space="preserve">
<value>削除</value>
</data>
- <data name="buttonLunguageAdd.Error" xml:space="preserve">
- <value />
- </data>
- <data name="buttonLunguageAdd.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="buttonLunguageAdd.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="buttonLunguageAdd.Location" type="System.Drawing.Point, System.Drawing">
<value>156, 11</value>
</data>
<data name="ColumnShortName.Width" type="System.Int32, mscorlib">
<value>51</value>
</data>
- <data name="dataGridViewLanguageName.Error" xml:space="preserve">
- <value />
- </data>
- <data name="dataGridViewLanguageName.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="dataGridViewLanguageName.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="dataGridViewLanguageName.Size" type="System.Drawing.Size, System.Drawing">
- <value>260, 299</value>
- </data>
- <data name="dataGridViewLanguageName.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="groupBoxLanguageName.Error" xml:space="preserve">
- <value />
- </data>
- <data name="groupBoxLanguageName.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="groupBoxLanguageName.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
+ <value>260, 319</value>
</data>
<data name="groupBoxLanguageName.Size" type="System.Drawing.Size, System.Drawing">
- <value>272, 323</value>
+ <value>272, 343</value>
</data>
<data name="groupBoxLanguageName.Text" xml:space="preserve">
<value>各言語での言語名</value>
</data>
- <data name="textBoxBracket.Error" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxBracket.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="textBoxBracket.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
- <data name="labelBracket.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelBracket.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelBracket.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelBracket.Size" type="System.Drawing.Size, System.Drawing">
<value>77, 12</value>
</data>
<data name="labelBracket.Text" xml:space="preserve">
<value>括弧のスタイル:</value>
</data>
- <data name="groupBoxLanguage.Error" xml:space="preserve">
- <value />
- </data>
- <data name="groupBoxLanguage.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="groupBoxLanguage.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="groupBoxLanguage.Size" type="System.Drawing.Size, System.Drawing">
- <value>286, 372</value>
+ <value>286, 392</value>
</data>
<data name="groupBoxLanguage.Text" xml:space="preserve">
<value>言語の設定</value>
</data>
- <data name="groupBoxLanguage.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxLangFormat.Error" xml:space="preserve">
- <value />
+ <data name="checkBoxHasLanguagePage.Location" type="System.Drawing.Point, System.Drawing">
+ <value>8, 370</value>
</data>
- <data name="textBoxLangFormat.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
+ <data name="checkBoxHasLanguagePage.Size" type="System.Drawing.Size, System.Drawing">
+ <value>134, 16</value>
</data>
- <data name="textBoxLangFormat.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
+ <data name="checkBoxHasLanguagePage.Text" xml:space="preserve">
+ <value>言語名のページが存在</value>
</data>
<data name="textBoxLangFormat.Location" type="System.Drawing.Point, System.Drawing">
<value>132, 344</value>
<data name="textBoxLangFormat.Size" type="System.Drawing.Size, System.Drawing">
<value>136, 19</value>
</data>
- <data name="labelLangFormat.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelLangFormat.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelLangFormat.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelLangFormat.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 347</value>
</data>
<data name="labelLangFormat.Text" xml:space="preserve">
<value>言語指定用フォーマット:</value>
</data>
- <data name="textBoxLinkInterwikiFormat.Error" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxLinkInterwikiFormat.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="textBoxLinkInterwikiFormat.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="textBoxLinkInterwikiFormat.Location" type="System.Drawing.Point, System.Drawing">
<value>115, 316</value>
</data>
<data name="textBoxLinkInterwikiFormat.Size" type="System.Drawing.Size, System.Drawing">
<value>153, 19</value>
</data>
- <data name="labelLinkInterwikiFormat.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelLinkInterwikiFormat.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelLinkInterwikiFormat.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelLinkInterwikiFormat.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 319</value>
</data>
<data name="labelLinkInterwikiFormat.Text" xml:space="preserve">
<value>仮リンク用フォーマット:</value>
</data>
- <data name="textBoxDocumentationTemplateDefaultPage.Error" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxDocumentationTemplateDefaultPage.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="textBoxDocumentationTemplateDefaultPage.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="textBoxDocumentationTemplateDefaultPage.Location" type="System.Drawing.Point, System.Drawing">
<value>115, 288</value>
</data>
<data name="textBoxDocumentationTemplateDefaultPage.Size" type="System.Drawing.Size, System.Drawing">
<value>90, 19</value>
</data>
- <data name="labelDocumentationTemplateDefaultPage.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelDocumentationTemplateDefaultPage.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelDocumentationTemplateDefaultPage.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelDocumentationTemplateDefaultPage.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 291</value>
</data>
<data name="labelDocumentationTemplateDefaultPage.Text" xml:space="preserve">
<value>デフォルトページ名:</value>
</data>
- <data name="textBoxDocumentationTemplate.Error" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxDocumentationTemplate.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="textBoxDocumentationTemplate.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="textBoxDocumentationTemplate.Location" type="System.Drawing.Point, System.Drawing">
<value>115, 241</value>
</data>
<data name="textBoxDocumentationTemplate.Size" type="System.Drawing.Size, System.Drawing">
<value>160, 39</value>
</data>
- <data name="labelDocumentationTemplate.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelDocumentationTemplate.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelDocumentationTemplate.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelDocumentationTemplate.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 244</value>
</data>
<data name="labelDocumentationTemplate.Text" xml:space="preserve">
<value>解説用テンプレート:</value>
</data>
- <data name="textBoxFileNamespace.Error" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxFileNamespace.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="textBoxFileNamespace.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="textBoxFileNamespace.Location" type="System.Drawing.Point, System.Drawing">
<value>143, 185</value>
</data>
- <data name="textBoxCategoryNamespace.Error" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxCategoryNamespace.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="textBoxCategoryNamespace.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="textBoxCategoryNamespace.Location" type="System.Drawing.Point, System.Drawing">
<value>143, 160</value>
</data>
- <data name="labelCategoryNamespace.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelCategoryNamespace.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelCategoryNamespace.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelCategoryNamespace.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 163</value>
</data>
<data name="labelCategoryNamespace.Text" xml:space="preserve">
<value>カテゴリ名前空間のID:</value>
</data>
- <data name="textBoxTemplateNamespace.Error" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxTemplateNamespace.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="textBoxTemplateNamespace.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="textBoxTemplateNamespace.Location" type="System.Drawing.Point, System.Drawing">
<value>143, 135</value>
</data>
- <data name="labelTemplateNamespace.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelTemplateNamespace.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelTemplateNamespace.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelTemplateNamespace.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 138</value>
</data>
<data name="labelTemplateNamespace.Text" xml:space="preserve">
<value>テンプレート名前空間のID:</value>
</data>
- <data name="textBoxRedirect.Error" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxRedirect.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="textBoxRedirect.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="textBoxRedirect.Location" type="System.Drawing.Point, System.Drawing">
<value>115, 214</value>
</data>
- <data name="labelRedirect.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelRedirect.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelRedirect.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelRedirect.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 217</value>
</data>
<data name="labelRedirect.Text" xml:space="preserve">
<value>リダイレクトの文字列:</value>
</data>
- <data name="textBoxExportPath.Error" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxExportPath.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="textBoxExportPath.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="textBoxExportPath.Location" type="System.Drawing.Point, System.Drawing">
<value>81, 66</value>
</data>
- <data name="labelExportPath.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelExportPath.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelExportPath.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelExportPath.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 51</value>
</data>
<data name="labelExportPath.Text" xml:space="preserve">
<value>XMLエクスポート用のAPIパス:</value>
</data>
- <data name="textBoxMetaApi.Error" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxMetaApi.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="textBoxMetaApi.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="textBoxMetaApi.Location" type="System.Drawing.Point, System.Drawing">
<value>81, 109</value>
</data>
- <data name="labelMetaApi.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelMetaApi.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelMetaApi.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelMetaApi.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 94</value>
</data>
<data name="labelMetaApi.Text" xml:space="preserve">
<value>メタ情報取得用のAPIパス:</value>
</data>
- <data name="textBoxLocation.Error" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxLocation.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="textBoxLocation.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
- <data name="labelLocation.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelLocation.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelLocation.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelLocation.Size" type="System.Drawing.Size, System.Drawing">
<value>69, 12</value>
</data>
<data name="labelLocation.Text" xml:space="preserve">
<value>サーバーURL:</value>
</data>
- <data name="labelFileNamespace.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelFileNamespace.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelFileNamespace.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelFileNamespace.Location" type="System.Drawing.Point, System.Drawing">
<value>6, 188</value>
</data>
<data name="labelFileNamespace.Text" xml:space="preserve">
<value>ファイル名前空間のID:</value>
</data>
- <data name="groupBoxServer.Error" xml:space="preserve">
- <value />
- </data>
- <data name="groupBoxServer.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="groupBoxServer.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="groupBoxServer.Size" type="System.Drawing.Size, System.Drawing">
- <value>288, 372</value>
+ <value>288, 392</value>
</data>
<data name="groupBoxServer.Text" xml:space="preserve">
<value>MediaWikiの設定</value>
</data>
- <data name="groupBoxServer.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="comboBoxLanguage.Error" xml:space="preserve">
- <value />
- </data>
- <data name="comboBoxLanguage.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="comboBoxLanguage.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="comboBoxLanguage.Location" type="System.Drawing.Point, System.Drawing">
<value>57, 13</value>
</data>
- <data name="labelLanguage.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelLanguage.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelLanguage.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelLanguage.Size" type="System.Drawing.Size, System.Drawing">
<value>31, 12</value>
</data>
<data name="labelLanguage.Text" xml:space="preserve">
<value>言語:</value>
</data>
- <data name="tabPageServer.Error" xml:space="preserve">
- <value />
- </data>
- <data name="tabPageServer.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="tabPageServer.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="tabPageServer.Size" type="System.Drawing.Size, System.Drawing">
- <value>592, 417</value>
+ <value>592, 437</value>
</data>
<data name="tabPageServer.Text" xml:space="preserve">
<value>サーバー/言語</value>
</data>
- <data name="tabPageServer.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="labelWebsite.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelWebsite.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelWebsite.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelWebsite.Size" type="System.Drawing.Size, System.Drawing">
<value>43, 12</value>
</data>
<data name="labelWebsite.Text" xml:space="preserve">
<value>配布元:</value>
</data>
- <data name="labelWebsite.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="linkLabelWebsite.Error" xml:space="preserve">
- <value />
- </data>
- <data name="linkLabelWebsite.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="linkLabelWebsite.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
- <data name="linkLabelWebsite.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="labelCopyright.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelCopyright.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelCopyright.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
- <data name="labelCopyright.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="labelApplicationName.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelApplicationName.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelApplicationName.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
- <data name="labelApplicationName.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="groupBoxInformation.Error" xml:space="preserve">
- <value />
- </data>
- <data name="groupBoxInformation.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="groupBoxInformation.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="groupBoxInformation.Size" type="System.Drawing.Size, System.Drawing">
- <value>580, 145</value>
+ <value>580, 182</value>
</data>
<data name="groupBoxInformation.Text" xml:space="preserve">
<value>バージョン情報</value>
</data>
- <data name="groupBoxInformation.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="labelApplicationConfigNote.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelApplicationConfigNote.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelApplicationConfigNote.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelApplicationConfigNote.Size" type="System.Drawing.Size, System.Drawing">
<value>272, 12</value>
</data>
<data name="labelApplicationConfigNote.Text" xml:space="preserve">
<value>※ このタブの設定はアプリケーション全体に適用されます。</value>
</data>
- <data name="labelApplicationConfigNote.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxConnectRetryTime.Error" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxConnectRetryTime.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="textBoxConnectRetryTime.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="textBoxConnectRetryTime.Location" type="System.Drawing.Point, System.Drawing">
<value>168, 125</value>
</data>
- <data name="labelConnectRetryTimeNote.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelConnectRetryTimeNote.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelConnectRetryTimeNote.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelConnectRetryTimeNote.Location" type="System.Drawing.Point, System.Drawing">
<value>237, 128</value>
</data>
<data name="labelConnectRetryTimeNote.Text" xml:space="preserve">
<value>(0:ウェイトしない)</value>
</data>
- <data name="labelConnectRetryTimeNote.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="labelConnectRetryTime.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelConnectRetryTime.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelConnectRetryTime.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelConnectRetryTime.Size" type="System.Drawing.Size, System.Drawing">
<value>156, 12</value>
</data>
<data name="labelConnectRetryTime.Text" xml:space="preserve">
<value>リトライ時のウェイト時間(ミリ秒):</value>
</data>
- <data name="textBoxMaxConnectRetries.Error" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxMaxConnectRetries.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="textBoxMaxConnectRetries.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
- <data name="labelMaxConnectRetriesNote.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelMaxConnectRetriesNote.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelMaxConnectRetriesNote.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelMaxConnectRetriesNote.Size" type="System.Drawing.Size, System.Drawing">
<value>86, 12</value>
</data>
<data name="labelMaxConnectRetriesNote.Text" xml:space="preserve">
<value>(0:リトライしない)</value>
</data>
- <data name="labelMaxConnectRetriesNote.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="labelMaxConnectRetries.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelMaxConnectRetries.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelMaxConnectRetries.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelMaxConnectRetries.Size" type="System.Drawing.Size, System.Drawing">
<value>136, 12</value>
</data>
<data name="labelMaxConnectRetries.Text" xml:space="preserve">
<value>通信エラー時のリトライ回数:</value>
</data>
- <data name="checkBoxIgnoreError.Error" xml:space="preserve">
- <value />
- </data>
- <data name="checkBoxIgnoreError.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="checkBoxIgnoreError.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="checkBoxIgnoreError.Size" type="System.Drawing.Size, System.Drawing">
<value>199, 16</value>
</data>
<data name="checkBoxIgnoreError.Text" xml:space="preserve">
<value>エラーを可能な限り無視して続行する</value>
</data>
- <data name="labelRefererNote.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelRefererNote.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelRefererNote.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelRefererNote.Size" type="System.Drawing.Size, System.Drawing">
- <value>62, 12</value>
+ <value>91, 12</value>
</data>
<data name="labelRefererNote.Text" xml:space="preserve">
- <value>(空欄:なし)</value>
- </data>
- <data name="labelRefererNote.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="labelUserAgentNote.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelUserAgentNote.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelUserAgentNote.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
+ <value>(空欄:自動設定)</value>
</data>
<data name="labelUserAgentNote.Size" type="System.Drawing.Size, System.Drawing">
<value>162, 12</value>
<data name="labelUserAgentNote.Text" xml:space="preserve">
<value>(空欄:アプリケーション独自のUA)</value>
</data>
- <data name="labelUserAgentNote.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="labelChaceNote.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelChaceNote.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelChaceNote.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelChaceNote.Location" type="System.Drawing.Point, System.Drawing">
<value>183, 18</value>
</data>
<data name="labelChaceNote.Text" xml:space="preserve">
<value>(0:無効)</value>
</data>
- <data name="labelChaceNote.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxCacheExpire.Error" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxCacheExpire.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="textBoxCacheExpire.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="textBoxCacheExpire.Location" type="System.Drawing.Point, System.Drawing">
<value>134, 15</value>
</data>
- <data name="textBoxReferer.Error" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxReferer.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="textBoxReferer.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
- <data name="labelReferer.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelReferer.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelReferer.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
- <data name="labelCacheExpire.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelCacheExpire.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelCacheExpire.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="labelCacheExpire.Size" type="System.Drawing.Size, System.Drawing">
<value>122, 12</value>
</data>
<data name="labelCacheExpire.Text" xml:space="preserve">
<value>キャッシュ有効期限(日):</value>
</data>
- <data name="textBoxUserAgent.Error" xml:space="preserve">
- <value />
- </data>
- <data name="textBoxUserAgent.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="textBoxUserAgent.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
- <data name="labelUserAgent.Error" xml:space="preserve">
- <value />
- </data>
- <data name="labelUserAgent.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="labelUserAgent.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
- <data name="groupBoxApplicationConfig.Error" xml:space="preserve">
- <value />
- </data>
- <data name="groupBoxApplicationConfig.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="groupBoxApplicationConfig.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="groupBoxApplicationConfig.Text" xml:space="preserve">
<value>アプリケーションの設定</value>
</data>
- <data name="groupBoxApplicationConfig.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="tabPageApplication.Error" xml:space="preserve">
- <value />
- </data>
- <data name="tabPageApplication.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="tabPageApplication.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="tabPageApplication.Size" type="System.Drawing.Size, System.Drawing">
- <value>592, 417</value>
+ <value>592, 437</value>
</data>
<data name="tabPageApplication.Text" xml:space="preserve">
<value>その他</value>
</data>
- <data name="tabControl.Error" xml:space="preserve">
- <value />
- </data>
- <data name="tabControl.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="tabControl.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="tabControl.Size" type="System.Drawing.Size, System.Drawing">
- <value>600, 443</value>
- </data>
- <data name="tabControl.ToolTip" xml:space="preserve">
- <value />
+ <value>600, 463</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
- <value>640, 530</value>
+ <value>640, 550</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>設定</value>
</data>
- <data name="$this.ToolTip" xml:space="preserve">
- <value />
- </data>
- <data name="buttonOk.Error" xml:space="preserve">
- <value />
- </data>
- <data name="buttonOk.IconAlignment" type="System.Windows.Forms.ErrorIconAlignment, System.Windows.Forms">
- <value>MiddleRight</value>
- </data>
- <data name="buttonOk.IconPadding" type="System.Int32, mscorlib">
- <value>0</value>
- </data>
<data name="buttonOk.Location" type="System.Drawing.Point, System.Drawing">
- <value>215, 461</value>
+ <value>215, 481</value>
</data>
</root>
\ No newline at end of file
</data>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="buttonOk.Location" type="System.Drawing.Point, System.Drawing">
- <value>215, 491</value>
+ <value>215, 506</value>
</data>
<data name="buttonOk.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
<value>Bottom</value>
</data>
<data name="buttonCancel.Location" type="System.Drawing.Point, System.Drawing">
- <value>335, 491</value>
+ <value>335, 506</value>
</data>
<data name="buttonCancel.Size" type="System.Drawing.Size, System.Drawing">
<value>75, 23</value>
<value>True</value>
</data>
<data name="labelItemsNote.Location" type="System.Drawing.Point, System.Drawing">
- <value>9, 429</value>
+ <value>9, 443</value>
</data>
<data name="labelItemsNote.Size" type="System.Drawing.Size, System.Drawing">
<value>281, 12</value>
<value>6, 6</value>
</data>
<data name="dataGridViewItems.Size" type="System.Drawing.Size, System.Drawing">
- <value>580, 420</value>
+ <value>580, 434</value>
</data>
<data name="dataGridViewItems.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
<value>3, 3, 3, 3</value>
</data>
<data name="tabPageItems.Size" type="System.Drawing.Size, System.Drawing">
- <value>592, 447</value>
+ <value>592, 462</value>
</data>
<data name="tabPageItems.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
<value>6, 6</value>
</data>
<data name="dataGridViewHeading.Size" type="System.Drawing.Size, System.Drawing">
- <value>580, 435</value>
+ <value>580, 450</value>
</data>
<data name="dataGridViewHeading.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
<value>3, 3, 3, 3</value>
</data>
<data name="tabPageHeadings.Size" type="System.Drawing.Size, System.Drawing">
- <value>592, 447</value>
+ <value>592, 462</value>
</data>
<data name="tabPageHeadings.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
<value>6, 18</value>
</data>
<data name="dataGridViewLanguageName.Size" type="System.Drawing.Size, System.Drawing">
- <value>260, 329</value>
+ <value>260, 344</value>
</data>
<data name="dataGridViewLanguageName.TabIndex" type="System.Int32, mscorlib">
<value>0</value>
<value>8, 43</value>
</data>
<data name="groupBoxLanguageName.Size" type="System.Drawing.Size, System.Drawing">
- <value>272, 353</value>
+ <value>272, 368</value>
</data>
<data name="groupBoxLanguageName.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
<value>300, 39</value>
</data>
<data name="groupBoxLanguage.Size" type="System.Drawing.Size, System.Drawing">
- <value>286, 402</value>
+ <value>286, 417</value>
</data>
<data name="groupBoxLanguage.TabIndex" type="System.Int32, mscorlib">
<value>5</value>
<data name="groupBoxServer.Anchor" type="System.Windows.Forms.AnchorStyles, System.Windows.Forms">
<value>Top, Bottom, Left</value>
</data>
+ <data name="checkBoxHasLanguagePage.AutoSize" type="System.Boolean, mscorlib">
+ <value>True</value>
+ </data>
+ <data name="checkBoxHasLanguagePage.Location" type="System.Drawing.Point, System.Drawing">
+ <value>8, 395</value>
+ </data>
+ <data name="checkBoxHasLanguagePage.Size" type="System.Drawing.Size, System.Drawing">
+ <value>144, 16</value>
+ </data>
+ <data name="checkBoxHasLanguagePage.TabIndex" type="System.Int32, mscorlib">
+ <value>1</value>
+ </data>
+ <data name="checkBoxHasLanguagePage.Text" xml:space="preserve">
+ <value>Wiki has language page</value>
+ </data>
+ <data name="checkBoxHasLanguagePage.ToolTip" xml:space="preserve">
+ <value>言語名のページが存在する場合、言語名を出力する際に内部リンクの形で出力します。</value>
+ </data>
+ <data name=">>checkBoxHasLanguagePage.Name" xml:space="preserve">
+ <value>checkBoxHasLanguagePage</value>
+ </data>
+ <data name=">>checkBoxHasLanguagePage.Type" xml:space="preserve">
+ <value>System.Windows.Forms.CheckBox, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
+ </data>
+ <data name=">>checkBoxHasLanguagePage.Parent" xml:space="preserve">
+ <value>groupBoxServer</value>
+ </data>
+ <data name=">>checkBoxHasLanguagePage.ZOrder" xml:space="preserve">
+ <value>0</value>
+ </data>
<data name="textBoxLangFormat.Location" type="System.Drawing.Point, System.Drawing">
<value>81, 368</value>
</data>
<value>groupBoxServer</value>
</data>
<data name=">>textBoxLangFormat.ZOrder" xml:space="preserve">
- <value>0</value>
+ <value>1</value>
</data>
<data name="labelLangFormat.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>groupBoxServer</value>
</data>
<data name=">>labelLangFormat.ZOrder" xml:space="preserve">
- <value>1</value>
+ <value>2</value>
</data>
<data name="textBoxLinkInterwikiFormat.Location" type="System.Drawing.Point, System.Drawing">
<value>81, 338</value>
<value>groupBoxServer</value>
</data>
<data name=">>textBoxLinkInterwikiFormat.ZOrder" xml:space="preserve">
- <value>2</value>
+ <value>3</value>
</data>
<data name="labelLinkInterwikiFormat.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>groupBoxServer</value>
</data>
<data name=">>labelLinkInterwikiFormat.ZOrder" xml:space="preserve">
- <value>3</value>
+ <value>4</value>
</data>
<data name="textBoxDocumentationTemplateDefaultPage.Location" type="System.Drawing.Point, System.Drawing">
<value>81, 295</value>
<value>groupBoxServer</value>
</data>
<data name=">>textBoxDocumentationTemplateDefaultPage.ZOrder" xml:space="preserve">
- <value>4</value>
+ <value>5</value>
</data>
<data name="labelDocumentationTemplateDefaultPage.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>groupBoxServer</value>
</data>
<data name=">>labelDocumentationTemplateDefaultPage.ZOrder" xml:space="preserve">
- <value>5</value>
+ <value>6</value>
</data>
<data name="textBoxDocumentationTemplate.Location" type="System.Drawing.Point, System.Drawing">
<value>81, 232</value>
<value>groupBoxServer</value>
</data>
<data name=">>textBoxDocumentationTemplate.ZOrder" xml:space="preserve">
- <value>6</value>
+ <value>7</value>
</data>
<data name="labelDocumentationTemplate.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>groupBoxServer</value>
</data>
<data name=">>labelDocumentationTemplate.ZOrder" xml:space="preserve">
- <value>7</value>
+ <value>8</value>
</data>
<data name="textBoxFileNamespace.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>Disable</value>
<value>groupBoxServer</value>
</data>
<data name=">>textBoxFileNamespace.ZOrder" xml:space="preserve">
- <value>8</value>
+ <value>9</value>
</data>
<data name="textBoxCategoryNamespace.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>Disable</value>
<value>groupBoxServer</value>
</data>
<data name=">>textBoxCategoryNamespace.ZOrder" xml:space="preserve">
- <value>9</value>
+ <value>10</value>
</data>
<data name="labelCategoryNamespace.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>groupBoxServer</value>
</data>
<data name=">>labelCategoryNamespace.ZOrder" xml:space="preserve">
- <value>10</value>
+ <value>11</value>
</data>
<data name="textBoxTemplateNamespace.ImeMode" type="System.Windows.Forms.ImeMode, System.Windows.Forms">
<value>Disable</value>
<value>groupBoxServer</value>
</data>
<data name=">>textBoxTemplateNamespace.ZOrder" xml:space="preserve">
- <value>11</value>
+ <value>12</value>
</data>
<data name="labelTemplateNamespace.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>groupBoxServer</value>
</data>
<data name=">>labelTemplateNamespace.ZOrder" xml:space="preserve">
- <value>12</value>
+ <value>13</value>
</data>
<data name="textBoxRedirect.Location" type="System.Drawing.Point, System.Drawing">
<value>81, 185</value>
<value>groupBoxServer</value>
</data>
<data name=">>textBoxRedirect.ZOrder" xml:space="preserve">
- <value>13</value>
+ <value>14</value>
</data>
<data name="labelRedirect.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>groupBoxServer</value>
</data>
<data name=">>labelRedirect.ZOrder" xml:space="preserve">
- <value>14</value>
+ <value>15</value>
</data>
<data name="textBoxExportPath.Location" type="System.Drawing.Point, System.Drawing">
<value>81, 46</value>
<value>groupBoxServer</value>
</data>
<data name=">>textBoxExportPath.ZOrder" xml:space="preserve">
- <value>15</value>
+ <value>16</value>
</data>
<data name="labelExportPath.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>groupBoxServer</value>
</data>
<data name=">>labelExportPath.ZOrder" xml:space="preserve">
- <value>16</value>
+ <value>17</value>
</data>
<data name="textBoxMetaApi.Location" type="System.Drawing.Point, System.Drawing">
<value>81, 73</value>
<value>groupBoxServer</value>
</data>
<data name=">>textBoxMetaApi.ZOrder" xml:space="preserve">
- <value>17</value>
+ <value>18</value>
</data>
<data name="labelMetaApi.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>groupBoxServer</value>
</data>
<data name=">>labelMetaApi.ZOrder" xml:space="preserve">
- <value>18</value>
+ <value>19</value>
</data>
<data name="textBoxLocation.Location" type="System.Drawing.Point, System.Drawing">
<value>81, 18</value>
<value>groupBoxServer</value>
</data>
<data name=">>textBoxLocation.ZOrder" xml:space="preserve">
- <value>19</value>
+ <value>20</value>
</data>
<data name="labelLocation.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>groupBoxServer</value>
</data>
<data name=">>labelLocation.ZOrder" xml:space="preserve">
- <value>20</value>
+ <value>21</value>
</data>
<data name="labelFileNamespace.AutoSize" type="System.Boolean, mscorlib">
<value>True</value>
<value>groupBoxServer</value>
</data>
<data name=">>labelFileNamespace.ZOrder" xml:space="preserve">
- <value>21</value>
+ <value>22</value>
</data>
<data name="groupBoxServer.Enabled" type="System.Boolean, mscorlib">
<value>False</value>
<value>6, 39</value>
</data>
<data name="groupBoxServer.Size" type="System.Drawing.Size, System.Drawing">
- <value>288, 402</value>
+ <value>288, 417</value>
</data>
<data name="groupBoxServer.TabIndex" type="System.Int32, mscorlib">
<value>4</value>
<value>3, 3, 3, 3</value>
</data>
<data name="tabPageServer.Size" type="System.Drawing.Size, System.Drawing">
- <value>592, 447</value>
+ <value>592, 462</value>
</data>
<data name="tabPageServer.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
<value>3</value>
</data>
<data name="groupBoxInformation.Location" type="System.Drawing.Point, System.Drawing">
- <value>6, 266</value>
+ <value>6, 249</value>
</data>
<data name="groupBoxInformation.Size" type="System.Drawing.Size, System.Drawing">
- <value>580, 175</value>
+ <value>580, 207</value>
</data>
<data name="groupBoxInformation.TabIndex" type="System.Int32, mscorlib">
<value>2</value>
<value>342, 71</value>
</data>
<data name="labelRefererNote.Size" type="System.Drawing.Size, System.Drawing">
- <value>0, 12</value>
+ <value>75, 12</value>
</data>
<data name="labelRefererNote.TabIndex" type="System.Int32, mscorlib">
<value>9</value>
</data>
+ <data name="labelRefererNote.Text" xml:space="preserve">
+ <value>(Empty: Auto)</value>
+ </data>
<data name=">>labelRefererNote.Name" xml:space="preserve">
<value>labelRefererNote</value>
</data>
</data>
<data name="textBoxReferer.ToolTip" xml:space="preserve">
<value>Referer を固定で指定する場合、URLを入力します。
-空欄の場合、Refererは設定しません。
-
-※ 現状、Referer は動的には設定されません。</value>
+空欄の場合、Referer はアクセスしたページに応じて動的に設定されます。</value>
</data>
<data name=">>textBoxReferer.Name" xml:space="preserve">
<value>textBoxReferer</value>
</data>
<data name="labelReferer.ToolTip" xml:space="preserve">
<value>Referer を固定で指定する場合、URLを入力します。
-空欄の場合、Refererは設定しません。
-
-※ 現状、Referer は動的には設定されません。</value>
+空欄の場合、Referer はアクセスしたページに応じて動的に設定されます。</value>
</data>
<data name=">>labelReferer.Name" xml:space="preserve">
<value>labelReferer</value>
<value>6, 6</value>
</data>
<data name="groupBoxApplicationConfig.Size" type="System.Drawing.Size, System.Drawing">
- <value>580, 254</value>
+ <value>580, 237</value>
</data>
<data name="groupBoxApplicationConfig.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
<value>3, 3, 3, 3</value>
</data>
<data name="tabPageApplication.Size" type="System.Drawing.Size, System.Drawing">
- <value>592, 447</value>
+ <value>592, 462</value>
</data>
<data name="tabPageApplication.TabIndex" type="System.Int32, mscorlib">
<value>3</value>
<value>True</value>
</data>
<data name="tabControl.Size" type="System.Drawing.Size, System.Drawing">
- <value>600, 473</value>
+ <value>600, 488</value>
</data>
<data name="tabControl.TabIndex" type="System.Int32, mscorlib">
<value>1</value>
<value>6, 12</value>
</data>
<data name="$this.ClientSize" type="System.Drawing.Size, System.Drawing">
- <value>624, 523</value>
+ <value>624, 538</value>
</data>
<data name="$this.MinimumSize" type="System.Drawing.Size, System.Drawing">
- <value>640, 560</value>
+ <value>640, 575</value>
</data>
<data name="$this.Text" xml:space="preserve">
<value>Settings</value>
protected virtual string CreateOpening(string title)
{
string langPart = String.Empty;
- MediaWikiLink langLink = this.GetLanguageLink(this.From, this.To.Language.Code);
+ IElement langLink = this.GetLanguageLink();
if (langLink != null)
{
langPart = langLink.ToString() + ": ";
/// </summary>
/// <param name="title">翻訳支援対象の記事名。</param>
/// <returns>取得したページ。取得失敗時は<c>null</c>。</returns>
+ /// <remarks>
+ /// ここで取得した記事のURIを、以後の翻訳支援処理で使用するRefererとして登録
+ /// (ここで処理しているのは、リダイレクトの場合のリダイレクト先への
+ /// アクセス時にもRefererを入れたかったから。
+ /// リダイレクトの場合は、最終的には転送先ページのURIとなる)。
+ /// </remarks>
private MediaWikiPage GetTargetPage(string title)
{
// 指定された記事をWikipediaから取得、リダイレクトの場合その先まで探索
this.Logger.AddResponse(Resources.LogMessageTargetArticleNotFound);
break;
}
- else if (!page.IsRedirect())
+
+ // 取得した記事のURIを以後のアクセスで用いるRefererとして登録
+ this.From.WebProxy.Referer = page.Uri.ToString();
+ this.To.WebProxy.Referer = page.Uri.ToString();
+
+ if (!page.IsRedirect())
{
- // ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88以å¤\96ã\82\82ã\81\93ã\81\93で終了
+ // ã\83ªã\83\80ã\82¤ã\83¬ã\82¯ã\83\88以å¤\96ã\81ªã\82\89ã\81\93ã\82\8cで終了
break;
}
/// <summary>
/// 指定した言語での言語名称を [[言語名称|略称]]の内部リンクで取得。
/// </summary>
- /// <param name="site">サイト。</param>
- /// <param name="code">言語のコード。</param>
- /// <returns>[[言語名称|略称]]の内部リンク。登録されていない場合<c>null</c>。</returns>
- private MediaWikiLink GetLanguageLink(Website site, string code)
+ /// <returns>
+ /// [[言語名称|略称]]の内部リンク。登録されていない場合<c>null</c>。
+ /// サーバーにそうした記事が存在しない場合、リンクではなく言語名称or略称の文字列を返す。
+ /// </returns>
+ private IElement GetLanguageLink()
{
- if (!site.Language.Names.ContainsKey(code))
+ // 言語情報を取得
+ Language.LanguageName name;
+ if (!this.From.Language.Names.TryGetValue(this.To.Language.Code, out name))
{
return null;
}
- Language.LanguageName name = site.Language.Names[code];
- MediaWikiLink link = new MediaWikiLink(name.Name);
+ // 略称を取得
+ IElement shortName = null;
if (!String.IsNullOrEmpty(name.ShortName))
{
- link.PipeTexts.Add(new TextElement(name.ShortName));
+ shortName = new TextElement(name.ShortName);
}
- return link;
+ if (this.To.HasLanguagePage)
+ {
+ // サーバーにこの言語の記事が存在することが期待される場合、
+ // 内部リンクとして返す
+ MediaWikiLink link = new MediaWikiLink(name.Name);
+ if (shortName != null)
+ {
+ link.PipeTexts.Add(shortName);
+ }
+
+ return link;
+ }
+ else if (shortName != null)
+ {
+ // 存在しない場合、まずあれば略称を返す
+ return shortName;
+ }
+ else
+ {
+ // 無ければ言語名を返す
+ return new TextElement(name.Name);
+ }
}
/// <summary>
throw new InvalidOperationException("From or To is null");
}
- // å¤\89æ\95°ã\82\92å\88\9dæ\9c\9få\8c\96ã\80\81å\87¦ç\90\86æ\99\82é\96\93ã\82\92測å®\9aé\96\8bå§\8b
+ // å\88\9dæ\9c\9få\8c\96ã\82\84ã\82¹ã\83\88ã\83\83ã\83\97ã\82¦ã\82©ã\83\83ã\83\81ã\81®èµ·å\8b\95ã\81¨ã\81\84ã\81£ã\81\9få\89\8då\87¦ç\90\86ã\82\92å®\9fæ\96½
this.Initialize();
- this.Stopwatch.Start();
-
- // サーバー接続チェック
- string host = new Uri(this.From.Location).Host;
- if (!String.IsNullOrEmpty(host) && !Settings.Default.IgnoreError)
+ try
{
- if (!this.Ping(host))
+ // サーバー接続チェック
+ string host = new Uri(this.From.Location).Host;
+ if (!String.IsNullOrEmpty(host) && !Settings.Default.IgnoreError)
{
- throw new ApplicationException("ping failed");
+ if (!this.Ping(host))
+ {
+ throw new ApplicationException("ping failed");
+ }
}
- }
- // ここまでの間に終了要求が出ているかを確認
- this.ThrowExceptionIfCanceled();
+ // ここまでの間に終了要求が出ているかを確認
+ this.ThrowExceptionIfCanceled();
- // 翻訳支援処理実行部の本体を実行
- // ※以降の処理は、継承クラスにて定義
- try
- {
+ // 翻訳支援処理実行部の本体を実行
+ // ※以降の処理は、継承クラスにて定義
this.RunBody(name);
}
finally
{
- // 終了後は処理状態をクリア、処理時間を測定終了
- this.StatusManager.Clear();
- this.Stopwatch.Stop();
+ // 状態のクリアやストップウォッチの停止といった後処理を実施
+ this.Terminate();
}
}
#endregion
- #region 実装が必要なテンプレートメソッド
+ #region テンプレートメソッド
/// <summary>
/// 翻訳支援処理実行部の本体。
/// <remarks>テンプレートメソッド的な構造になっています。</remarks>
protected abstract void RunBody(string name);
+ /// <summary>
+ /// 翻訳支援処理実行時の初期化処理。
+ /// </summary>
+ /// <remarks>
+ /// <para>
+ /// <see cref="RunBody"/>実行前の初期化のタイミングでコールされる。
+ /// 本メソッドで例外が発生した場合、<see cref="RunBody"/>, <see cref="Terminate"/>はコールされない。
+ /// </para>
+ /// <para>
+ /// オーバーライド時は必ず親のメソッドもコールすること。
+ /// </para>
+ /// </remarks>
+ protected virtual void Initialize()
+ {
+ // ロガーや処理状態などを初期化、処理時間の測定を開始
+ this.Logger.Clear();
+ this.StatusManager.Clear();
+ this.Stopwatch.Reset();
+ this.Text = String.Empty;
+ this.CancellationPending = false;
+ this.From.WebProxy.Referer = null;
+ this.To.WebProxy.Referer = null;
+ this.Stopwatch.Start();
+ }
+
+ /// <summary>
+ /// 翻訳支援処理実行時の終了処理。
+ /// </summary>
+ /// <remarks>
+ /// <para>
+ /// <see cref="RunBody"/>実行後の後処理のタイミングでコールされる。
+ /// ただし、サーバー接続チェックに失敗した場合などでは、
+ /// <see cref="RunBody"/>が実行されること無く本メソッドが呼ばれる場合もある。
+ /// </para>
+ /// <para>
+ /// オーバーライド時は必ず親のメソッドもコールすること。
+ /// </para>
+ /// </remarks>
+ protected virtual void Terminate()
+ {
+ // 終了後は処理状態やRefererをクリア、処理時間を測定終了
+ this.StatusManager.Clear();
+ this.From.WebProxy.Referer = null;
+ this.To.WebProxy.Referer = null;
+ this.Stopwatch.Stop();
+ }
+
#endregion
#region 実装支援用メソッド
#region 内部処理用メソッド
/// <summary>
- /// 翻訳支援処理実行時の初期化処理。
- /// </summary>
- private void Initialize()
- {
- // 変数を初期化
- this.Logger.Clear();
- this.StatusManager.Clear();
- this.Stopwatch.Reset();
- this.Text = String.Empty;
- this.CancellationPending = false;
- }
-
- /// <summary>
/// サーバー接続チェック。
/// </summary>
/// <param name="server">サーバー名。</param>
//------------------------------------------------------------------------------
// <auto-generated>
// このコードはツールによって生成されました。
-// ランタイム バージョン:4.0.30319.239
+// ランタイム バージョン:4.0.30319.261
//
// このファイルへの変更は、以下の状況下で不正な動作の原因になったり、
// コードが再生成されるときに損失したりします。
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
- [global::System.Configuration.DefaultSettingValueAttribute("WikipediaTranslationSupportTool/{0}.{1:D2}")]
+ [global::System.Configuration.DefaultSettingValueAttribute("Translation Support for Wikipedia/{0}.{1:D2}")]
public string DefaultUserAgent {
get {
return ((string)(this["DefaultUserAgent"]));
<Profiles />
<Settings>
<Setting Name="DefaultUserAgent" Type="System.String" Scope="Application">
- <Value Profile="(Default)">WikipediaTranslationSupportTool/{0}.{1:D2}</Value>
+ <Value Profile="(Default)">Translation Support for Wikipedia/{0}.{1:D2}</Value>
</Setting>
<Setting Name="WikipediaLocation" Type="System.String" Scope="Application">
<Value Profile="(Default)">http://{0}.wikipedia.org</Value>
言語間リンク取得時に<includeonly>, <noinclude>を考慮するよう修正。
見出しの置き換えに改行区切りで複数の語句を登録できるよう改良。
非常に複雑なテンプレートで極端に時間がかかっていたのを改善。
+ サーバーへのアクセス時に自動でRefererを設定するよう変更。
+ UserAgentを英語アプリ名にあわせたものに変更。
その他ソースの改善/小不具合を修正。
※ 1.11とは設定ファイル名が変化しており、古い設定は自動で読み込まれません。
// ================================================================================================
// <summary>
-// アプリケーションデフォルトの値を用いてウェブアクセスするプロキシクラスソース</summary>
+// アプリケーション設定値を用いてウェブアクセスするプロキシクラスソース</summary>
//
-// <copyright file="AppDefaultWebProxy.cs" company="honeplusのメモ帳">
-// Copyright (C) 2011 Honeplus. All rights reserved.</copyright>
+// <copyright file="AppConfigWebProxy.cs" company="honeplusのメモ帳">
+// Copyright (C) 2012 Honeplus. All rights reserved.</copyright>
// <author>
// Honeplus</author>
// ================================================================================================
using System;
using System.IO;
using System.Net;
+ using System.Reflection;
using System.Threading;
+ using Honememo.Utilities;
using Honememo.Wptscs.Properties;
/// <summary>
- /// アプリケーションデフォルトの値を用いてウェブアクセスするプロキシクラスです。
+ /// アプリケーション設定値を用いてウェブアクセスするプロキシクラスです。
/// </summary>
- public class AppDefaultWebProxy : IWebProxy
+ public class AppConfigWebProxy : IWebProxy
{
#region private変数
/// <summary>
/// このプロキシで使用するUserAgent。
/// </summary>
- /// <returns>UserAgent。</returns>
- /// <remarks>プロパティ→アプリ設定値→アプリデフォルト値を生成 の順にあるものを返す。</remarks>
+ /// <remarks>アプリ設定値→プロパティ→アプリデフォルト値を生成 の順に見つけたものを返す。</remarks>
public string UserAgent
{
get
{
- // プロパティを確認
- if (this.userAgent != null)
+ // アプリ設定値を確認
+ string ua = Settings.Default.UserAgent;
+ if (!String.IsNullOrEmpty(ua))
{
- return this.userAgent;
+ return ua;
}
- // アプリ設定値を確認
- string ua = Settings.Default.UserAgent;
- if (String.IsNullOrEmpty(ua))
+ // 存在しない場合、このプロパティの値を確認
+ if (this.userAgent != null)
{
- // 特に設定が無い場合はデフォルトの値を設定
- Version ver = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version;
- ua = String.Format(
- Settings.Default.DefaultUserAgent,
- ver.Major,
- ver.Minor);
+ return this.userAgent;
}
- return ua;
+ // いずれも存在しない場合は、デフォルトの値を生成して返す
+ Version ver = Assembly.GetExecutingAssembly().GetName().Version;
+ return String.Format(Settings.Default.DefaultUserAgent, ver.Major, ver.Minor);
}
set
/// <summary>
/// このプロキシで使用するReferer。
/// </summary>
- /// <returns>Referer。</returns>
- /// <remarks>プロパティ→アプリ設定値 の順にあるものを返す。</remarks>
+ /// <remarks>アプリ設定値→プロパティ の順に見つけたものを返す。</remarks>
public string Referer
{
get
{
- // プロパティを確認
- if (this.referer != null)
- {
- return this.referer;
- }
-
// アプリ設定値を確認
string r = Settings.Default.Referer;
if (String.IsNullOrEmpty(r))
{
- r = String.Empty;
+ // 存在しない場合、このプロパティの値を返す
+ r = this.referer;
}
- return r;
+ return StringUtils.DefaultString(r);
}
set
}
// 時間を置いてからリトライする(0はスレッド停止のため除外)
- System.Diagnostics.Debug.WriteLine("AppDefaultWebProxy.GetStream > retry : " + e.Message);
+ System.Diagnostics.Debug.WriteLine("AppConfigWebProxy.GetStream > retry : " + e.Message);
if (wait > 0)
{
Thread.Sleep(wait);
}
/// <summary>
- /// HttpWebRequest用の設定を行う。
+ /// <see cref="HttpWebRequest"/>用の設定を行う。
/// </summary>
- /// <param name="req">設定対象のHttpWebRequest。</param>
+ /// <param name="req">設定対象の<see cref="HttpWebRequest"/>。</param>
private void InitializeHttpWebRequest(HttpWebRequest req)
{
// UserAgent設定
/// <summary>
/// 渡された<see cref="WebException"/>がリトライ可能なものか?
/// </summary>
- /// <param name="e">発生した<c>WebException</c>。</param>
+ /// <param name="e">発生した<see cref="WebException"/>。</param>
/// <returns>リトライ可能な場合<c>true</c>。</returns>
private bool IsRetryable(WebException e)
{
/// </summary>
private object lockLoadMetaApi = new object();
+ /// <summary>
+ /// Template:Documentation(言語間リンク等を別ページに記述するためのテンプレート)に相当するページ名。
+ /// </summary>
+ private IList<string> documentationTemplates = new List<string>();
+
#endregion
#region コンストラクタ
/// <summary>
- /// コンストラクタ(MediaWiki全般)。
+ /// 指定された言語, サーバーのMediaWikiを表すインスタンスを作成。
/// </summary>
/// <param name="language">ウェブサイトの言語。</param>
/// <param name="location">ウェブサイトの場所。</param>
- public MediaWiki(Language language, string location) : this()
+ /// <exception cref="ArgumentNullException"><paramref name="language"/>または<paramref name="location"/>が<c>null</c>の場合。</exception>
+ /// <exception cref="ArgumentException"><paramref name="location"/>が空の文字列の場合。</exception>
+ public MediaWiki(Language language, string location)
+ : base(language, location)
{
- // メンバ変数の初期設定
- this.Language = language;
- this.Location = location;
}
/// <summary>
- /// コンストラクタ(Wikipedia用)。
+ /// 指定された言語のWikipediaを表すインスタンスを作成。
/// </summary>
/// <param name="language">ウェブサイトの言語。</param>
- public MediaWiki(Language language) : this()
+ /// <exception cref="ArgumentNullException"><c>null</c>が指定された場合。</exception>
+ public MediaWiki(Language language)
{
- // メンバ変数の初期設定
- // ※ オーバーロードメソッドを呼んでいないのは、languageがnullのときに先にエラーになるから
+ // 親で初期化していないのは、languageのnullチェックの前にnull参照でエラーになってしまうから
this.Language = language;
this.Location = String.Format(Settings.Default.WikipediaLocation, language.Code);
}
/// <summary>
- /// コンストラクタ(シリアライズ or 拡張用)。
+ /// 空のインスタンスを作成(シリアライズ or 拡張用)。
/// </summary>
protected MediaWiki()
{
- this.WebProxy = new AppDefaultWebProxy();
- this.DocumentationTemplates = new List<string>();
}
#endregion
/// <remarks>空の場合、その言語版にはこれに相当する機能は無いものとして扱う。</remarks>
public IList<string> DocumentationTemplates
{
- get;
- protected set;
+ get
+ {
+ return this.documentationTemplates;
+ }
+
+ set
+ {
+ if (value == null)
+ {
+ // nullの場合、空のリストを代入
+ // ※ 例外にしてもよいが、このクラスにはnullで初期化としている
+ // プロパティが多数存在するので、動きをあわせる
+ value = new List<string>();
+ }
+
+ this.documentationTemplates = value;
+ }
}
/// <summary>
}
/// <summary>
- /// このクラスで使用するWebアクセス用Proxyインスタンス。
+ /// 言語名の記事が存在するようなサイトか?
/// </summary>
- /// <remarks>setterはユニットテスト用に公開。</remarks>
- public IWebProxy WebProxy
+ /// <remarks>
+ /// そうした記事が存在する場合<c>true</c>。
+ /// Wikipediaには[[日本語]]といった記事が存在するが、Wikitravelであればそうした記事は存在し得ない。
+ /// 言語名をリンクにするかといった判断に用いる。
+ /// </remarks>
+ public bool HasLanguagePage
{
- protected get;
+ get;
set;
}
}
// ページ情報を作成して返す
- return new MediaWikiPage(this, pageTitle, text, time);
+ return new MediaWikiPage(this, pageTitle, text, time, uri);
}
/// <summary>
/// <summary>
/// シリアライズするXMLのスキーマ定義を返す。
/// </summary>
- /// <returns>XML表現を記述するXmlSchema。</returns>
+ /// <returns>XML表現を記述する<see cref="System.Xml.Schema.XmlSchema"/>。</returns>
public System.Xml.Schema.XmlSchema GetSchema()
{
return null;
/// <summary>
/// XMLからオブジェクトをデシリアライズする。
/// </summary>
- /// <param name="reader">デシリアライズ元のXmlReader</param>
+ /// <param name="reader">デシリアライズ元の<see cref="XmlReader"/></param>
public void ReadXml(XmlReader reader)
{
XmlDocument xml = new XmlDocument();
this.ExportPath = XmlUtils.InnerText(siteElement.SelectSingleNode("ExportPath"));
this.Redirect = XmlUtils.InnerText(siteElement.SelectSingleNode("Redirect"));
- string text = XmlUtils.InnerText(siteElement.SelectSingleNode("TemplateNamespace"));
- if (!String.IsNullOrEmpty(text))
+ int namespaceId;
+ if (int.TryParse(XmlUtils.InnerText(siteElement.SelectSingleNode("TemplateNamespace")), out namespaceId))
{
- this.TemplateNamespace = int.Parse(text);
+ this.TemplateNamespace = namespaceId;
}
- text = XmlUtils.InnerText(siteElement.SelectSingleNode("CategoryNamespace"));
- if (!String.IsNullOrEmpty(text))
+ if (int.TryParse(XmlUtils.InnerText(siteElement.SelectSingleNode("CategoryNamespace")), out namespaceId))
{
- this.CategoryNamespace = int.Parse(text);
+ this.CategoryNamespace = namespaceId;
}
- text = XmlUtils.InnerText(siteElement.SelectSingleNode("FileNamespace"));
- if (!String.IsNullOrEmpty(text))
+ if (int.TryParse(XmlUtils.InnerText(siteElement.SelectSingleNode("FileNamespace")), out namespaceId))
{
- this.FileNamespace = int.Parse(text);
+ this.FileNamespace = namespaceId;
}
// システム定義変数
this.LinkInterwikiFormat = XmlUtils.InnerText(siteElement.SelectSingleNode("LinkInterwikiFormat"));
this.LangFormat = XmlUtils.InnerText(siteElement.SelectSingleNode("LangFormat"));
+ bool hasLanguagePage;
+ if (bool.TryParse(XmlUtils.InnerText(siteElement.SelectSingleNode("HasLanguagePage")), out hasLanguagePage))
+ {
+ this.HasLanguagePage = hasLanguagePage;
+ }
}
/// <summary>
/// オブジェクトをXMLにシリアライズする。
/// </summary>
- /// <param name="writer">シリアライズ先のXmlWriter</param>
+ /// <param name="writer">シリアライズ先の<see cref="XmlWriter"/></param>
public void WriteXml(XmlWriter writer)
{
writer.WriteElementString("Location", this.Location);
writer.WriteEndElement();
writer.WriteElementString("LinkInterwikiFormat", this.LinkInterwikiFormat);
writer.WriteElementString("LangFormat", this.LangFormat);
+ writer.WriteElementString("HasLanguagePage", this.HasLanguagePage.ToString());
}
#endregion
#region コンストラクタ
/// <summary>
- /// コンストラクタ。
+ /// 指定されたMediaWikiの渡されたタイトル, 本文, タイムスタンプのページを作成。
/// </summary>
/// <param name="website">ページが所属するウェブサイト。</param>
/// <param name="title">ページタイトル。</param>
/// <param name="text">ページの本文。</param>
/// <param name="timestamp">ページのタイムスタンプ。</param>
- public MediaWikiPage(MediaWiki website, string title, string text, DateTime? timestamp)
- : base(website, title, text, timestamp)
+ /// <param name="uri">ページのURI。</param>
+ /// <exception cref="ArgumentNullException"><paramref name="website"/>または<paramref name="title"/>が<c>null</c>の場合。</exception>
+ /// <exception cref="ArgumentException"><paramref name="title"/>が空の文字列の場合。</exception>
+ public MediaWikiPage(MediaWiki website, string title, string text, DateTime? timestamp, Uri uri)
+ : base(website, title, text, timestamp, uri)
{
}
/// <summary>
- /// コンストラクタ。
- /// ページのタイムスタンプには<c>null</c>を設定。
+ /// 指定されたMediaWikiの渡されたタイトル, 本文のページを作成。
/// </summary>
/// <param name="website">ページが所属するウェブサイト。</param>
/// <param name="title">ページタイトル。</param>
/// <param name="text">ページの本文。</param>
+ /// <remarks>ページのタイムスタンプ, URIには<c>null</c>を設定。</remarks>
+ /// <exception cref="ArgumentNullException"><paramref name="website"/>または<paramref name="title"/>が<c>null</c>の場合。</exception>
+ /// <exception cref="ArgumentException"><paramref name="title"/>が空の文字列の場合。</exception>
public MediaWikiPage(MediaWiki website, string title, string text)
: base(website, title, text)
{
}
/// <summary>
- /// コンストラクタ。
- /// ページの本文, タイムスタンプには<c>null</c>を設定。
+ /// 指定されたMediaWikiの渡されたタイトルのページを作成。
/// </summary>
/// <param name="website">ページが所属するウェブサイト。</param>
/// <param name="title">ページタイトル。</param>
+ /// <remarks>ページの本文, タイムスタンプ, URIには<c>null</c>を設定。</remarks>
+ /// <exception cref="ArgumentNullException"><paramref name="website"/>または<paramref name="title"/>が<c>null</c>の場合。</exception>
+ /// <exception cref="ArgumentException"><paramref name="title"/>が空の文字列の場合。</exception>
public MediaWikiPage(MediaWiki website, string title)
: base(website, title)
{
// ページ(Wikipediaの記事など)をあらわすモデルクラスソース</summary>
//
// <copyright file="Page.cs" company="honeplusのメモ帳">
-// Copyright (C) 2010 Honeplus. All rights reserved.</copyright>
+// Copyright (C) 2012 Honeplus. All rights reserved.</copyright>
// <author>
// Honeplus</author>
// ================================================================================================
namespace Honememo.Wptscs.Websites
{
using System;
- using System.Linq;
- using System.Text;
using Honememo.Utilities;
/// <summary>
#region コンストラクタ
/// <summary>
- /// コンストラクタ。
+ /// 指定されたウェブサイトの渡されたタイトル, 本文, タイムスタンプのページを作成。
/// </summary>
/// <param name="website">ページが所属するウェブサイト。</param>
/// <param name="title">ページタイトル。</param>
/// <param name="text">ページの本文。</param>
/// <param name="timestamp">ページのタイムスタンプ。</param>
- public Page(Website website, string title, string text, DateTime? timestamp)
+ /// <param name="uri">ページのURI。</param>
+ /// <exception cref="ArgumentNullException"><paramref name="website"/>または<paramref name="title"/>が<c>null</c>の場合。</exception>
+ /// <exception cref="ArgumentException"><paramref name="title"/>が空の文字列の場合。</exception>
+ public Page(Website website, string title, string text, DateTime? timestamp, Uri uri)
{
- // 初期値設定、基本的に以後外から変更されることを想定しない
+ // 初期値設定、基本的に以降外から変更されることを想定しない
this.Website = website;
this.Title = title;
this.Text = text;
this.Timestamp = timestamp;
+ this.Uri = uri;
}
/// <summary>
- /// コンストラクタ。
- /// ページのタイムスタンプには<c>null</c>を設定。
+ /// 指定されたウェブサイトの渡されたタイトル, 本文のページを作成。
/// </summary>
/// <param name="website">ページが所属するウェブサイト。</param>
/// <param name="title">ページタイトル。</param>
/// <param name="text">ページの本文。</param>
+ /// <remarks>ページのタイムスタンプ, URIには<c>null</c>を設定。</remarks>
+ /// <exception cref="ArgumentNullException"><paramref name="website"/>または<paramref name="title"/>が<c>null</c>の場合。</exception>
+ /// <exception cref="ArgumentException"><paramref name="title"/>が空の文字列の場合。</exception>
public Page(Website website, string title, string text)
- : this(website, title, text, null)
+ : this(website, title, text, null, null)
{
}
/// <summary>
- /// コンストラクタ。
- /// ページの本文, タイムスタンプには<c>null</c>を設定。
+ /// 指定されたウェブサイトの渡されたタイトルのページを作成。
/// </summary>
/// <param name="website">ページが所属するウェブサイト。</param>
/// <param name="title">ページタイトル。</param>
+ /// <remarks>ページの本文, タイムスタンプ, URIには<c>null</c>を設定。</remarks>
+ /// <exception cref="ArgumentNullException"><paramref name="website"/>または<paramref name="title"/>が<c>null</c>の場合。</exception>
+ /// <exception cref="ArgumentException"><paramref name="title"/>が空の文字列の場合。</exception>
public Page(Website website, string title)
- : this(website, title, null, null)
+ : this(website, title, null, null, null)
{
}
/// <summary>
/// ページが所属するウェブサイト。
/// </summary>
+ /// <exception cref="ArgumentNullException"><c>null</c>が指定された場合。</exception>
public virtual Website Website
{
get
protected set
{
- // ウェブサイトは必須
- this.website = Validate.NotNull(value, "website");
+ this.website = Validate.NotNull(value);
}
}
/// <summary>
/// ページタイトル。
/// </summary>
+ /// <exception cref="ArgumentNullException"><c>null</c>が指定された場合。</exception>
+ /// <exception cref="ArgumentException">空文字列が指定された場合。</exception>
public virtual string Title
{
get
protected set
{
- // ページタイトルは必須
- this.title = Validate.NotBlank(value, "title");
+ this.title = Validate.NotBlank(value);
}
}
get;
protected set;
}
+
+ /// <summary>
+ /// ページのURI。
+ /// </summary>
+ public virtual Uri Uri
+ {
+ get;
+ protected set;
+ }
#endregion
}
using Honememo.Utilities;
using Honememo.Wptscs.Models;
using Honememo.Wptscs.Properties;
+ using Honememo.Wptscs.Utilities;
/// <summary>
/// ウェブサイトをあらわすモデルクラスです。
/// </summary>
private Language language;
+ /// <summary>
+ /// このウェブサイトへのアクセスで使用するProxyインスタンス。
+ /// </summary>
+ private Honememo.Wptscs.Utilities.IWebProxy webProxy = new AppConfigWebProxy();
+
#endregion
#region コンストラクタ
/// <summary>
- /// コンストラクタ。
+ /// 指定された言語, サーバーのウェブサイトを表すインスタンスを作成。
/// </summary>
- /// <remarks>継承クラスでは忘れずに
- /// <see cref="Location"/>, <see cref="Language"/>
- /// の設定を行ってください。</remarks>
- public Website()
+ /// <param name="language">ウェブサイトの言語。</param>
+ /// <param name="location">ウェブサイトの場所。</param>
+ /// <exception cref="ArgumentNullException"><paramref name="language"/>または<paramref name="location"/>が<c>null</c>の場合。</exception>
+ /// <exception cref="ArgumentException"><paramref name="location"/>が空の文字列の場合。</exception>
+ public Website(Language language, string location)
+ {
+ this.Language = language;
+ this.Location = location;
+ }
+
+ /// <summary>
+ /// 空のインスタンスを作成(シリアライズ or 拡張用)。
+ /// </summary>
+ /// <remarks>
+ /// <see cref="Language"/>, <see cref="Location"/>
+ /// はウェブサイトでは必須扱いのため、通常はチェックが行われる
+ /// <see cref="Website(Language, string)"/>
+ /// のコンストラクタを使用してください。
+ /// </remarks>
+ protected Website()
{
}
/// ウェブサイトの場所。
/// </summary>
/// <example>http://en.wikipedia.org</example>
- /// <remarks>動作確認はhttpとfileスキームのみ。</remarks>
+ /// <exception cref="ArgumentNullException"><c>null</c>が指定された場合。</exception>
+ /// <exception cref="ArgumentException">空の文字列が指定された場合。</exception>
public string Location
{
get
set
{
- // ※必須な情報が設定されていない場合、例外を返す
- this.location = Validate.NotBlank(value, "location");
+ this.location = Validate.NotBlank(value);
}
}
/// <summary>
/// ウェブサイトの言語。
/// </summary>
+ /// <exception cref="ArgumentNullException"><c>null</c>が指定された場合。</exception>
public Language Language
{
get
protected set
{
- // ※必須な情報が設定されていない場合、例外を返す
- this.language = Validate.NotNull(value, "language");
+ this.language = Validate.NotNull(value);
+ }
+ }
+
+ /// <summary>
+ /// このウェブサイトへのアクセスで使用するProxyインスタンス。
+ /// </summary>
+ /// <exception cref="ArgumentNullException"><c>null</c>が指定された場合。</exception>
+ public Honememo.Wptscs.Utilities.IWebProxy WebProxy
+ {
+ get
+ {
+ return this.webProxy;
+ }
+
+ set
+ {
+ this.webProxy = Validate.NotNull(value);
}
}
</DocumentationTemplates>
<LinkInterwikiFormat>{{وإو|عر=$1|لغ=$2|تر=$3|نص=$4}}</LinkInterwikiFormat>
<LangFormat>{{رمزلغة|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://bn.wikipedia.org</Location>
<MagicWords />
<InterwikiPrefixs />
<DocumentationTemplates />
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://de.wikipedia.org</Location>
<DocumentationTemplate DefaultPage="/Doku">Vorlage:Dokumentation</DocumentationTemplate>
</DocumentationTemplates>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://en.wikipedia.org</Location>
</DocumentationTemplates>
<LinkInterwikiFormat>{{link-interwiki|en=$1|en_text=$4|lang=$2|lang_title=$3}}</LinkInterwikiFormat>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://es.wikipedia.org</Location>
<DocumentationTemplate DefaultPage="/doc">Plantilla:Documentación</DocumentationTemplate>
</DocumentationTemplates>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://fr.wikipedia.org</Location>
</DocumentationTemplates>
<LinkInterwikiFormat>{{Lien|fr=$1|lang=$2|trad=$3|texte=$4}}</LinkInterwikiFormat>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://hi.wikipedia.org</Location>
<InterwikiPrefixs />
<DocumentationTemplates />
<LangFormat>{{भाषा|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://it.wikipedia.org</Location>
<DocumentationTemplate DefaultPage="/man">Template:Man</DocumentationTemplate>
</DocumentationTemplates>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://ja.wikipedia.org</Location>
</DocumentationTemplates>
<LinkInterwikiFormat>{{仮リンク|$1|$2|$3|label=$4}}</LinkInterwikiFormat>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://ko.wikipedia.org</Location>
<DocumentationTemplate DefaultPage="/설명문서">틀:틀 설명문서</DocumentationTemplate>
</DocumentationTemplates>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://nl.wikipedia.org</Location>
<DocumentationTemplate DefaultPage="/doc">Sjabloon:Sjabdoc</DocumentationTemplate>
</DocumentationTemplates>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://pl.wikipedia.org</Location>
<DocumentationTemplates>
<DocumentationTemplate DefaultPage="/opis">Szablon:Dokumentacja</DocumentationTemplate>
</DocumentationTemplates>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://pt.wikipedia.org</Location>
<DocumentationTemplate DefaultPage="/doc">Predefinição:Documentação</DocumentationTemplate>
</DocumentationTemplates>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://ru.wikipedia.org</Location>
<DocumentationTemplate DefaultPage="/doc">Шаблон:Doc</DocumentationTemplate>
</DocumentationTemplates>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://si.wikipedia.org</Location>
<MagicWords />
<InterwikiPrefixs />
<DocumentationTemplates />
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://ta.wikipedia.org</Location>
<MagicWords />
<InterwikiPrefixs />
<DocumentationTemplates />
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://zh.wikipedia.org</Location>
<DocumentationTemplate DefaultPage="/doc">Template:Template doc</DocumentationTemplate>
</DocumentationTemplates>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
</Websites>
<ItemTables>
<MediaWiki>
<Location>http://wikitravel.org</Location>
<Language Code="de">
- <Names />
+ <Names>
+ <LanguageName Code="de">
+ <Name>Deutsch</Name>
+ <ShortName />
+ </LanguageName>
+ <LanguageName Code="en">
+ <Name>German</Name>
+ <ShortName />
+ </LanguageName>
+ <LanguageName Code="ja">
+ <Name>ドイツ語</Name>
+ <ShortName>独</ShortName>
+ </LanguageName>
+ <LanguageName Code="zh">
+ <Name>德语</Name>
+ <ShortName />
+ </LanguageName>
+ </Names>
</Language>
<MetaApi>/wiki/de/api.php?format=xml&action=query&meta=siteinfo&siprop=namespaces|interwikimap</MetaApi>
<ExportPath>/de/Spezial:Exportieren/$1</ExportPath>
<MediaWiki>
<Location>http://wikitravel.org</Location>
<Language Code="en">
- <Names />
+ <Names>
+ <LanguageName Code="de">
+ <Name>Englisch</Name>
+ <ShortName />
+ </LanguageName>
+ <LanguageName Code="en">
+ <Name>English</Name>
+ <ShortName />
+ </LanguageName>
+ <LanguageName Code="ja">
+ <Name>英語</Name>
+ <ShortName>英</ShortName>
+ </LanguageName>
+ <LanguageName Code="zh">
+ <Name>英語</Name>
+ <ShortName />
+ </LanguageName>
+ <LanguageName Code="fr">
+ <Name>Anglais</Name>
+ <ShortName />
+ </LanguageName>
+ <LanguageName Code="ru">
+ <Name>Английский язык</Name>
+ <ShortName />
+ </LanguageName>
+ </Names>
</Language>
<MetaApi>/wiki/en/api.php?format=xml&action=query&meta=siteinfo&siprop=namespaces|interwikimap</MetaApi>
<ExportPath>/en/Special:Export/$1</ExportPath>
<MediaWiki>
<Location>http://wikitravel.org</Location>
<Language Code="fr">
- <Names />
+ <Names>
+ <LanguageName Code="de">
+ <Name>Französisch</Name>
+ <ShortName />
+ </LanguageName>
+ <LanguageName Code="en">
+ <Name>French</Name>
+ <ShortName />
+ </LanguageName>
+ <LanguageName Code="fr">
+ <Name>Français</Name>
+ <ShortName />
+ </LanguageName>
+ <LanguageName Code="ja">
+ <Name>フランス語</Name>
+ <ShortName>仏</ShortName>
+ </LanguageName>
+ <LanguageName Code="zh">
+ <Name>法语</Name>
+ <ShortName />
+ </LanguageName>
+ </Names>
</Language>
<MetaApi>/wiki/fr/api.php?format=xml&action=query&meta=siteinfo&siprop=namespaces|interwikimap</MetaApi>
<ExportPath>/fr/Special:Export/$1</ExportPath>
<MediaWiki>
<Location>http://wikitravel.org</Location>
<Language Code="ja">
- <Names />
+ <Names>
+ <LanguageName Code="de">
+ <Name>Japanisch</Name>
+ <ShortName />
+ </LanguageName>
+ <LanguageName Code="en">
+ <Name>Japanese</Name>
+ <ShortName />
+ </LanguageName>
+ <LanguageName Code="ja">
+ <Name>日本語</Name>
+ <ShortName>日</ShortName>
+ </LanguageName>
+ <LanguageName Code="zh">
+ <Name>日語</Name>
+ <ShortName />
+ </LanguageName>
+ </Names>
<Bracket>($1)</Bracket>
</Language>
<MetaApi>/wiki/ja/api.php?format=xml&action=query&meta=siteinfo&siprop=namespaces|interwikimap</MetaApi>
<MediaWiki>
<Location>http://wikitravel.org</Location>
<Language Code="ru">
- <Names />
+ <Names>
+ <LanguageName Code="en">
+ <Name>Russian</Name>
+ <ShortName />
+ </LanguageName>
+ <LanguageName Code="ja">
+ <Name>ロシア語</Name>
+ <ShortName>露</ShortName>
+ </LanguageName>
+ <LanguageName Code="ru">
+ <Name>русский язык</Name>
+ <ShortName>русский</ShortName>
+ </LanguageName>
+ <LanguageName Code="zh">
+ <Name>俄语</Name>
+ <ShortName />
+ </LanguageName>
+ </Names>
</Language>
<MetaApi>/wiki/ru/api.php?format=xml&action=query&meta=siteinfo&siprop=namespaces|interwikimap</MetaApi>
<ExportPath>/ru/%D0%A1%D0%BB%D1%83%D0%B6%D0%B5%D0%B1%D0%BD%D0%B0%D1%8F:Export/$1</ExportPath>
<MediaWiki>
<Location>http://wikitravel.org</Location>
<Language Code="zh">
- <Names />
+ <Names>
+ <LanguageName Code="de">
+ <Name>Chinesisch</Name>
+ <ShortName />
+ </LanguageName>
+ <LanguageName Code="en">
+ <Name>Chinese</Name>
+ <ShortName />
+ </LanguageName>
+ <LanguageName Code="ja">
+ <Name>中国語</Name>
+ <ShortName>中</ShortName>
+ </LanguageName>
+ <LanguageName Code="zh">
+ <Name>中文</Name>
+ <ShortName />
+ </LanguageName>
+ </Names>
</Language>
<MetaApi>/wiki/zh/api.php?format=xml&action=query&meta=siteinfo&siprop=namespaces|interwikimap</MetaApi>
<ExportPath>/zh/Special:Export/$1</ExportPath>
<Compile Include="Websites\Website.cs" />
<Compile Include="Program.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="Utilities\AppDefaultWebProxy.cs" />
+ <Compile Include="Utilities\AppConfigWebProxy.cs" />
<Compile Include="Utilities\IWebProxy.cs" />
<Compile Include="Parsers\MediaWikiParser.cs" />
<EmbeddedResource Include="ConfigForm.ja.resx">
<applicationSettings>
<Honememo.Wptscs.Properties.Settings>
<setting name="DefaultUserAgent" serializeAs="String">
- <value>WikipediaTranslationSupportTool/{0}.{1:D2}</value>
+ <value>Translation Support for Wikipedia/{0}.{1:D2}</value>
</setting>
<setting name="WikipediaLocation" serializeAs="String">
<value>http://{0}.wikipedia.org</value>
</DocumentationTemplates>
<LinkInterwikiFormat>{{وإو|عر=$1|لغ=$2|تر=$3|نص=$4}}</LinkInterwikiFormat>
<LangFormat>{{رمزلغة|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://bn.wikipedia.org</Location>
<MagicWords />
<InterwikiPrefixs />
<DocumentationTemplates />
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://de.wikipedia.org</Location>
<DocumentationTemplate DefaultPage="/Doku">Vorlage:Dokumentation</DocumentationTemplate>
</DocumentationTemplates>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://en.wikipedia.org</Location>
</DocumentationTemplates>
<LinkInterwikiFormat>{{link-interwiki|en=$1|en_text=$4|lang=$2|lang_title=$3}}</LinkInterwikiFormat>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://es.wikipedia.org</Location>
<DocumentationTemplate DefaultPage="/doc">Plantilla:Documentación</DocumentationTemplate>
</DocumentationTemplates>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://fr.wikipedia.org</Location>
</DocumentationTemplates>
<LinkInterwikiFormat>{{Lien|fr=$1|lang=$2|trad=$3|texte=$4}}</LinkInterwikiFormat>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://hi.wikipedia.org</Location>
<InterwikiPrefixs />
<DocumentationTemplates />
<LangFormat>{{भाषा|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://it.wikipedia.org</Location>
<DocumentationTemplate DefaultPage="/man">Template:Man</DocumentationTemplate>
</DocumentationTemplates>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://ja.wikipedia.org</Location>
</DocumentationTemplates>
<LinkInterwikiFormat>{{仮リンク|$1|$2|$3|label=$4}}</LinkInterwikiFormat>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://ko.wikipedia.org</Location>
<DocumentationTemplate DefaultPage="/설명문서">틀:틀 설명문서</DocumentationTemplate>
</DocumentationTemplates>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://nl.wikipedia.org</Location>
<DocumentationTemplate DefaultPage="/doc">Sjabloon:Sjabdoc</DocumentationTemplate>
</DocumentationTemplates>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://pl.wikipedia.org</Location>
<DocumentationTemplates>
<DocumentationTemplate DefaultPage="/opis">Szablon:Dokumentacja</DocumentationTemplate>
</DocumentationTemplates>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://pt.wikipedia.org</Location>
<DocumentationTemplate DefaultPage="/doc">Predefinição:Documentação</DocumentationTemplate>
</DocumentationTemplates>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://ru.wikipedia.org</Location>
<DocumentationTemplate DefaultPage="/doc">Шаблон:Doc</DocumentationTemplate>
</DocumentationTemplates>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://si.wikipedia.org</Location>
<MagicWords />
<InterwikiPrefixs />
<DocumentationTemplates />
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://ta.wikipedia.org</Location>
<MagicWords />
<InterwikiPrefixs />
<DocumentationTemplates />
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
<MediaWiki>
<Location>http://zh.wikipedia.org</Location>
<DocumentationTemplate DefaultPage="/doc">模板:Documentation</DocumentationTemplate>
</DocumentationTemplates>
<LangFormat>{{Lang|$1|$2}}</LangFormat>
+ <HasLanguagePage>True</HasLanguagePage>
</MediaWiki>
</Websites>
<ItemTables>
Assert.AreEqual("===[[弾道飛行]]{{ref-en}}===", translator.ReplaceHeading(heading, parent).ToString());
}
+ /// <summary>
+ /// <see cref="MediaWikiTranslator.CreateOpening"/>メソッドテストケース。
+ /// </summary>
+ [Test]
+ public void TestCreateOpening()
+ {
+ // From, Toの設定に応じて変換後記事の冒頭部を作り出す
+ TestMediaWikiTranslator translator = new TestMediaWikiTranslator();
+ MockFactory mock = new MockFactory();
+ translator.From = mock.GetMediaWiki("en");
+ translator.To = mock.GetMediaWiki("ja");
+
+ // 完全な形
+ Assert.AreEqual(
+ "'''xxx'''([[英語|英]]: '''{{Lang|en|English's title}}''')\n\n",
+ translator.CreateOpening("English's title"));
+
+ // リンクなし・略称あり
+ translator.To.HasLanguagePage = false;
+ Assert.AreEqual(
+ "'''xxx'''(英: '''{{Lang|en|English's title}}''')\n\n",
+ translator.CreateOpening("English's title"));
+
+ // リンクなし・略称なし
+ Language.LanguageName name = translator.From.Language.Names["ja"];
+ name.ShortName = null;
+ translator.From.Language.Names["ja"] = name;
+ Assert.AreEqual(
+ "'''xxx'''(英語: '''{{Lang|en|English's title}}''')\n\n",
+ translator.CreateOpening("English's title"));
+
+ // リンクあり・略称なし
+ translator.To.HasLanguagePage = true;
+ Assert.AreEqual(
+ "'''xxx'''([[英語]]: '''{{Lang|en|English's title}}''')\n\n",
+ translator.CreateOpening("English's title"));
+
+ // 言語名なし・リンク有り
+ translator.From.Language.Names.Remove("ja");
+ Assert.AreEqual(
+ "'''xxx'''('''{{Lang|en|English's title}}''')\n\n",
+ translator.CreateOpening("English's title"));
+
+ // 言語名なし・リンクなし
+ translator.To.HasLanguagePage = false;
+ Assert.AreEqual(
+ "'''xxx'''('''{{Lang|en|English's title}}''')\n\n",
+ translator.CreateOpening("English's title"));
+
+ // 仮リンクフォーマットなし
+ translator.To.LangFormat = null;
+ Assert.AreEqual(
+ "'''xxx'''('''English's title''')\n\n",
+ translator.CreateOpening("English's title"));
+
+ // 括弧のフォーマット変更
+ // ※ パラメータ上なしには出来ない
+ translator.To.Language.Bracket = "「$1」";
+ Assert.AreEqual(
+ "'''xxx'''「'''English's title'''」\n\n",
+ translator.CreateOpening("English's title"));
+
+ // 括弧のフォーマットの$1なし
+ translator.To.Language.Bracket = "後で消す";
+ Assert.AreEqual(
+ "'''xxx'''後で消す\n\n",
+ translator.CreateOpening("English's title"));
+ }
+
#endregion
#region 全体テストケース
return base.ReplaceHeading(heading, parent);
}
+ /// <summary>
+ /// 変換後記事冒頭用の「'''日本語記事名'''([[英語|英]]: '''{{Lang|en|英語記事名}}''')」みたいなのを作成する。
+ /// </summary>
+ /// <param name="title">翻訳支援対象の記事名。</param>
+ /// <returns>冒頭部のテキスト。</returns>
+ public new string CreateOpening(string title)
+ {
+ return base.CreateOpening(title);
+ }
+
#endregion
}
// ================================================================================================
// <summary>
-// AppDefaultWebProxyのテストクラスソース。</summary>
+// AppConfigWebProxyのテストクラスソース。</summary>
//
-// <copyright file="AppDefaultWebProxyTest.cs" company="honeplusのメモ帳">
+// <copyright file="AppConfigWebProxyTest.cs" company="honeplusのメモ帳">
// Copyright (C) 2012 Honeplus. All rights reserved.</copyright>
// <author>
// Honeplus</author>
using NUnit.Framework;
/// <summary>
- /// AppDefaultWebProxyのテストクラスです。
+ /// <see cref="AppConfigWebProxy"/>のテストクラスです。
/// </summary>
[TestFixture]
- public class AppDefaultWebProxyTest
+ class AppConfigWebProxyTest
{
#region 定数
#region インタフェース実装プロパティテストケース
/// <summary>
- /// UserAgentプロパティテストケース。
+ /// <see cref="AppConfigWebProxy.UserAgent"/>プロパティテストケース。
/// </summary>
/// <remarks>アプリ設定部分はアクセス権の関係上試験できず。</remarks>
[Test]
public void TestUserAgent()
{
- IWebProxy proxy = new AppDefaultWebProxy();
+ IWebProxy proxy = new AppConfigWebProxy();
////Settings.Default.UserAgent = String.Empty;
// 初期状態ではアプリ名を元に生成した値
//// String.Format(Settings.Default.DefaultUserAgent, ver.Major, ver.Minor),
//// proxy.UserAgent);
Assert.AreEqual(
- String.Format("WikipediaTranslationSupportTool/{0}.{1:D2}", ver.Major, ver.Minor),
+ String.Format("Translation Support for Wikipedia/{0}.{1:D2}", ver.Major, ver.Minor),
proxy.UserAgent);
- // アプリ設定時はアプリに格納された設定値
- ////Settings.Default.UserAgent = "test setting useragent";
- ////Assert.AreEqual("test setting useragent", proxy.UserAgent);
-
- // プロパティ設定時はそれが最優先
+ // プロパティ設定時はその値が返る
proxy.UserAgent = "test property useragent";
Assert.AreEqual("test property useragent", proxy.UserAgent);
// nullなら無効
proxy.UserAgent = null;
- ////Assert.AreEqual("test setting useragent", proxy.UserAgent);
Assert.IsNotEmpty(proxy.UserAgent);
+
+ // アプリ設定時はアプリに格納された設定値が最優先
+ ////Settings.Default.UserAgent = "test setting useragent";
+ ////Assert.AreEqual("test setting useragent", proxy.UserAgent);
}
/// <summary>
- /// Refererプロパティテストケース。
+ /// <see cref="AppConfigWebProxy.Referer"/>プロパティテストケース。
/// </summary>
/// <remarks>アプリ設定部分はアクセス権の関係上試験できず。</remarks>
[Test]
public void TestReferer()
{
- IWebProxy proxy = new AppDefaultWebProxy();
+ IWebProxy proxy = new AppConfigWebProxy();
////Settings.Default.Referer = String.Empty;
// 初期状態では空
Assert.IsEmpty(proxy.Referer);
- // アプリ設定時はアプリに格納された設定値
- ////Settings.Default.Referer = "test setting referer";
- ////Assert.AreEqual("test setting referer", proxy.Referer);
-
- // プロパティ設定時はそちらが優先
+ // プロパティ設定時はその値が返る
proxy.Referer = "test property referer";
Assert.AreEqual("test property referer", proxy.Referer);
- // 空でも有効
- proxy.Referer = String.Empty;
- Assert.IsEmpty(proxy.Referer);
-
- // nullなら無効
- ////proxy.Referer = null;
+ // アプリ設定時はアプリに格納された設定値
+ ////Settings.Default.Referer = "test setting referer";
////Assert.AreEqual("test setting referer", proxy.Referer);
}
#region インタフェース実装メソッドテストケース
/// <summary>
- /// GetStreamメソッドテストケース。
+ /// <see cref="AppConfigWebProxy.GetStream"/>メソッドテストケース。
/// </summary>
/// <remarks>内容的に難しいため、fileプロトコルのみ確認。</remarks>
[Test]
public void TestGetStream()
{
- IWebProxy proxy = new AppDefaultWebProxy();
+ IWebProxy proxy = new AppConfigWebProxy();
// テストファイルを読んで例外が発生しなければOKとする
UriBuilder b = new UriBuilder("file", String.Empty);
public void TestConstructorWebsiteTitleTextTimestamp()
{
DateTime t = DateTime.Now;
+ Uri uri = new Uri("http://wikipedia.example");
MediaWiki s = new MediaWiki(new Language("en"));
- MediaWikiPage page = new MediaWikiPage(s, "TestTitle", "TestText", t);
+ MediaWikiPage page = new MediaWikiPage(s, "TestTitle", "TestText", t, uri);
Assert.AreSame(s, page.Website);
Assert.AreEqual("TestTitle", page.Title);
Assert.AreEqual("TestText", page.Text);
Assert.AreEqual(t, page.Timestamp);
+ Assert.AreSame(uri, page.Uri);
}
/// <summary>
Assert.AreEqual("TestTitle", page.Title);
Assert.AreEqual("TestText", page.Text);
Assert.IsNull(page.Timestamp);
+ Assert.IsNull(page.Uri);
}
/// <summary>
Assert.AreEqual("TestTitle", page.Title);
Assert.IsNull(page.Text);
Assert.IsNull(page.Timestamp);
+ Assert.IsNull(page.Uri);
}
/// <summary>
using NUnit.Framework;
/// <summary>
- /// MediaWikiのテストクラスです。
+ /// <see cref="MediaWiki"/>のテストクラスです。
/// </summary>
[TestFixture]
- public class MediaWikiTest
+ class MediaWikiTest
{
#region 定数
/// </summary>
private static readonly string testDir = "Data\\MediaWiki";
+ /// <summary>
+ /// XMLインポート/エクスポートで用いるテストデータ。
+ /// </summary>
+ private static readonly string testXml = "<MediaWiki><Location>http://ja.wikipedia.org</Location>"
+ + "<Language Code=\"ja\"><Names /><Bracket /></Language>"
+ + "<MetaApi>_api.xml</MetaApi><ExportPath>/export/$1</ExportPath><Redirect>#飛ばす</Redirect>"
+ + "<TemplateNamespace>100</TemplateNamespace><CategoryNamespace>101</CategoryNamespace><FileNamespace>200</FileNamespace>"
+ + "<MagicWords><Variable>特別</Variable><Variable>マジックワード</Variable></MagicWords>"
+ + "<InterwikiPrefixs><Prefix>外部ウィキ</Prefix><Prefix>ニュース</Prefix></InterwikiPrefixs>"
+ + "<DocumentationTemplates><DocumentationTemplate DefaultPage=\"/サブページ\">Template:ドキュメント</DocumentationTemplate>"
+ + "<DocumentationTemplate DefaultPage=\"/サブページ\">テンプレート:Doc</DocumentationTemplate></DocumentationTemplates>"
+ + "<LinkInterwikiFormat>{{仮リンク|$1|$2|$3|label=$4}}</LinkInterwikiFormat>"
+ + "<LangFormat>{{Lang|$1|$2}}</LangFormat>"
+ + "<HasLanguagePage>True</HasLanguagePage></MediaWiki>";
+
#endregion
#region テスト支援メソッド
/// <summary>
- /// テスト用の値を設定したMediaWikiオブジェクトを返す。
+ /// テスト用の値を設定した<see cref="MediaWiki"/>オブジェクトを返す。
/// </summary>
/// <param name="language">言語コード。</param>
/// <returns>テスト用の値を設定したオブジェクト。</returns>
#region 設定ファイルに初期値を持つプロパティテストケース
/// <summary>
- /// MetaApiプロパティテストケース。
+ /// <see cref="MediaWiki.MetaApi"/>プロパティテストケース。
/// </summary>
[Test]
public void TestMetaApi()
}
/// <summary>
- /// ExportPathプロパティテストケース。
+ /// <see cref="MediaWiki.ExportPath"/>プロパティテストケース。
/// </summary>
[Test]
public void TestExportPath()
}
/// <summary>
- /// Redirectプロパティテストケース。
+ /// <see cref="MediaWiki.Redirect"/>プロパティテストケース。
/// </summary>
[Test]
public void TestRedirect()
}
/// <summary>
- /// TemplateNamespaceプロパティテストケース。
+ /// <see cref="MediaWiki.TemplateNamespace"/>プロパティテストケース。
/// </summary>
[Test]
public void TestTemplateNamespace()
}
/// <summary>
- /// CategoryNamespaceプロパティテストケース。
+ /// <see cref="MediaWiki.CategoryNamespace"/>プロパティテストケース。
/// </summary>
[Test]
public void TestCategoryNamespace()
}
/// <summary>
- /// FileNamespaceプロパティテストケース。
+ /// <see cref="MediaWiki.FileNamespace"/>プロパティテストケース。
/// </summary>
[Test]
public void TestFileNamespace()
}
/// <summary>
- /// MagicWordsプロパティテストケース。
+ /// <see cref="MediaWiki.MagicWords"/>プロパティテストケース。
/// </summary>
[Test]
public void TestMagicWords()
#region サーバーから値を取得するプロパティテストケース
/// <summary>
- /// Namespacesプロパティテストケース。
+ /// <see cref="MediaWiki.Namespaces"/>プロパティテストケース。
/// </summary>
[Test]
public void TestNamespaces()
}
/// <summary>
- /// InterwikiPrefixsプロパティテストケース。
+ /// <see cref="MediaWiki.InterwikiPrefixs"/>プロパティテストケース。
/// </summary>
[Test]
public void TestInterwikiPrefixs()
#region それ以外のプロパティテストケース
/// <summary>
- /// DocumentationTemplatesプロパティテストケース。
+ /// <see cref="MediaWiki.DocumentationTemplates"/>プロパティテストケース。
/// </summary>
[Test]
public void TestDocumentationTemplates()
Assert.IsNotNull(site.DocumentationTemplates);
Assert.AreEqual(0, site.DocumentationTemplates.Count);
- // 値を追加
- site.DocumentationTemplates.Add("Template:Documentation");
+ // 値を設定するとそのオブジェクトが返る
+ string[] templates = new string[] { "Template:Documentation" };
+ site.DocumentationTemplates = templates;
Assert.AreEqual(1, site.DocumentationTemplates.Count);
Assert.AreEqual("Template:Documentation", site.DocumentationTemplates[0]);
+ Assert.AreSame(templates, site.DocumentationTemplates);
+
+ // nullを設定すると初期化
+ site.DocumentationTemplates = null;
+ Assert.IsNotNull(site.DocumentationTemplates);
+ Assert.AreEqual(0, site.DocumentationTemplates.Count);
}
/// <summary>
- /// DocumentationTemplateDefaultPageプロパティテストケース。
+ /// <see cref="MediaWiki.DocumentationTemplateDefaultPage"/>プロパティテストケース。
/// </summary>
[Test]
public void TestDocumentationTemplateDefaultPage()
}
/// <summary>
- /// LinkInterwikiFormatプロパティテストケース。
+ /// <see cref="MediaWiki.LinkInterwikiFormat"/>プロパティテストケース。
/// </summary>
[Test]
public void TestLinkInterwikiFormat()
}
/// <summary>
- /// LangFormatプロパティテストケース。
+ /// <see cref="MediaWiki.LangFormat"/>プロパティテストケース。
/// </summary>
[Test]
public void TestLangFormat()
Assert.IsNullOrEmpty(site.LangFormat);
}
+ /// <summary>
+ /// <see cref="MediaWiki.HasLanguagePage"/>プロパティテストケース。
+ /// </summary>
+ [Test]
+ public void TestHasLanguagePage()
+ {
+ MediaWiki site = new MediaWiki(new Language("ja"));
+
+ // デフォルトではfalse
+ Assert.IsFalse(site.HasLanguagePage);
+
+ // 値を設定するとその値が返る
+ site.HasLanguagePage = true;
+ Assert.IsTrue(site.HasLanguagePage);
+ site.HasLanguagePage = false;
+ Assert.IsFalse(site.HasLanguagePage);
+ }
+
#endregion
#region 公開メソッドテストケース
/// <summary>
- /// GetPageメソッドテストケース。
+ /// <see cref="MediaWiki.GetPage"/>メソッドテストケース。
/// </summary>
[Test]
public void TestGetPage()
}
/// <summary>
- /// IsMagicWordメソッドテストケース。
+ /// <see cref="MediaWiki.IsMagicWord"/>メソッドテストケース。
/// </summary>
[Test]
public void TestIsMagicWord()
}
/// <summary>
- /// IsInterwikiメソッドテストケース。
+ /// <see cref="MediaWiki.IsInterwiki"/>メソッドテストケース。
/// </summary>
[Test]
public void TestIsInterwiki()
}
/// <summary>
- /// IsNamespaceメソッドテストケース。
+ /// <see cref="MediaWiki.IsNamespace"/>メソッドテストケース。
/// </summary>
[Test]
public void TestIsNamespace()
}
/// <summary>
- /// FormatLinkInterwikiメソッドテストケース。
+ /// <see cref="MediaWiki.FormatLinkInterwiki"/>メソッドテストケース。
/// </summary>
[Test]
public void TestFormatLinkInterwiki()
}
/// <summary>
- /// FormatLangメソッドテストケース。
+ /// <see cref="MediaWiki.FormatLang"/>メソッドテストケース。
/// </summary>
[Test]
public void TestFormatLang()
[Test]
public void TestReadXml()
{
+ // ほぼ空の状態での読み込み
MediaWiki site;
using (XmlReader r = XmlReader.Create(
new StringReader("<MediaWiki><Location>http://ja.wikipedia.org</Location>"
Assert.IsNotNull(site);
Assert.AreEqual("http://ja.wikipedia.org", site.Location);
Assert.AreEqual("ja", site.Language.Code);
+ Assert.AreEqual(0, site.DocumentationTemplates.Count);
+ Assert.IsNullOrEmpty(site.DocumentationTemplateDefaultPage);
+ Assert.IsNullOrEmpty(site.LinkInterwikiFormat);
+ Assert.IsNullOrEmpty(site.LangFormat);
+ Assert.IsFalse(site.HasLanguagePage);
+
+ // 下記プロパティは、空の場合デフォルト値が返る
+ // ※ Namespacesは空の場合サーバーからデフォルト値を取得するため、ここではテストしない
+ // ※ InterwikiPrefixsのgetは常にサーバーからも値を取得するため、ここではテストしない
+ Assert.AreEqual("/w/api.php?format=xml&action=query&meta=siteinfo&siprop=namespaces|namespacealiases|interwikimap", site.MetaApi);
+ Assert.AreEqual("/wiki/Special:Export/$1", site.ExportPath);
+ Assert.AreEqual("#REDIRECT", site.Redirect);
+ Assert.AreEqual(10, site.TemplateNamespace);
+ Assert.AreEqual(14, site.CategoryNamespace);
+ Assert.AreEqual(6, site.FileNamespace);
+ Assert.IsTrue(site.MagicWords.Count > 10);
- //// TODO: プロパティに値が設定されたパターンを追加すべき
- //// TODO: プロパティが空の場合、きちんとデフォルト値が参照されることも確認すべき
+ // プロパティに値が設定された状態での読み込み
+ using (XmlReader r = XmlReader.Create(new StringReader(testXml)))
+ {
+ site = new XmlSerializer(typeof(MediaWiki)).Deserialize(r) as MediaWiki;
+ }
+
+ // ※ InterwikiPrefixsのgetは常にサーバーからも値を取得するため、ここではテストしない
+ Assert.IsNotNull(site);
+ Assert.AreEqual("http://ja.wikipedia.org", site.Location);
+ Assert.AreEqual("ja", site.Language.Code);
+ Assert.AreEqual("_api.xml", site.MetaApi);
+ Assert.AreEqual("/export/$1", site.ExportPath);
+ Assert.AreEqual("#飛ばす", site.Redirect);
+ Assert.AreEqual(100, site.TemplateNamespace);
+ Assert.AreEqual(101, site.CategoryNamespace);
+ Assert.AreEqual(200, site.FileNamespace);
+ Assert.AreEqual(2, site.MagicWords.Count);
+ Assert.IsTrue(site.MagicWords.Contains("特別"));
+ Assert.IsTrue(site.MagicWords.Contains("マジックワード"));
+ Assert.AreEqual(2, site.DocumentationTemplates.Count);
+ Assert.IsTrue(site.DocumentationTemplates.Contains("Template:ドキュメント"));
+ Assert.IsTrue(site.DocumentationTemplates.Contains("テンプレート:Doc"));
+ Assert.AreEqual("/サブページ", site.DocumentationTemplateDefaultPage);
+ Assert.AreEqual("{{仮リンク|$1|$2|$3|label=$4}}", site.LinkInterwikiFormat);
+ Assert.AreEqual("{{Lang|$1|$2}}", site.LangFormat);
+ Assert.IsTrue(site.HasLanguagePage);
}
/// <summary>
[Test]
public void TestWriteXml()
{
- Language lang = new Language("ja");
- MediaWiki site = new MediaWiki(lang);
+ MediaWiki site = new MediaWiki(new Language("ja"));
+ StringBuilder b;
XmlWriterSettings settings = new XmlWriterSettings();
settings.OmitXmlDeclaration = true;
- StringBuilder b = new StringBuilder();
+ // ほぼ空の状態での出力
+ // 設定ファイルに初期値を持つプロパティはデフォルト値の場合出力しないという動作あり
+ b = new StringBuilder();
using (XmlWriter w = XmlWriter.Create(b, settings))
{
new XmlSerializer(typeof(MediaWiki)).Serialize(w, site);
}
- // プロパティはデフォルト値の場合出力しないという動作あり
- Assert.AreEqual("<MediaWiki><Location>http://ja.wikipedia.org</Location><Language Code=\"ja\"><Names /><Bracket /></Language><MetaApi /><ExportPath /><Redirect /><TemplateNamespace /><CategoryNamespace /><FileNamespace /><MagicWords /><InterwikiPrefixs /><DocumentationTemplates /><LinkInterwikiFormat /><LangFormat /></MediaWiki>", b.ToString());
+ Assert.AreEqual(
+ "<MediaWiki><Location>http://ja.wikipedia.org</Location><Language Code=\"ja\"><Names /><Bracket /></Language>"
+ + "<MetaApi /><ExportPath /><Redirect /><TemplateNamespace /><CategoryNamespace /><FileNamespace />"
+ + "<MagicWords /><InterwikiPrefixs /><DocumentationTemplates /><LinkInterwikiFormat /><LangFormat />"
+ + "<HasLanguagePage>False</HasLanguagePage></MediaWiki>",
+ b.ToString());
+
+ // プロパティに値が設定された場合の出力
+ site.MetaApi = "_api.xml";
+ site.ExportPath = "/export/$1";
+ site.Redirect = "#飛ばす";
+ site.TemplateNamespace = 100;
+ site.CategoryNamespace = 101;
+ site.FileNamespace = 200;
+ site.MagicWords = new HashSet<string>(new string[] { "特別", "マジックワード" });
+ site.InterwikiPrefixs = new IgnoreCaseSet(new string[] { "外部ウィキ", "ニュース" });
+ site.DocumentationTemplates = new string[] { "Template:ドキュメント", "テンプレート:Doc" };
+ site.DocumentationTemplateDefaultPage = "/サブページ";
+ site.LinkInterwikiFormat = "{{仮リンク|$1|$2|$3|label=$4}}";
+ site.LangFormat = "{{Lang|$1|$2}}";
+ site.HasLanguagePage = true;
+
+ b = new StringBuilder();
+ using (XmlWriter w = XmlWriter.Create(b, settings))
+ {
+ new XmlSerializer(typeof(MediaWiki)).Serialize(w, site);
+ }
- //// TODO: プロパティに値が設定されたパターンを追加すべき
+ Assert.AreEqual(testXml, b.ToString());
}
#endregion
using NUnit.Framework;
/// <summary>
- /// Pageのテストクラスです。
+ /// <see cref="Page"/>のテストクラスです。
/// </summary>
[TestFixture]
- public class PageTest
+ class PageTest
{
#region コンストラクタテストケース
{
DateTime t = DateTime.Now;
Website s = new DummySite();
- Page page = new Page(s, "TestTitle", "TestText", t);
+ Uri uri = new Uri("http://example.com/TestTitle");
+ Page page = new Page(s, "TestTitle", "TestText", t, uri);
Assert.AreEqual(s, page.Website);
Assert.AreEqual("TestTitle", page.Title);
Assert.AreEqual("TestText", page.Text);
Assert.AreEqual(t, page.Timestamp);
+ Assert.AreSame(uri, page.Uri);
}
/// <summary>
Assert.AreEqual("TestTitle", page.Title);
Assert.AreEqual("TestText", page.Text);
Assert.IsNull(page.Timestamp);
+ Assert.IsNull(page.Uri);
}
/// <summary>
Assert.AreEqual("TestTitle", page.Title);
Assert.IsNull(page.Text);
Assert.IsNull(page.Timestamp);
+ Assert.IsNull(page.Uri);
}
/// <summary>
#region プロパティ
/// <summary>
- /// Websiteプロパティテストケース(正常系)。
+ /// <see cref="Page.Website"/>プロパティテストケース(正常系)。
/// </summary>
[Test]
public void TestWebsite()
}
/// <summary>
- /// Websiteプロパティテストケース(null値)。
+ /// <see cref="Page.Website"/>プロパティテストケース(null値)。
/// </summary>
[Test]
[ExpectedException(typeof(ArgumentNullException))]
}
/// <summary>
- /// Titleプロパティテストケース(正常系)。
+ /// <see cref="Page.Title"/>プロパティテストケース(正常系)。
/// </summary>
[Test]
public void TestTitle()
}
/// <summary>
- /// Titleプロパティテストケース(null値)。
+ /// <see cref="Page.Title"/>プロパティテストケース(null値)。
/// </summary>
[Test]
[ExpectedException(typeof(ArgumentNullException))]
}
/// <summary>
- /// Titleプロパティテストケース(空)。
+ /// <see cref="Page.Title"/>プロパティテストケース(空)。
/// </summary>
[Test]
[ExpectedException(typeof(ArgumentException))]
}
/// <summary>
- /// Textプロパティテストケース。
+ /// <see cref="Page.Text"/>プロパティテストケース。
/// </summary>
[Test]
public void TestText()
}
/// <summary>
- /// Timestampプロパティテストケース。
+ /// <see cref="Page.Timestamp"/>プロパティテストケース。
/// </summary>
[Test]
public void TestTimestamp()
Assert.AreEqual(t, page.Timestamp);
}
+ /// <summary>
+ /// <see cref="Page.Uri"/>プロパティテストケース。
+ /// </summary>
+ [Test]
+ public void TestUri()
+ {
+ Page page = new Page(new DummySite(), "TestTitle");
+ PrivateAccessor<Page> acc = new PrivateAccessor<Page>(page);
+ Uri uri = new Uri("http://example.com/TestTitle");
+ acc.SetProperty("Uri", uri);
+ Assert.AreEqual(uri, page.Uri);
+ }
+
#endregion
#region モッククラス
/// <summary>
- /// Pageテスト用のモッククラスです。
+ /// <see cref="Page"/>テスト用のモッククラスです。
/// </summary>
- public class DummySite : Website
+ private class DummySite : Website
{
#region ダミーメソッド
/// <summary>
- /// ページを取得。
+ /// ページを取得。空実装。
/// </summary>
/// <param name="title">ページタイトル。</param>
- /// <returns>取得したページ。</returns>
- /// <remarks>取得できない場合(通信エラーなど)は例外を投げる。</remarks>
+ /// <returns><c>null</c>。</returns>
public override Page GetPage(string title)
{
return null;
namespace Honememo.Wptscs.Websites
{
using System;
- using System.IO;
- using System.Reflection;
- using System.Text;
- using System.Xml;
- using System.Xml.Serialization;
- using Honememo.Utilities;
using Honememo.Wptscs.Models;
+ using Honememo.Wptscs.Utilities;
using NUnit.Framework;
/// <summary>
- /// Websiteのテストクラスです。
+ /// <see cref="Website"/>のテストクラスです。
/// </summary>
[TestFixture]
- public class WebsiteTest
+ class WebsiteTest
{
#region プロパティテストケース
/// <summary>
- /// Locationプロパティテストケース。
+ /// <see cref="Website.Location"/>プロパティテストケース。
/// </summary>
[Test]
public void TestLocation()
}
/// <summary>
- /// Locationプロパティテストケース(null)。
+ /// <see cref="Website.Location"/>プロパティテストケース(null)。
/// </summary>
[Test]
[ExpectedException(typeof(ArgumentNullException))]
}
/// <summary>
- /// Locationプロパティテストケース(空)。
+ /// <see cref="Website.Location"/>プロパティテストケース(空)。
/// </summary>
[Test]
[ExpectedException(typeof(ArgumentException))]
}
/// <summary>
- /// Languageプロパティテストケース。
+ /// <see cref="Website.Language"/>プロパティテストケース。
/// </summary>
[Test]
public void TestLanguage()
}
/// <summary>
- /// Languageプロパティテストケース(null)。
+ /// <see cref="Website.Language"/>プロパティテストケース(null)。
/// </summary>
[Test]
[ExpectedException(typeof(ArgumentNullException))]
new DummySite().Language = null;
}
- #endregion
-
- #region メソッドテストケース
-
/// <summary>
- /// XMLデシリアライズテストケース。
+ /// <see cref="Website.WebProxy"/>プロパティテストケース。
/// </summary>
[Test]
- public void TestReadXml()
+ public void TestWebProxy()
{
- DummySite site;
- using (XmlReader r = XmlReader.Create(
- new StringReader("<DummySite><Location>http://ja.wikipedia.org</Location>"
- + "<Language Code=\"ja\"><Names /></Language></DummySite>")))
- {
- site = new XmlSerializer(typeof(DummySite)).Deserialize(r) as DummySite;
- }
+ DummySite site = new DummySite();
- Assert.IsNotNull(site);
- Assert.AreEqual("http://ja.wikipedia.org", site.Location);
- Assert.AreEqual("ja", site.Language.Code);
+ // デフォルトでオブジェクトが格納されている
+ Assert.IsNotNull(site.WebProxy);
+
+ // 値を設定するとそのオブジェクトが返る
+ IWebProxy proxy = new AppConfigWebProxy();
+ site.WebProxy = proxy;
+ Assert.AreSame(proxy, site.WebProxy);
}
/// <summary>
- /// XMLシリアライズテストケース。
+ /// <see cref="Website.WebProxy"/>プロパティテストケース(null)。
/// </summary>
[Test]
- public void TestWriteXml()
+ [ExpectedException(typeof(ArgumentNullException))]
+ public void TestWebProxyNull()
{
- Language lang = new Language("ja");
- DummySite site = new DummySite();
- site.Location = "http://ja.wikipedia.org";
- site.Language = lang;
- XmlWriterSettings settings = new XmlWriterSettings();
- settings.OmitXmlDeclaration = true;
-
- StringBuilder b = new StringBuilder();
- using (XmlWriter w = XmlWriter.Create(b, settings))
- {
- new XmlSerializer(typeof(DummySite)).Serialize(w, site);
- }
-
- Assert.AreEqual("<DummySite><Location>http://ja.wikipedia.org</Location><Language Code=\"ja\"><Names /><Bracket /></Language></DummySite>", b.ToString());
+ new DummySite().WebProxy = null;
}
#endregion
#region モッククラス
/// <summary>
- /// Websiteテスト用のモッククラスです。
+ /// <see cref="Website"/>テスト用のモッククラスです。
/// </summary>
- public class DummySite : Website, IXmlSerializable
+ private class DummySite : Website
{
- #region テスト用プロパティ
-
- /// <summary>
- /// ウェブサイトの場所。
- /// </summary>
- /// <remarks>動作確認はhttpとfileスキームのみ。</remarks>
- public new string Location
- {
- get
- {
- return base.Location;
- }
-
- set
- {
- base.Location = value;
- }
- }
-
+ #region 非公開プロパティテスト用のオーラーライドプロパティ
+
/// <summary>
/// ウェブサイトの言語。
/// </summary>
#region ダミーメソッド
/// <summary>
- /// ページを取得。
+ /// ページを取得。空実装。
/// </summary>
/// <param name="title">ページタイトル。</param>
- /// <returns>取得したページ。</returns>
- /// <remarks>取得できない場合(通信エラーなど)は例外を投げる。</remarks>
+ /// <returns><c>null</c>。</returns>
public override Page GetPage(string title)
{
return null;
}
#endregion
-
- #region テスト用XMLシリアライズ用メソッド
-
- /// <summary>
- /// シリアライズするXMLのスキーマ定義を返す。
- /// </summary>
- /// <returns>XML表現を記述するXmlSchema。</returns>
- public System.Xml.Schema.XmlSchema GetSchema()
- {
- return null;
- }
-
- /// <summary>
- /// XMLからオブジェクトをデシリアライズする。
- /// </summary>
- /// <param name="reader">デシリアライズ元のXmlReader</param>
- public void ReadXml(XmlReader reader)
- {
- XmlDocument xml = new XmlDocument();
- xml.Load(reader);
-
- // Webサイト
- // ※ 以下、基本的に無かったらNGの部分はいちいちチェックしない。例外飛ばす
- XmlElement siteElement = xml.SelectSingleNode("DummySite") as XmlElement;
- this.Location = siteElement.SelectSingleNode("Location").InnerText;
-
- using (XmlReader r = XmlReader.Create(
- new StringReader(siteElement.SelectSingleNode("Language").OuterXml), reader.Settings))
- {
- this.Language = new XmlSerializer(typeof(Language)).Deserialize(r) as Language;
- }
- }
-
- /// <summary>
- /// オブジェクトをXMLにシリアライズする。
- /// </summary>
- /// <param name="writer">シリアライズ先のXmlWriter</param>
- public void WriteXml(XmlWriter writer)
- {
- writer.WriteElementString("Location", this.Location);
- new XmlSerializer(typeof(Language)).Serialize(writer, this.Language);
- }
-
- #endregion
}
#endregion
<Compile Include="Websites\WebsiteTest.cs" />
<Compile Include="PrivateAccessor.cs" />
<Compile Include="Properties\AssemblyInfo.cs" />
- <Compile Include="Utilities\AppDefaultWebProxyTest.cs" />
+ <Compile Include="Utilities\AppConfigWebProxyTest.cs" />
<Compile Include="Utilities\FormUtilsTest.cs" />
</ItemGroup>
<ItemGroup>