1. Katsunori FUJIWARA
  2. mercurial-translation-ja

Commits

Katsunori FUJIWARA  committed f4db167 Merge

IMPORT: sync-line => downstream-line

  • Participants
  • Parent commits 38e5c16, 81ba19b
  • Branches downstream-line

Comments (0)

Files changed (3)

File .hgtags

View file
  • Ignore whitespace
 dc5ff4df76c216bf1673b63ab7a1f8393662a9eb official_2.2.3
 61eb4764b994d045a1029be2478555ce9c1df33c official_2.3
 a37cd0f5243b3c740c84d1a5f30d266e18f9a661 official_2.3.1
+bba9473ef5ac938fca0496dbe27461e4a1b12b6f official_2.3.2

File ja.po

View file
  • Ignore whitespace
 # schedule              (add/remove の)予約
 # search                探索
 # server                サーバ
-# source url (of subrepo) (副リポジトリの)参照先 URL
-# subrepo               副リポジトリ
+# source url (of subrepo) (サブリポジトリの)参照先 URL
+# subrepo               サブリポジトリ
 # summary               要約(情報)
 # support(, not)        (未)サポート
 # support(, un)         (未)サポート
 
 #, python-format
 msgid "uncommitted changes in subrepository %s"
-msgstr "リポジトリ %s の変更が未コミットです"
+msgstr "サブリポジトリ %s の変更が未コミットです"
 
 msgid "local changes found"
 msgstr "作業領域の内容は変更されています"
 "上記の設定により、 フックが登録されます。 メール通知を有効にするには、\n"
 "リポジトリ毎のメール送信先 (subscriber:購読者) 設定が必要です。\n"
 "``[usersubs]`` は単一購読者に複数のリポジトリを設定します。\n"
-"``[reposubs]`` は単一リポジトリに複数の購読者を設定します"
+"``[reposubs]`` は単一リポジトリに複数の購読者を設定します::"
 
 msgid ""
 "  [usersubs]\n"
 
 #, python-format
 msgid "adding remote bookmark %s\n"
-msgstr "連携先ブックマーク %s を追加中\n"
+msgstr "連携先での新規ブックマーク %s を追加中\n"
 
 msgid "searching for changed bookmarks\n"
 msgstr "変更されたブックマークを探索中\n"
 
 #, python-format
 msgid "uncommitted changes in subrepo %s"
-msgstr "リポジトリ %s の変更が未コミットです"
+msgstr "サブリポジトリ %s の変更が未コミットです"
 
 msgid "options --message and --logfile are mutually exclusive"
 msgstr "--message と --logfile は同時に指定できません"
 
 #, python-format
 msgid "skipping missing subrepository: %s\n"
-msgstr "存在しないリポジトリへの処理を省略: %s\n"
+msgstr "存在しないサブリポジトリへの処理を省略: %s\n"
 
 #, python-format
 msgid "amending changeset %s\n"
 
 #, python-format
 msgid "HG: subrepo %s"
-msgstr "HG: リポジトリ %s"
+msgstr "HG: サブリポジトリ %s"
 
 #, python-format
 msgid "HG: added %s"
 msgstr "ファイル改名推定の際の類似度(0 以上 100 以下)"
 
 msgid "recurse into subrepositories"
-msgstr "リポジトリへの再帰的適用"
+msgstr "サブリポジトリへの再帰的適用"
 
 msgid "[OPTION]... [FILE]..."
 msgstr "[OPTION]... [FILE]..."
 msgstr "ブランチヘッドのみ閉鎖できます"
 
 msgid "cannot amend recursively"
-msgstr "リポジトリを含む再帰的な改変はできません"
+msgstr "サブリポジトリを含む再帰的な改変はできません"
 
 msgid "cannot amend public changesets"
 msgstr "public フェーズのリビジョンは改変できません"
 msgid "runs the changeset discovery protocol in isolation"
 msgstr "リビジョン探索プロトコルの単独実行"
 
-#, fuzzy
 msgid "apply the filespec on this revision"
-msgstr "指定リビジョンにおける更新ファイルの一覧"
-
-#, fuzzy
+msgstr "指定リビジョンに対する fileset 記述の適用"
+
 msgid "[-r REV] FILESPEC"
-msgstr "[-r REV] FILE"
+msgstr "[-r REV] FILESPEC"
 
 msgid "parse and apply a fileset specification"
-msgstr "fileset 仕様の解釈および適用"
+msgstr "fileset 記述の解釈および適用"
 
 msgid "[PATH]"
 msgstr "[PATH]"
 msgid " (check that your locale is properly set)\n"
 msgstr " (ロケール設定の妥当性を確認してください)\n"
 
-#, fuzzy, python-format
+#, python-format
 msgid "checking Python lib (%s)...\n"
-msgstr "文字コードの検証中 (%s)...\n"
+msgstr "Python ライブラリの検証中 (%s)...\n"
 
 #, python-format
 msgid "checking installed modules (%s)...\n"
 msgstr "ブックマークの比較"
 
 msgid "a specific branch you would like to pull"
-msgstr "取り込み対象ブランチ"
+msgstr "取り込み対象の名前付きブランチ"
 
 msgid "[-p] [-n] [-M] [-f] [-r REV]... [--bundle FILENAME] [SOURCE]"
 msgstr "[-p] [-n] [-M] [-f] [-r REV]... [--bundle FILENAME] [SOURCE]"
 msgstr "反映対象とするリビジョン"
 
 msgid "a specific branch you would like to push"
-msgstr "反映対象とするブランチ"
+msgstr "反映対象とする名前付きブランチ"
 
 msgid "[-M] [-p] [-n] [-f] [-r REV]... [DEST]"
 msgstr "[-M] [-p] [-n] [-f] [-r REV]... [DEST]"
 
 #, python-format
 msgid "%d modified"
-msgstr "変更ファイル数     %d"
+msgstr "変更ファイル数 %d"
 
 #, python-format
 msgid "%d added"
-msgstr "追加ファイル数     %d"
+msgstr "追加ファイル数 %d"
 
 #, python-format
 msgid "%d removed"
-msgstr "削除ファイル数     %d"
+msgstr "削除ファイル数 %d"
 
 #, python-format
 msgid "%d renamed"
-msgstr "改名ファイル数     %d"
+msgstr "改名ファイル数 %d"
 
 #, python-format
 msgid "%d copied"
-msgstr "複製ファイル数     %d"
+msgstr "複製ファイル数 %d"
 
 #, python-format
 msgid "%d deleted"
-msgstr "不在ファイル数     %d"
+msgstr "不在ファイル数 %d"
 
 #, python-format
 msgid "%d unknown"
-msgstr "未知ファイル       %d"
+msgstr "未知ファイル %d"
 
 #, python-format
 msgid "%d ignored"
-msgstr "無視ファイル数     %d"
+msgstr "無視ファイル数 %d"
 
 #, python-format
 msgid "%d unresolved"
-msgstr "衝突未解消ファイル %d"
+msgstr "衝突未解消ファイル %d"
 
 #, python-format
 msgid "%d subrepos"
-msgstr "リポジトリ数     %d"
+msgstr "サブリポジトリ数 %d"
 
 msgid " (merge)"
 msgstr " (マージ)"
 "    Subrepositories whose paths match the given pattern."
 msgstr ""
 "``subrepo([pattern])``\n"
-"    パターンに合致するパスに位置するリポジトリ。"
+"    パターンに合致するパスに位置するサブリポジトリ。"
 
 #. i18n: "subrepo" is a keyword
 msgid "subrepo takes at most one argument"
 msgstr "拡張機能(エクステンション)の使用"
 
 msgid "Subrepositories"
-msgstr "リポジトリ"
+msgstr "サブリポジトリ"
 
 msgid "Configuring hgweb"
 msgstr "hgweb 設定ファイル"
 "or becomes temporarily unavailable. This section lets you define\n"
 "rewrite rules of the form::"
 msgstr ""
-"連携先ホストの名称変更や一時的な停止などで、 リポジトリ参照先 URL が、\n"
+"連携先ホストの名称変更や一時的な停止などで、 サブリポジトリ参照先 URL が、\n"
 "無効になる場合があります。 本セクションでは、 参照先 URL の書き換えを、\n"
 "以下の形式で記述できます::"
 
 "rewrite it. Groups can be matched in ``pattern`` and referenced in\n"
 "``replacements``. For instance::"
 msgstr ""
-"``パターン`` にはリポジトリの参照先 URL に合致する正規表現を、\n"
+"``パターン`` にはサブリポジトリの参照先 URL に合致する正規表現を、\n"
 "``置換結果`` には参照先 URL の書き換え結果を記述します。\n"
 "``パターン`` でのグループ表記への合致は、``置換結果`` で参照可能です。\n"
 "記述例を以下に示します::"
 "rewrite rules are then applied on the full (absolute) path. The rules\n"
 "are applied in definition order."
 msgstr ""
-"副リポジトリの参照先 URL が相対パスの場合、 書き換えの``パターン``は、\n"
+"サブリポジトリの参照先 URL が相対パスの場合、 書き換えの``パターン``は、\n"
 "参照先 URL を絶対パス化した後で、 絶対パス全体に適用されます。\n"
 "書き換えの適用は、 記述順に実施されます。"
 
 "    Default is False."
 msgstr ""
 "``commitsubrepos``\n"
-"    親リポジトリのコミットにおける、 副リポジトリ変更のコミットの要否。\n"
-"    False の場合に、 変更が未コミットな副リポジトリがあれば、\n"
+"    親リポジトリのコミットにおける、 サブリポジトリ変更のコミットの要否。\n"
+"    False の場合に、 変更が未コミットなサブリポジトリがあれば、\n"
 "    コミット処理は中断されます。 デフォルト値: False"
 
 msgid ""
 "の場合、 指定のパス位置から、 リポジトリの検出が、 再帰的に実施されます。\n"
 "パスの末尾が ``*`` の場合、 検出されたリポジトリ配下の再帰的検出は、\n"
 "実施されません (``.hg/patches`` 配下を除く)。 パス末尾が ``**`` の場合、\n"
-"副リポジトリのような、 作業領域中のリポジトリも、 再帰的に検出されます。"
+"サブリポジトリのような、 作業領域中のリポジトリも、 再帰的に検出されます。"
 
 msgid "In this example::"
 msgstr "以下の設定例の場合::"
 msgstr ""
 "未完の作業を共有するために、 リビジョンのフェーズを draft のままで\n"
 "push/pull したい場合もあるでしょう。 publishing を無効化するには、\n"
-"サーバ側で以下の設定を行ってください"
+"サーバ側で以下の設定を行ってください::"
 
 msgid ""
 "  [phases]\n"
 "parent Mercurial repository, and make commands operate on them as a\n"
 "group."
 msgstr ""
-"副リポジトリ (sub repository) 機能は、 Mercurial リポジトリを親に、\n"
+"サブリポジトリ (subrepository) 機能は、 Mercurial リポジトリを親に、\n"
 "外部のリポジトリやプロジェクトを入れ子にし、 コマンドの実行の際に、\n"
 "それら一連のリポジトリに対して処理を行えるようにします。"
 
 "Mercurial currently supports Mercurial, Git, and Subversion\n"
 "subrepositories."
 msgstr ""
-"現時点でリポジトリとして使用できるのは、Mercurial Git Subversion\n"
+"現時点でサブリポジトリとして使用できるのは、Mercurial Git Subversion\n"
 "のリポジトリです。"
 
 msgid "Subrepositories are made of three components:"
-msgstr "リポジトリは、 3つの要素から構成されます:"
+msgstr "サブリポジトリは、 3つの要素から構成されます:"
 
 msgid ""
 "1. Nested repository checkouts. They can appear anywhere in the\n"
 "1. 入れ子リポジトリの作業領域。 親リポジトリの作業領域中の、\n"
 "   任意の場所に配置可能です。"
 
-#, fuzzy
 msgid ""
 "2. Nested repository references. They are defined in ``.hgsub``, which\n"
 "   should be placed in the root of working directory, and\n"
 "   subrepositories are referenced like::"
 msgstr ""
 "2. 入れ子リポジトリへの参照。 親リポジトリの作業領域ルート直下に配置した\n"
-"   ``.hgsub`` において、 副リポジトリの参照先を記述します。 Mercurial\n"
-"   の副リポジトリの参照先は、 以下のように記述します:"
+"   ``.hgsub`` において、 サブリポジトリの参照先を記述します。 Mercurial\n"
+"   のサブリポジトリの参照先は、 以下のように記述します::"
 
 msgid "     path/to/nested = https://example.com/nested/repo/path"
 msgstr "     入れ子/作業領域/パス = https://example.com/nested/repo/path"
 
-#, fuzzy
 msgid "   Git and Subversion subrepos are also supported::"
-msgstr "   Git や Subversion もリポジトリとして利用可能です:"
+msgstr "   Git や Subversion もサブリポジトリとして利用可能です::"
 
 msgid ""
 "     path/to/nested = [git]git://example.com/nested/repo/path\n"
 "   filesystem path."
 msgstr ""
 "   ``入れ子/作業領域/パス`` は、 親リポジトリの作業領域ルートに対する、\n"
-"   リポジトリ作業領域の相対パス、\n"
+"   サブリポジトリ作業領域の相対パス、\n"
 "   ``https://example.com/nested/repo/path`` は、\n"
-"   リポジトリの連携先情報です。 連携先には、\n"
+"   サブリポジトリの連携先情報です。 連携先には、\n"
 "   ローカルファイルシステム上のパスも記述可能です。"
 
 msgid ""
 "   repository before using subrepositories."
 msgstr ""
 "   Mercurial リポジトリは、 ``.hgsub`` を自動的には生成しませんので、\n"
-"   リポジトリを使用する際には、 手動で ``.hgsub`` を生成し、\n"
+"   サブリポジトリを使用する際には、 手動で ``.hgsub`` を生成し、\n"
 "   親リポジトリにおいて、 履歴管理対象に追加する必要があります。"
 
 msgid ""
 msgstr ""
 "3. 入れ子リポジトリの状態情報。 親リポジトリのルート直下に配置された\n"
 "   ``.hgsubstate`` において、 親リポジトリでのコミット時点における、\n"
-"   リポジトリの状態を復旧するために、 必要な情報が格納されます。\n"
+"   サブリポジトリの状態を復旧するために、 必要な情報が格納されます。\n"
 "   このファイルの生成は、 親リポジトリでのコミットの際に、 Mercurial\n"
 "   によって自動的に実施されます。"
 
 "======================"
 msgstr ""
 "\n"
-"副リポジトリの追加\n"
-"=================="
+"サブリポジトリの追加\n"
+"===================="
 
 msgid ""
 "If ``.hgsub`` does not exist, create it and add it to the parent\n"
 "履歴管理対象に登録してください。 親リポジトリの作業領域中の任意の場所に、\n"
 "外部リポジトリを元に、 作業領域を生成 (checkout) してください。\n"
 "追加対象の外部リポジトリのためのエントリを ``.hgsub`` に追加してください。\n"
-"これ以後、 このリポジトリは構成管理対象となり、 次回のコミットにおいて、\n"
+"これ以後、 このサブリポジトリは管理対象となり、 次回のコミットにおいて、\n"
 "``.hgsubstate`` に状態が記録され、 親リポジトリのリビジョンに対して、\n"
-"対応付けが行われます。 (※ 訳注: 副リポジトリに関する「構成管理」は、\n"
-"あくまで 「親リポジトリの各リビジョンが、 副リポジトリのどのリビジョンと、\n"
+"対応付けが行われます。 (※ 訳注: サブリポジトリに関する「構成管理」は、\n"
+"あくまで 「親リポジトリの各リビジョンが、 サブリポジトリの各リビジョンと、\n"
 "どう対応するのか?」 という対応付け情報のみです)"
 
 msgid ""
 "Synchronizing a Subrepository\n"
 "============================="
 msgstr ""
-"副リポジトリの同期\n"
-"=================="
+"サブリポジトリの同期\n"
+"===================="
 
 msgid ""
 "Subrepos do not automatically track the latest changeset of their\n"
 "developers always get a consistent set of compatible code and\n"
 "libraries when they update."
 msgstr ""
-"構成管理下にあるリポジトリの作業領域は、 最新状態への自動的な追従が、\n"
+"構成管理下にあるサブリポジトリの作業領域は、 最新状態への自動的な追従が、\n"
 "行われなくなります。 その代わり、 親リポジトリのリビジョンにおいて、\n"
 "関連付けが記録されたリビジョンの内容で更新されるようになります。\n"
 "この挙動により、 親リポジトリ側と一貫性のある状態が維持できます"
 "subrepo at the desired revision, test in the top-level repo, then\n"
 "commit in the parent repository to record the new combination."
 msgstr ""
-"そのため、 副リポジトリの作業領域は、 手動で更新する必要があります。\n"
-"各副リポジトリの作業領域を、 希望するリビジョンで更新したならば、\n"
+"そのため、 サブリポジトリの作業領域は、 手動で更新する必要があります。\n"
+"各サブリポジトリの作業領域を、 希望するリビジョンで更新したならば、\n"
 "親リポジトリにおいて (適宜テストを実施した上で) コミットを実施することで、\n"
 "新たなリビジョンの組み合わせが記録されます。"
 
 "Deleting a Subrepository\n"
 "========================"
 msgstr ""
-"副リポジトリの削除\n"
-"=================="
+"サブリポジトリの削除\n"
+"===================="
 
 msgid ""
 "To remove a subrepository from the parent repository, delete its\n"
 "reference from ``.hgsub``, then remove its files."
 msgstr ""
-"親リポジトリから副リポジトリを削除する場合、 対応するエントリを ``.hgsub``\n"
-"から削除した上で、 関連するファイルを削除してください。"
+"親リポジトリからサブリポジトリを削除する場合、 対応するエントリを\n"
+"``.hgsub`` から削除した上で、 関連するファイルを削除してください。"
 
 msgid ""
 "Interaction with Mercurial Commands\n"
 msgstr ""
 ":add: -S/--subrepos 指定が無い限り、 構成管理対象へのファイル登録は、\n"
 "    再帰的には実施されません。 但し、 -S/--subrepos 指定が無くても、\n"
-"    副リポジトリ中のファイルへのパスが、 直接指定された場合は、\n"
-"    対象ファイルを構成管理対象として登録します。 なお、 副リポジトリが\n"
+"    サブリポジトリ中のファイルへのパスが、 直接指定された場合は、\n"
+"    対象ファイルを構成管理対象として登録します。 なお、 サブリポジトリが\n"
 "    Git ないし Subversion 形式の場合、 現状では、 何の表示も無しに、\n"
 "    登録要求を無視します。"
 
 "    longer any modified subrepositories, it records their state and\n"
 "    finally commits it in the parent repository."
 msgstr ""
-":commit: コミットの実施により、 親リポジトリと配下のリポジトリに関する、\n"
+":commit: コミットの実施により、 親リポジトリと配下のサブリポジトリ間の、\n"
 "    整合性の取れた対応関係が、 (親リポジトリ側に) 記録されます。\n"
-"    未コミット改変を持つリポジトリは、 コミット動作を中断させます。\n"
+"    未コミット改変を持つサブリポジトリは、 コミット動作を中断させます。\n"
 "    -S/--subrepos を指定するか、 設定ファイル記述 (:hg:`help config` 参照)\n"
 "    での \"ui.commitsubrepos=True\" 設定により、 コミット実施の際に、\n"
-"    副リポジトリ中の未コミット変更が、 再帰的にコミットされます。\n"
-"    全ての副リポジトリから、 未コミット改変が無くなった後で、\n"
-"    各副リポジトリの状態記録が、 親リポジトリにおいてコミットされます。"
+"    サブリポジトリ中の未コミット変更が、 再帰的にコミットされます。\n"
+"    全てのサブリポジトリから、 未コミット改変が無くなった後で、\n"
+"    各サブリポジトリの状態記録が、 親リポジトリにおいてコミットされます。"
 
 msgid ""
 ":diff: diff does not recurse in subrepos unless -S/--subrepos is\n"
 msgstr ""
 ":diff: -S/--subrepos 指定が無い限り、 差分表示は、 \n"
 "    再帰的には実施されません。\n"
-"    副リポジトリ中のファイルの差分表示は、 通常の差分表示と同じ形式です。\n"
-"    なお、 副リポジトリが Git ないし Subversion 形式の場合、 現状では、\n"
+"    サブリポジトリのファイルの差分表示は、 通常の差分表示形式と同じです。\n"
+"    なお、 サブリポジトリが Git ないし Subversion 形式の場合、 現状では、\n"
 "    何の表示も無しに、 差分表示要求を無視します。"
 
 msgid ""
 ":forget: forget currently only handles exact file matches in subrepos.\n"
 "    Git and Subversion subrepositories are currently silently ignored."
 msgstr ""
-":forget: 現状では、 副リポジトリ中のパス (ファイルないしディレクトリ)\n"
-"    が指定された場合に限り、 副リポジトリ中のファイルに対して、\n"
-"    登録除外操作が実施されます。なお、 副リポジトリが Git ないし\n"
+":forget: 現状では、 サブリポジトリ中のパス (ファイルないしディレクトリ)\n"
+"    が指定された場合に限り、 サブリポジトリ中のファイルに対して、\n"
+"    登録除外操作が実施されます。なお、 サブリポジトリが Git ないし\n"
 "    Subversion 形式の場合、 現状では、 何の表示も無しに、\n"
 "    登録除外要求を無視します。"
 
 "    silently ignored."
 msgstr ""
 ":incoming: -S/--subrepos 指定が無い限り、 取り込みリビジョンの確認は、\n"
-"    再帰的には実施されません。 なお、 リポジトリが Git ないし\n"
+"    再帰的には実施されません。 なお、 サブリポジトリが Git ないし\n"
 "    Subversion 形式の場合、 現状では、 何の表示も無しに、\n"
 "    取り込みリビジョンの確認要求を無視します。"
 
 "    silently ignored."
 msgstr ""
 ":outgoing: -S/--subrepos 指定が無い限り、 反映予定リビジョンの確認は、\n"
-"    再帰的には実施されません。 なお、 リポジトリが Git ないし\n"
+"    再帰的には実施されません。 なお、 サブリポジトリが Git ないし\n"
 "    Subversion 形式の場合、 現状では、 何の表示も無しに、\n"
 "    反映予定リビジョンの確認要求を無視します。"
 
 msgstr ""
 ":pull: リビジョン取り込みが再帰的に実施されないのは、 :hg:`update`\n"
 "    に先立つ取り込みリビジョンの取捨選択が、 自明ではないためです。\n"
-"    参照中の全リポジトリにおいて、 全ての変更を取り込むのは、\n"
+"    参照中の全サブリポジトリにおいて、 全ての変更を取り込むのは、\n"
 "    非常に高コストですし、 Subversion 形式の場合は実行自体が不可能です。"
 
 msgid ""
 "    subrepository changes are available when referenced by top-level\n"
 "    repositories.  Push is a no-op for Subversion subrepositories."
 msgstr ""
-":push: 親リポジトリでの履歴反映の際には、 まずは全副リポジトリにおいて、\n"
+":push: 親リポジトリでの履歴反映の際には、 まずはサブリポジトリにおいて、\n"
 "    履歴反映が自動的に実施されます。 これは、 親リポジトリが参照する、\n"
-"    リポジトリのリビジョンを、 広く参照可能とするためです。\n"
+"    サブリポジトリのリビジョンを、 広く参照可能とするためです。\n"
 "    なお、 Subversion 形式の場合は、 履歴反映操作は何も行いません。"
 
 msgid ""
 msgstr ""
 ":status: -S/--subrepos 指定が無い限り、 状態表示は、\n"
 "    再帰的には実施されません。\n"
-"    副リポジトリ中のファイルの状態表示は、 通常の状態表示と同じ形式です。\n"
-"    なお、 副リポジトリが Subversion 形式の場合、 現状では、\n"
+"    サブリポジトリのファイルの状態表示は、 通常の状態表示と同じ形式です。\n"
+"    なお、 サブリポジトリが Subversion 形式の場合、 現状では、\n"
 "    何の表示も無しに、 状態表示要求を無視します。"
 
 msgid ""
 "    will pull it in first before updating.  This means that updating\n"
 "    can require network access when using subrepositories."
 msgstr ""
-":update: 作業領域更新により、 副リポジトリでは、 指定リビジョンにおける、\n"
-"    コミット時点の状態が復元されます。 副リポジトリにおいて、\n"
+":update: 作業領域更新により、 サブリポジトリは、 指定リビジョンにおける、\n"
+"    コミット時点の状態が復元されます。 サブリポジトリにおいて、\n"
 "    復元対象リビジョンが利用不可能な場合、 作業領域更新に先立って、\n"
 "    対象リビジョンの取り込みが実施されます。 (※ 訳注: Subversion 形式は、\n"
 "    履歴情報がサーバ側にあるため、 常に対象リビジョンの取り込みが必要)\n"
-"    この挙動は、 リポジトリ利用によって、 作業領域更新の際に、\n"
+"    この挙動は、 サブリポジトリ利用によって、 作業領域更新の際に、\n"
 "    ネットワーク接続が必要となる可能性があることを意味します。"
 
 msgid ""
 "Remapping Subrepositories Sources\n"
 "================================="
 msgstr ""
-"副リポジトリ連携先の書き換え\n"
-"============================"
+"サブリポジトリ連携先の書き換え\n"
+"=============================="
 
 msgid ""
 "A subrepository source location may change during a project life,\n"
 "file or in Mercurial configuration. See the ``[subpaths]`` section in\n"
 "hgrc(5) for more details."
 msgstr ""
-"親リポジトリの利用期間中に、 リポジトリの連携先が変更された場合、\n"
+"親リポジトリの利用期間中に、 サブリポジトリの連携先が変更された場合、\n"
 "変更前に親リポジトリで記録されたリビジョンが持つ連携先情報は、\n"
 "無効となってしまいます。 親リポジトリの ``hgrc`` ファイルないし Mercurial\n"
 "の設定ファイルにおいて、 連携先情報の書き換えルールを定義することで、\n"
 
 #, python-format
 msgid "commit with new subrepo %s excluded"
-msgstr "コミット対象に、新規リポジトリ %s が含まれていません"
+msgstr "コミット対象に、新規サブリポジトリ %s が含まれていません"
 
 msgid "use --subrepos for recursive commit"
 msgstr "--subrepos 指定で再帰コミット"
 
 msgid "can't commit subrepos without .hgsub"
-msgstr ".hgsub の無いリポジトリはコミットできません"
+msgstr ".hgsub の無いサブリポジトリはコミットできません"
 
 msgid "file not found!"
 msgstr "ファイルが見つかりません!"
 
 #, python-format
 msgid "committing subrepository %s\n"
-msgstr "リポジトリ %s でのコミット中\n"
+msgstr "サブリポジトリ %s でのコミット中\n"
 
 #, python-format
 msgid "note: commit message saved in %s\n"
 
 #, python-format
 msgid "outstanding uncommitted changes in subrepository '%s'"
-msgstr "リポジトリ %s の変更が未コミットです"
+msgstr "サブリポジトリ %s の変更が未コミットです"
 
 msgid "crosses branches (merge branches or use --clean to discard changes)"
 msgstr ""
 
 #, python-format
 msgid "warning: subrepo spec file %s not found\n"
-msgstr "警告: リポジトリの spec ファイル %s が見つかりません\n"
+msgstr "警告: サブリポジトリの spec ファイル %s が見つかりません\n"
 
 #, python-format
 msgid "subrepo spec file %s not found"
-msgstr "リポジトリの spec ファイル %s が見つかりません"
+msgstr "サブリポジトリの spec ファイル %s が見つかりません"
 
 #, python-format
 msgid "invalid subrepository revision specifier in .hgsubstate line %d"
-msgstr ".hgsubstate の %d 行目におけるリポジトリのリビジョン指定が不正です"
+msgstr ".hgsubstate の %d 行目におけるサブリポジトリのリビジョン指定が不正です"
 
 #, python-format
 msgid "bad subrepository pattern in %s: %s"
-msgstr "%s におけるリポジトリ指定の不正: %s"
+msgstr "%s におけるサブリポジトリ指定の不正: %s"
 
 msgid "missing ] in subrepo source"
-msgstr "リポジトリ元指定に ] がありません"
+msgstr "サブリポジトリ元指定に ] がありません"
 
 #, python-format
 msgid ""
 " subrepository sources for %s differ\n"
 "use (l)ocal source (%s) or (r)emote source (%s)?"
 msgstr ""
-" リポジトリ %s で差分が検出されました\n"
+" サブリポジトリ %s で差分が検出されました\n"
 "どちらを採用しますか? 手元(%s):(l)ocal 連携先(%s):(r)emote"
 
 msgid "&Remote"
 " local changed subrepository %s which remote removed\n"
 "use (c)hanged version or (d)elete?"
 msgstr ""
-"副リポジトリで変更したファイル %s は、 連携先では登録除外されています\n"
+"サブリポジトリで変更したファイル %s は、 連携先では登録除外されています\n"
 "どちらを採用しますか? 変更:(c)hange 登録除外:(d)elete"
 
 #, python-format
 " remote changed subrepository %s which local removed\n"
 "use (c)hanged version or (d)elete?"
 msgstr ""
-"副リポジトリで登録除外されたファイル %s は、 連携先では変更されています\n"
+"サブリポジトリで登録除外されたファイル %s は、 連携先では変更されています\n"
 "どちらを採用しますか? 変更:(c)hange 登録除外:(d)elete"
 
 #, python-format
 " subrepository sources for %s differ\n"
 "use (l)ocal source (%s) or (r)emote source (%s)?\n"
 msgstr ""
-" リポジトリ %s の作業領域で差分が検出されました\n"
+" サブリポジトリ %s の作業領域で差分が検出されました\n"
 "どちらを採用しますか? 手元(%s):(l)ocal 連携先(%s):(r)emote\n"
 
 #, python-format
 " subrepository sources for %s differ (in checked out version)\n"
 "use (l)ocal source (%s) or (r)emote source (%s)?\n"
 msgstr ""
-" リポジトリ %s のリビジョンに差分が検出されました\n"
+" サブリポジトリ %s のリビジョンに差分が検出されました\n"
 "どちらを採用しますか? 手元(%s):(l)ocal 連携先(%s):(r)emote\n"
 
 #, python-format
 msgid "default path for subrepository %s not found"
-msgstr "リポジトリ %s の が見つかりません"
+msgstr "サブリポジトリ %s の が見つかりません"
 
 #, python-format
 msgid "unknown subrepo type %s"
-msgstr "未知のリポジトリ種別 '%s'"
+msgstr "未知のサブリポジトリ種別 '%s'"
 
 #, python-format
 msgid "archiving (%s)"
 
 #, python-format
 msgid "warning: error \"%s\" in subrepository \"%s\"\n"
-msgstr "警告: エラー \"%s\" がリポジトリ \"%s\" で発生\n"
+msgstr "警告: エラー \"%s\" がサブリポジトリ \"%s\" で発生\n"
 
 #, python-format
 msgid "removing subrepo %s\n"
-msgstr "リポジトリの %s を登録除外中\n"
+msgstr "サブリポジトリの %s を登録除外中\n"
 
 #, python-format
 msgid "cloning subrepo %s from %s\n"
-msgstr "リポジトリ %s に %s から複製中\n"
+msgstr "サブリポジトリ %s に %s から複製中\n"
 
 #, python-format
 msgid "pulling subrepo %s from %s\n"
-msgstr "リポジトリ %s に %s から取り込み中\n"
+msgstr "サブリポジトリ %s に %s から取り込み中\n"
 
 #, python-format
 msgid "pushing subrepo %s to %s\n"
-msgstr "リポジトリ %s から %s へ反映中\n"
+msgstr "サブリポジトリ %s から %s へ反映中\n"
 
 #, python-format
 msgid "reverting subrepo %s\n"
-msgstr "リポジトリ %s の変更取り消し中\n"
+msgstr "サブリポジトリ %s の変更取り消し中\n"
 
 #, python-format
 msgid "'svn' executable not found for subrepo '%s'"
-msgstr "リポジトリ '%s' に使用する 'svn' コマンドが見つかりません"
+msgstr "サブリポジトリ '%s' に使用する 'svn' コマンドが見つかりません"
 
 msgid "cannot retrieve svn tool version"
 msgstr "svn ツールのバージョンが取得できません"
 msgstr "git のバージョン情報が取得できません"
 
 msgid "git subrepo requires at least 1.6.0 or later"
-msgstr "リポジトリ利用には 1.6.0 以降の git が必要です"
+msgstr "サブリポジトリ利用には 1.6.0 以降の git が必要です"
 
 #, python-format
 msgid "revision %s does not exist in subrepo %s\n"
-msgstr "リビジョン %s はリポジトリ %s には存在しません\n"
+msgstr "リビジョン %s はサブリポジトリ %s には存在しません\n"
 
 #, python-format
 msgid "checking out detached HEAD in subrepo %s\n"
-msgstr "リポジトリ %s において、切り離された HEAD が取り出されました。\n"
+msgstr "サブリポジトリ %s において、切り離された HEAD が取り出されました。\n"
 
 msgid "check out a git branch if you intend to make changes\n"
 msgstr "変更を実施するなら、 git ブランチを取り出してください。\n"
 
 #, python-format
 msgid "subrepo %s is missing"
-msgstr "リポジトリ %s が見つかりません"
+msgstr "サブリポジトリ %s が見つかりません"
 
 #, python-format
 msgid "unrelated git branch checked out in subrepo %s\n"
-msgstr "リポジトリ %s は、 無関係な git ブランチで更新されています\n"
+msgstr "サブリポジトリ %s は、 無関係な git ブランチで更新されています\n"
 
 #, python-format
 msgid "pushing branch %s of subrepo %s\n"
-msgstr "ブランチ %s をリポジトリ %s から反映中\n"
+msgstr "ブランチ %s をサブリポジトリ %s から反映中\n"
 
 #, python-format
 msgid ""
 "no branch checked out in subrepo %s\n"
 "cannot push revision %s\n"
 msgstr ""
-"副リポジトリ %s にブランチが取り出されていません。\n"
+"サブリポジトリ %s にブランチが取り出されていません。\n"
 "リビジョン %s を反映できません。\n"
 
 #, python-format

File pickup.py

View file
  • Ignore whitespace
 #!/usr/bin/env python
 
-import sys
-
 ####################
 
 lineno = 0
 
-# 0      1       2       3              4      5
-# msgid, msgstr, lineno, filesname map, fuzzy, wrapped lineno
-infostock = ['', '', 0, {}, False, []]
-
 ####################
 
 def undefined_state(value):
         state = skip_msgstr
 
 def skip_msgid(value):
-    pass
+    infostock[0] += value
 
 def skip_msgstr(value):
     if not infostock[1].endswith('\\n'):
         infostock[5].append(lineno - 1)
-    infostock[1] = value
+    infostock[1] += value
 
-state = undefined_state
+infostock = None
+state = None
+
+def clear_status():
+    global infostock, state
+    # 0      1       2       3              4      5
+    # msgid, msgstr, lineno, filesname map, fuzzy, wrapped lineno
+    infostock = ['', '', 0, {}, False, []]
+    state = undefined_state
 
 ####################
 
 
 ####################
 
-if 2 < len(sys.argv):
-    expecteds = sys.argv[2:]
+def check_untranslated(msgs):
+    if 0 == len(infostock[1]):
+        msgs.append('not yet translated')
+
+def check_fuzzy(msgs):
+    if infostock[4]:
+        msgs.append('fuzzy msgid')
+
+def check_wrapped(msgs):
+    if infostock[5]:
+        detail = '\n'.join(['%s:%d:wrapped here' % (filename, n)
+                            for n in infostock[5]])
+        msgs.append('unexpected wrap in msgstr\n%s' % detail)
+
+import unicodedata
+eaw = getattr(unicodedata, 'east_asian_width', None)
+if eaw is None:
+    sys.stderr.write("WARN: unicodedata doesn't have east_asian_width\n")
+    def colwidth(s):
+        return len(s)
+else:
+    def colwidth(s):
+        us = s.decode('string-escape').decode('utf-8')
+        return sum([eaw(c) in "WFA" and 2 or 1 for c in us])
+
+titlemarks = ['"', '=', '-', '.', '#']
+
+def hastitlemark(msgids):
+    return ((1 < len(msgids)) and
+            (1 < len(msgids[1])) and
+            (msgids[1] == msgids[1][0] * len(msgids[1])) and
+            (msgids[1][0] in titlemarks))
+
+def check_rst_error(msgs):
+    if infostock[0].endswith('::') and not infostock[1].endswith('::'):
+        msgs.append('translation forgot "::" at the end of message')
+
+    msgids = infostock[0].split('\\n')
+    if hastitlemark(msgids):
+        msgstrs = infostock[1].split('\\n')
+        if len(msgstrs) < 2:
+            msgs.append("translation has less lines")
+        elif msgids[1][0] != msgstrs[1][0]:
+            msgs.append("rst title mark is not as same as one in msgid")
+        elif colwidth(msgstrs[0]) != colwidth(msgstrs[1]):
+            msgs.append("length of title mark line isn't equal to title")
+
+####################
+
+import sys
+import optparse
+
+optionlist = [
+    optparse.make_option('-u', '--untranslated',
+                         help='pickup only untranslated messages',
+                         action='store_const', const=1, dest='untranslated'
+                         ),
+    optparse.make_option('-f', '--fuzzy',
+                         help='pickup only fuzzy messages',
+                         action='store_const', const=1, dest='fuzzy'
+                         ),
+    optparse.make_option('-w', '--wrapped',
+                         help='pickup only unexpectedly wrapped messages',
+                         action='store_const', const=1, dest='wrapped'
+                         ),
+    optparse.make_option('-r', '--rst-error',
+                         help='pickup only rst syntax error',
+                         action='store_const', const=1, dest='rst_error'
+                         ),
+]
+
+optparser = optparse.OptionParser(usage='USAGE: %prog [options]',
+                                  option_list=optionlist)
+
+(options, args) = optparser.parse_args()
+
+if 1 < len(args):
+    expecteds = args[1:]
 
     def checkargs(filenames):
         if not expecteds: return True
 else:
     interestedin = lambda(x): True
 
-if (1 < len(sys.argv)) and ('-' != sys.argv[1]):
-    filename = sys.argv[1]
+if (0 < len(args)) and ('-' != args[0]):
+    filename = args[0]
     infile = open(filename)
 else:
     filename = '<stdin>'
     infile = sys.stdin
 
+if ((not options.untranslated) and
+    (not options.fuzzy) and
+    (not options.wrapped) and
+    (not options.rst_error)):
+    # show all detected errors by default
+    options.untranslated = 1
+    options.fuzzy = 1
+    options.wrapped = 1
+    options.rst_error = 1
+
+checklist = [
+    (lambda : options.untranslated,
+     check_untranslated),
+    (lambda : options.fuzzy,
+     check_fuzzy),
+    (lambda : options.wrapped,
+     check_wrapped),
+    (lambda : options.rst_error,
+     check_rst_error),
+]
+
 ####################
 
-for line in infile:
-    line = line.strip()
-    lineno += 1
-
+def parse_line(line):
     for prefix, strategy in top_strategies:
         if line.startswith(prefix):
             line = line[len(prefix):] # trim off
             raise 'unexpected line: %s' % line
 
         if 0 == len(infostock[0]):
-            continue
+            return
 
         # empty line flush current status
-        
+
         if interestedin(infostock[3].keys()):
             msgs = []
-            if 0 == len(infostock[1]):
-                msgs.append('not yet translated')
-            if infostock[4]:
-                msgs.append('fuzzy msgid')
-            if infostock[5]:
-                detail = '\n'.join(['%s:%d:wrapped here' % (filename, n)
-                                    for n in infostock[5]])
-                msgs.append('unexpected wrap in msgstr\n%s' % detail)
-
+            for enabled, checkfunc in checklist:
+                if enabled():
+                    checkfunc(msgs)
             for msg in msgs:
                 print '%s:%d:%s' % (filename, infostock[2], msg)
 
         # clear information
-        infostock = ['', '', 0, {}, False, []]
-        state = undefined_state
+        clear_status()
+
+clear_status()
+
+for line in infile:
+    line = line.strip()
+    lineno += 1
+
+    parse_line(line)
+
+# flush stocked information
+parse_line('')