diff --git a/openerp/addons/base/base_data.xml b/openerp/addons/base/base_data.xml index 05c4afee931..7f5b4dec109 100644 --- a/openerp/addons/base/base_data.xml +++ b/openerp/addons/base/base_data.xml @@ -1365,7 +1365,7 @@ INR - Rs + ₹ 0.01 4 diff --git a/openerp/addons/base/base_menu.xml b/openerp/addons/base/base_menu.xml index c79b86e6af4..c3ad5982f28 100644 --- a/openerp/addons/base/base_menu.xml +++ b/openerp/addons/base/base_menu.xml @@ -27,8 +27,10 @@ parent="base.menu_custom" name="Reporting" sequence="30" /> - + + + + diff --git a/openerp/addons/base/i18n/ja.po b/openerp/addons/base/i18n/ja.po index 31643b45dd5..cc48df7b4b8 100644 --- a/openerp/addons/base/i18n/ja.po +++ b/openerp/addons/base/i18n/ja.po @@ -8,14 +8,14 @@ msgstr "" "Project-Id-Version: openobject-server\n" "Report-Msgid-Bugs-To: FULL NAME \n" "POT-Creation-Date: 2012-02-08 00:44+0000\n" -"PO-Revision-Date: 2012-02-28 16:02+0000\n" +"PO-Revision-Date: 2012-03-23 02:33+0000\n" "Last-Translator: Akira Hiyama \n" "Language-Team: Japanese \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"X-Launchpad-Export-Date: 2012-03-10 04:49+0000\n" -"X-Generator: Launchpad (build 14914)\n" +"X-Launchpad-Export-Date: 2012-03-23 04:41+0000\n" +"X-Generator: Launchpad (build 14996)\n" #. module: base #: model:res.country,name:base.sh @@ -112,7 +112,7 @@ msgstr "ハンガリー語 / マジャール語" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (PY) / Español (PY)" -msgstr "スペイン語(パラグアイ)" +msgstr "スペイン語(パラグアイ)/ Español (PY)" #. module: base #: model:ir.module.category,description:base.module_category_project_management @@ -178,7 +178,7 @@ msgstr "参照" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_be_invoice_bba msgid "Belgium - Structured Communication" -msgstr "ベルギー-構造化されたコミュニケーション" +msgstr "ベルギー-構造化された通信" #. module: base #: field:ir.actions.act_window,target:0 @@ -591,7 +591,7 @@ msgstr "受注のプリントレイアウト" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (VE) / Español (VE)" -msgstr "スペイン語(ベネズエラ)" +msgstr "スペイン語(ベネズエラ)/ Español (VE)" #. module: base #: model:ir.module.module,shortdesc:base.module_hr_timesheet_invoice @@ -970,7 +970,7 @@ msgstr "モジュール更新" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (UY) / Español (UY)" -msgstr "スペイン語(ウルグアイ)" +msgstr "スペイン語(ウルグアイ)/ Español (UY)" #. module: base #: field:res.partner,mobile:0 @@ -1208,7 +1208,7 @@ msgstr "スロバキア語" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (AR) / Español (AR)" -msgstr "スペイン語(アルゼンチン)" +msgstr "スペイン語(アルゼンチン)/ Español (AR)" #. module: base #: model:res.country,name:base.ug @@ -1248,7 +1248,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (GT) / Español (GT)" -msgstr "スペイン語(グアテマラ)" +msgstr "スペイン語(グアテマラ)/ Español (GT)" #. module: base #: field:ir.mail_server,smtp_port:0 @@ -2247,7 +2247,7 @@ msgstr "スペイン語" #. module: base #: selection:base.language.install,lang:0 msgid "Korean (KP) / 한국어 (KP)" -msgstr "北朝鮮" +msgstr "韓国語(北朝鮮) / 한국어 (KP)" #. module: base #: view:base.module.update:0 @@ -2451,7 +2451,7 @@ msgstr "グループ" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (CL) / Español (CL)" -msgstr "スペイン語(チリ)" +msgstr "スペイン語(チリ) / Español (CL)" #. module: base #: model:res.country,name:base.bz @@ -2608,7 +2608,7 @@ msgstr "請求書" #. module: base #: selection:base.language.install,lang:0 msgid "Portugese (BR) / Português (BR)" -msgstr "ポルトガル語(ブラジル)" +msgstr "ポルトガル語(ブラジル)/ Português (BR)" #. module: base #: model:res.country,name:base.bb @@ -2761,7 +2761,7 @@ msgstr "Eメールアドレス" #. module: base #: selection:base.language.install,lang:0 msgid "French (BE) / Français (BE)" -msgstr "フランス語(ベルギー)" +msgstr "フランス語(ベルギー)/ Français (BE)" #. module: base #: view:ir.actions.server:0 @@ -3018,7 +3018,7 @@ msgstr "ノーフォーク島" #. module: base #: selection:base.language.install,lang:0 msgid "Korean (KR) / 한국어 (KR)" -msgstr "韓国" +msgstr "韓国語(韓国)/ 한국어 (KR)" #. module: base #: help:ir.model.fields,model:0 @@ -3483,7 +3483,7 @@ msgstr "翻訳者がエクスポートする際に、ファイルのエンコー #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (DO) / Español (DO)" -msgstr "スペイン語(ドミニカ共和国)" +msgstr "スペイン語(ドミニカ共和国)/ Español (DO)" #. module: base #: model:res.country,name:base.na @@ -4826,7 +4826,7 @@ msgstr "ギリシャ-会計" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (HN) / Español (HN)" -msgstr "スペイン語(ホンジュラス)" +msgstr "スペイン語(ホンジュラス)/ Español (HN)" #. module: base #: view:ir.sequence.type:0 @@ -5056,7 +5056,7 @@ msgstr "選択されたモジュールは更新あるいはインストールさ #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (PR) / Español (PR)" -msgstr "スペイン語(プエルトリコ)" +msgstr "スペイン語(プエルトリコ)/ Español (PR)" #. module: base #: model:res.country,name:base.gt @@ -5473,7 +5473,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (PA) / Español (PA)" -msgstr "スペイン語(パナマ)" +msgstr "スペイン語(パナマ)/ Español (PA)" #. module: base #: view:res.currency:0 @@ -6431,7 +6431,7 @@ msgstr "モジュール品質の分析" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (BO) / Español (BO)" -msgstr "スペイン語(ボリビア)" +msgstr "スペイン語(ボリビア)/ Español (BO)" #. module: base #: model:ir.actions.act_window,name:base.ir_access_act @@ -7053,7 +7053,7 @@ msgstr "非表示" #. module: base #: selection:base.language.install,lang:0 msgid "Serbian (Latin) / srpski" -msgstr "セルビア語" +msgstr "セルビア語(ラテン)/ srpski" #. module: base #: model:res.country,name:base.il @@ -7924,7 +7924,7 @@ msgstr "閉じる" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (MX) / Español (MX)" -msgstr "スペイン語(メキシコ)" +msgstr "スペイン語(メキシコ)/ Español (MX)" #. module: base #: code:addons/base/publisher_warranty/publisher_warranty.py:145 @@ -8170,7 +8170,7 @@ msgstr "項目が定義されているモジュールのリスト" #. module: base #: selection:base.language.install,lang:0 msgid "Chinese (CN) / 简体中文" -msgstr "中国語(简体中文)" +msgstr "中国語 / 简体中文" #. module: base #: field:res.bank,street:0 @@ -8310,11 +8310,14 @@ msgid "" "interface, which has less features but is easier to use. You can switch to " "the other interface from the User/Preferences menu at any time." msgstr "" +"OpenERPは簡易 / " +"拡張の2種類のユーザインタフェースを提供します。最初にOpenERPを使う場合は、機能は少ないながらも、使い易い簡易なユーザインタフェースを選択することを" +"強くお勧めします。なお、いつでも設定メニューから拡張インタフェースに変更できます。" #. module: base #: model:res.country,name:base.cc msgid "Cocos (Keeling) Islands" -msgstr "" +msgstr "ココス諸島" #. module: base #: selection:base.language.install,state:0 @@ -8326,22 +8329,22 @@ msgstr "" #. module: base #: view:res.lang:0 msgid "11. %U or %W ==> 48 (49th week)" -msgstr "" +msgstr "11. %U or %W ==> 48(49番目の週)" #. module: base #: model:ir.model,name:base.model_res_partner_bank_type_field msgid "Bank type fields" -msgstr "" +msgstr "銀行タイプ項目" #. module: base #: selection:base.language.install,lang:0 msgid "Dutch / Nederlands" -msgstr "" +msgstr "オランダ" #. module: base #: selection:res.company,paper_format:0 msgid "US Letter" -msgstr "" +msgstr "US レター" #. module: base #: model:ir.module.module,description:base.module_stock_location @@ -8433,6 +8436,63 @@ msgid "" "from Gate A\n" " " msgstr "" +"\n" +"このモジュールはプッシュ / プル倉庫フローを効果的に実行する倉庫アプリケーションを補います。\n" +"=============================================================================" +"===============================\n" +"\n" +"典型的な利用例:\n" +" * 製品製造チェーンの管理\n" +" * 製品ごとのデフォルトロケーションの管理\n" +" * 以下のようなビジネス要求による倉庫の中の経路の定義:\n" +" - 品質管理\n" +" - 販売サービスの後\n" +" - サプライヤ返品\n" +"\n" +" * レンタル製品の自動返品を生成することでレンタル管理を助けます。\n" +"\n" +"ひとたびこのモジュールがインストールされたら、製品フォームに追加タブが現れます。\n" +"そこで、プッシュとプルのフローの仕様を加えることができます。\n" +"CPU1製品のプッシュとプルのデモデータ:\n" +"\n" +"プッシュフロー\n" +"----------\n" +"プッシュフローは、一定の製品が常に必要に応じて他の場所に対応して動くように到着する時、\n" +"オプションとして一定の遅延がある時に役立ちます。\n" +"オリジナルの倉庫アプリケーションは既にそれ自身にプッシュフローの仕様をサポートしています。\n" +"しかし、これは製品ごとに改良されません。\n" +"\n" +"プッシュプローの仕様は、どの場所がどの場所と何のパラメータでつながれているかを示します。\n" +"製品の所定の量が供給元の場所で動きがあるや否や結び付けられた動作がフロー定義\n" +"(目的地の場所、遅延、移動の種類、ジャーナル他)でセットされたパラメータにしたがって\n" +"自動的に予測されます。\n" +"この新しい動きはパラメータにしたがって自動的に実行されるか、手動確認を要求します。\n" +"\n" +"プルフロー\n" +"----------\n" +"プルフローはプッシュフローとは少し異なっています。これは製品の動きの処理には関係せず、\n" +"むしろ調達した注文の処理に関係します。直接の商品ではなくニーズに依ります。\n" +"プルフローの古典的な例は、供給に責任を持つ親会社を持つアウトレット会社です。\n" +"\n" +" [ 顧客 ] <- A - [ アウトレット ] <- B - [ 親会社 ] <~ C ~ [ 供給者 ]\n" +"\n" +"新しい調達注文(A:例として注文の確認が来ます)がアウトレットに到着すると、それは親会社から要求されたもう一つの調達注文に変換されます(B:プルフローのタ" +"イプは'move')。親会社により調達注文Bが処理される時、そしてその製品が在庫切れの時、それは供給者からの受注(C:プルフローのタイプは購入)に変換され" +"ます。結果として調達注文、ニーズは顧客と供給者の間の全てにプッシュされます。\n" +"\n" +"技術的には、プルフローは調達注文と別に処理することを許します。製品に対しての考慮に依存するのみならず、その製品のニーズを持つ場所(即ち調達注文の目的地)に" +"依存します。\n" +"\n" +"使用例\n" +"--------\n" +"\n" +"以下のデモデータを使います:\n" +" CPU1:ショップ1からいくらかのCPU1を売り、スケジューラを走らせます。\n" +" - 倉庫:配達注文,ショップ1: 受付\n" +" CPU3:\n" +" - 商品を受け取る時、それは品質管理場所に行き、棚2に保管されます。\n" +" - 顧客に配達する時:ピックリスト -> 梱包 -> GateAから配達注文\n" +" " #. module: base #: model:ir.module.module,description:base.module_marketing @@ -8444,21 +8504,27 @@ msgid "" "Contains the installer for marketing-related modules.\n" " " msgstr "" +"\n" +"マーケティングメニュー\n" +"===================\n" +"\n" +"マーケティング関連のモジュールのインストーラを含んでいます。\n" +" " #. module: base #: model:ir.module.category,name:base.module_category_knowledge_management msgid "Knowledge Management" -msgstr "" +msgstr "知識管理" #. module: base #: model:ir.actions.act_window,name:base.bank_account_update msgid "Company Bank Accounts" -msgstr "" +msgstr "顧客銀行口座" #. module: base #: help:ir.mail_server,smtp_pass:0 msgid "Optional password for SMTP authentication" -msgstr "" +msgstr "SMTP認証のための任意のパスワード" #. module: base #: model:ir.module.module,description:base.module_project_mrp @@ -8491,6 +8557,25 @@ msgid "" "task is completed.\n" "\n" msgstr "" +"\n" +"自動的に調達ラインからプロジェクトタスクの生成します。\n" +"==========================================================\n" +"\n" +"対応する製品が以下の特徴を満たす場合、このモジュールはそれぞれの調達注文ライン\n" +"(例えば販売注文ライン)のための新しいタスクを作成します。\n" +"\n" +" ・ タイプ = サービス\n" +" ・ 調達手法(注文実現) = MTO(受注生産)\n" +" ・ 供給 / 調達手法 = 産物\n" +"\n" +"もし先頭のプロジェクトが製品フォーム(調達タブ)で定義されているなら、新しいタスクは\n" +"その特定のプロジェクトの中に作られます。\n" +"それ以外の場合は、新しいタスクはどんなプロジェクトにも属さず、後で手作業でプロジェクトに\n" +"追加されるかも知れません。\n" +"\n" +"プロジェクトのタスクが完了するか、中止される時、調達ラインに対応するワークフローはそれに応じて更新されます。\n" +"例えば、もしこの調達が受注ラインに対応するなら、仕事が完了する時に受注ラインは配達されたと考えられます。\n" +"\n" #. module: base #: code:addons/base/res/res_config.py:348 @@ -8500,6 +8585,9 @@ msgid "" "\n" "This addon is already installed on your system" msgstr "" +"\n" +"\n" +"このアドオンは既にシステムにインストール済みです。" #. module: base #: model:ir.module.module,description:base.module_account_check_writing @@ -8508,11 +8596,14 @@ msgid "" " Module for the Check writing and check printing \n" " " msgstr "" +"\n" +" チェックの作成と印刷のためのモジュール \n" +" " #. module: base #: model:res.partner.bank.type,name:base.bank_normal msgid "Normal Bank Account" -msgstr "" +msgstr "通常の銀行口座" #. module: base #: view:ir.actions.wizard:0 @@ -8542,6 +8633,21 @@ msgid "" "\n" " " msgstr "" +"\n" +"このモジュールは受信したEメールを元に自動的にプロジェクトタスクを生成します。\n" +"===========================================================================\n" +"\n" +"所定のメールボックスに到着した新しいEメールを元にタスクの生成を許します。\n" +"同様にCRMアプリケーションがリード / オポチュニティを持つもの。\n" +"メールボックス統合の設定のために2つの共通の選択肢があります:\n" +"\n" +" ・ fetchmailモジュールをインストールし、新しいメールボックスを設定し、それから\n" +"  受信EメールのためにProject Tasksをターゲットとして選んで下さい。\n" +" ・ mail gatewayスクリプトが提供したmailモジュールに基づいて、メールサーバを手作業で設定して、\n" +"  そしてproject.taskモデルにそれを接続して下さい。\n" +"\n" +"\n" +" " #. module: base #: model:ir.module.module,description:base.module_membership @@ -8561,6 +8667,18 @@ msgid "" "invoice and send propositions for membership renewal.\n" " " msgstr "" +"\n" +"このモジュールはメンバーシップの管理のために、全ての管理操作を許可します。\n" +"=========================================================================\n" +"\n" +"以下の異なった種類の会員をサポートします:\n" +"・ 無料会員\n" +"・ 関連会員(例:全ての子会社のメンバーシップのためのグループ加入)\n" +"・ 有料会員\n" +"・ 特別な会員価格など\n" +"\n" +"メンバーシップ更新のための請求書を作り、条件書を送付するために、これは販売と会計と統合されます。\n" +" " #. module: base #: model:ir.module.module,description:base.module_hr_attendance @@ -8573,46 +8691,52 @@ msgid "" "actions(Sign in/Sign out) performed by them.\n" " " msgstr "" +"\n" +"このモジュールは従業員の出勤管理を目指しています。\n" +"==================================================\n" +"\n" +"従業員自身が行ったサインイン / サインアウトの行動をベースにして、従業員の出勤の根拠を保持します。\n" +" " #. module: base #: field:ir.module.module,maintainer:0 msgid "Maintainer" -msgstr "" +msgstr "保守担当者" #. module: base #: field:ir.sequence,suffix:0 msgid "Suffix" -msgstr "" +msgstr "サフィックス" #. module: base #: model:res.country,name:base.mo msgid "Macau" -msgstr "" +msgstr "マカオ" #. module: base #: model:ir.actions.report.xml,name:base.res_partner_address_report msgid "Labels" -msgstr "" +msgstr "ラベル" #. module: base #: field:partner.massmail.wizard,email_from:0 msgid "Sender's email" -msgstr "" +msgstr "送信者のEメール" #. module: base #: field:ir.default,field_name:0 msgid "Object Field" -msgstr "" +msgstr "オブジェクト項目" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (PE) / Español (PE)" -msgstr "" +msgstr "スペイン語(ペルー)/ Español (PE)" #. module: base #: selection:base.language.install,lang:0 msgid "French (CH) / Français (CH)" -msgstr "" +msgstr "フランス語(スイス)/ Français (CH)" #. module: base #: help:ir.actions.server,subject:0 @@ -8621,6 +8745,8 @@ msgid "" "the same values as those available in the condition field, e.g. `Hello [[ " "object.partner_id.name ]]`" msgstr "" +"電子メールの件名には条件項目で使用可能な同じ値を元にした二重括弧で囲まれた表現、例えば、‘こんにちは[[ object.partner_id.name " +"]]’を含むことができます。" #. module: base #: model:ir.module.module,description:base.module_account_sequence @@ -8639,11 +8765,24 @@ msgid "" " * Number Padding\n" " " msgstr "" +"\n" +"このモジュールは会計項目のために内部の連続番号を維持管理します。\n" +"======================================================================\n" +"\n" +"あなたは会計の順序が維持されるように設定することができます。\n" +"\n" +"以下の順序の属性をカスタマイズできます:\n" +" ・ プレフィックス(接頭辞)\n" +" ・ サフィックス(接尾辞)\n" +" ・ 次の番号\n" +" ・ 増分番号\n" +" ・ 番号埋め文字\n" +" " #. module: base #: model:res.country,name:base.to msgid "Tonga" -msgstr "" +msgstr "トンガ" #. module: base #: help:ir.model.fields,serialization_field_id:0 @@ -8652,35 +8791,37 @@ msgid "" "serialization field, instead of having its own database column. This cannot " "be changed after creation." msgstr "" +"もしセットする場合、この項目は自身のデータベースのカラムの代わりに、シリアライズされた項目の疎な構造の中に保存されます。これを作成した後で、変更することは" +"できません。" #. module: base #: view:res.partner.bank:0 msgid "Bank accounts belonging to one of your companies" -msgstr "" +msgstr "銀行口座はあなたの会社の一つに属します。" #. module: base #: help:res.users,action_id:0 msgid "" "If specified, this action will be opened at logon for this user, in addition " "to the standard menu." -msgstr "" +msgstr "もし指定された場合,このアクションは標準メニューに追加され、このユーザに対してログイン時に開かれます。" #. module: base #: selection:ir.module.module,complexity:0 msgid "Easy" -msgstr "" +msgstr "易しい" #. module: base #: view:ir.values:0 msgid "Client Actions" -msgstr "" +msgstr "顧客アクション" #. module: base #: help:ir.actions.server,trigger_obj_id:0 msgid "" "The field on the current object that links to the target object record (must " "be a many2one, or an integer field with the record ID)" -msgstr "" +msgstr "現在のオブジェクトのその項目は、目的のオブジェクトレコード(レコードIDを持ち多対1の関係か、または整数項目である)にリンクします。" #. module: base #: code:addons/base/module/module.py:423 @@ -8689,18 +8830,20 @@ msgid "" "You try to upgrade a module that depends on the module: %s.\n" "But this module is not available in your system." msgstr "" +"あなたは次のモジュールに依存するモジュールをアップグレードしようとしています: %s.\n" +"しかし、そのモジュールはあなたのシステムでは使用できません。" #. module: base #: field:workflow.transition,act_to:0 msgid "Destination Activity" -msgstr "" +msgstr "目的地のアクティビティ" #. module: base #: help:res.currency,position:0 msgid "" "Determines where the currency symbol should be placed after or before the " "amount." -msgstr "" +msgstr "通貨記号が金額の前後、どちらに置かれるべきなのかを決定します。" #. module: base #: model:ir.model,name:base.model_base_update_translations @@ -8710,7 +8853,7 @@ msgstr "" #. module: base #: field:res.partner.category,parent_id:0 msgid "Parent Category" -msgstr "" +msgstr "親分類" #. module: base #: selection:ir.property,type:0 @@ -8721,12 +8864,12 @@ msgstr "" #: selection:res.partner.address,type:0 #: selection:res.partner.title,domain:0 msgid "Contact" -msgstr "" +msgstr "コンタクト" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_at msgid "Austria - Accounting" -msgstr "" +msgstr "オーストラリア-会計" #. module: base #: model:ir.model,name:base.model_ir_ui_menu @@ -8737,39 +8880,39 @@ msgstr "" #: model:ir.module.category,name:base.module_category_project_management #: model:ir.module.module,shortdesc:base.module_project msgid "Project Management" -msgstr "" +msgstr "プロジェクト管理" #. module: base #: model:res.country,name:base.us msgid "United States" -msgstr "" +msgstr "アメリカ合衆国" #. module: base #: model:ir.module.module,shortdesc:base.module_crm_fundraising msgid "Fundraising" -msgstr "" +msgstr "募金" #. module: base #: view:ir.module.module:0 msgid "Cancel Uninstall" -msgstr "" +msgstr "アンインストールのキャンセル" #. module: base #: view:res.bank:0 #: view:res.partner:0 #: view:res.partner.address:0 msgid "Communication" -msgstr "" +msgstr "通信" #. module: base #: model:ir.module.module,shortdesc:base.module_analytic msgid "Analytic Accounting" -msgstr "" +msgstr "分析会計" #. module: base #: view:ir.actions.report.xml:0 msgid "RML Report" -msgstr "" +msgstr "RMLレポート" #. module: base #: model:ir.model,name:base.model_ir_server_object_lines @@ -8779,23 +8922,23 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_be msgid "Belgium - Accounting" -msgstr "" +msgstr "ベルギー-会計" #. module: base #: code:addons/base/module/module.py:622 #, python-format msgid "Module %s: Invalid Quality Certificate" -msgstr "" +msgstr "モジュール %s: 無効な品質証明書" #. module: base #: model:res.country,name:base.kw msgid "Kuwait" -msgstr "" +msgstr "クウェート" #. module: base #: field:workflow.workitem,inst_id:0 msgid "Instance" -msgstr "" +msgstr "インスタンス" #. module: base #: help:ir.actions.report.xml,attachment:0 @@ -8804,23 +8947,25 @@ msgid "" "Keep empty to not save the printed reports. You can use a python expression " "with the object and time variables." msgstr "" +"これは印刷結果を保存するために使われる添付ファイルのファイル名です。印刷レポートを保存しない場合は、空の状態にして下さい。オブジェクトと時間変数にはpyt" +"hon表現を使うことができます。" #. module: base #: sql_constraint:ir.model.data:0 msgid "" "You cannot have multiple records with the same external ID in the same " "module!" -msgstr "" +msgstr "同じモジュールの中に、同じ外部IDで複数のレコードを持つことはできません。" #. module: base #: selection:ir.property,type:0 msgid "Many2One" -msgstr "" +msgstr "多対1" #. module: base #: model:res.country,name:base.ng msgid "Nigeria" -msgstr "" +msgstr "ナイジェリア" #. module: base #: model:ir.module.module,description:base.module_crm_caldav @@ -8831,41 +8976,46 @@ msgid "" "\n" " * Share meeting with other calendar clients like sunbird\n" msgstr "" +"\n" +"ミーティングにおけるCaldavの機能\n" +"===========================\n" +"\n" +" ・ Sunbirdなど他のカレンダークライアントとミーティング情報を共有できます。\n" #. module: base #: model:ir.module.module,shortdesc:base.module_base_iban msgid "IBAN Bank Accounts" -msgstr "" +msgstr "IBAN銀行口座" #. module: base #: field:res.company,user_ids:0 msgid "Accepted Users" -msgstr "" +msgstr "受け入れられたユーザ" #. module: base #: field:ir.ui.menu,web_icon_data:0 msgid "Web Icon Image" -msgstr "" +msgstr "Webアイコンイメージ" #. module: base #: field:ir.actions.server,wkf_model_id:0 msgid "Target Object" -msgstr "" +msgstr "目的のオブジェクト" #. module: base #: selection:ir.model.fields,select_level:0 msgid "Always Searchable" -msgstr "" +msgstr "常時検索可能" #. module: base #: model:res.country,name:base.hk msgid "Hong Kong" -msgstr "" +msgstr "香港" #. module: base #: field:ir.default,ref_id:0 msgid "ID Ref." -msgstr "" +msgstr "ID参照" #. module: base #: model:ir.actions.act_window,help:base.action_partner_address_form @@ -9337,7 +9487,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (EC) / Español (EC)" -msgstr "" +msgstr "スペイン語(エクアドル)/ Español (EC)" #. module: base #: help:ir.ui.view,xml_id:0 @@ -9964,7 +10114,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Flemish (BE) / Vlaams (BE)" -msgstr "" +msgstr "フラマン語(ベルギー)/ Vlaams (BE)" #. module: base #: field:ir.cron,interval_number:0 @@ -10817,7 +10967,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (CO) / Español (CO)" -msgstr "" +msgstr "スペイン語(コロンビア)/ Español (CO)" #. module: base #: view:base.module.configuration:0 @@ -10935,7 +11085,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_cn msgid "中国会计科目表 - Accounting" -msgstr "" +msgstr "中国-会計" #. module: base #: view:ir.model.access:0 @@ -10964,7 +11114,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Chinese (TW) / 正體字" -msgstr "" +msgstr "中国語(台湾)/ 正體字" #. module: base #: model:ir.model,name:base.model_res_request @@ -11433,7 +11583,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (CR) / Español (CR)" -msgstr "" +msgstr "スペイン語(コスタリカ)/ Español (CR)" #. module: base #: view:ir.rule:0 @@ -11653,7 +11803,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_br msgid "Brazilian - Accounting" -msgstr "" +msgstr "ブラジル-会計" #. module: base #: model:res.country,name:base.pk @@ -12328,7 +12478,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (NI) / Español (NI)" -msgstr "" +msgstr "スペイン語(ニカラグア)/ Español (NI)" #. module: base #: model:ir.module.module,description:base.module_product_visible_discount @@ -12666,7 +12816,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_uk msgid "UK - Accounting" -msgstr "" +msgstr "イギリス-会計" #. module: base #: model:ir.module.module,description:base.module_project_scrum @@ -12737,7 +12887,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_in msgid "India - Accounting" -msgstr "" +msgstr "インド-会計" #. module: base #: field:ir.actions.server,expression:0 @@ -12752,7 +12902,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_gt msgid "Guatemala - Accounting" -msgstr "" +msgstr "グアテマラ-会計" #. module: base #: help:ir.cron,args:0 @@ -13713,7 +13863,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_th msgid "Thailand - Accounting" -msgstr "" +msgstr "タイ-会計" #. module: base #: view:res.lang:0 @@ -14334,7 +14484,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_es msgid "Spanish - Accounting (PGCE 2008)" -msgstr "" +msgstr "スペイン-会計(PGCE 2008)" #. module: base #: model:ir.module.module,shortdesc:base.module_stock_no_autopicking @@ -14429,7 +14579,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_nl msgid "Netherlands - Accounting" -msgstr "" +msgstr "オランダ-会計" #. module: base #: field:res.bank,bic:0 @@ -14743,7 +14893,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Serbian (Cyrillic) / српски" -msgstr "" +msgstr "セルビア語(キリル文字)/ српски" #. module: base #: code:addons/orm.py:2527 @@ -15137,7 +15287,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_de msgid "Deutschland - Accounting" -msgstr "" +msgstr "ドイツ-会計" #. module: base #: model:ir.module.module,shortdesc:base.module_auction @@ -15391,7 +15541,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_fr msgid "France - Accounting" -msgstr "" +msgstr "フランス-会計" #. module: base #: view:ir.actions.todo:0 @@ -15720,7 +15870,7 @@ msgstr "" #. module: base #: selection:base.language.install,lang:0 msgid "Spanish (SV) / Español (SV)" -msgstr "" +msgstr "スペイン語(エルサルバドル)/ Español (SV)" #. module: base #: help:res.lang,grouping:0 @@ -15803,7 +15953,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ca msgid "Canada - Accounting" -msgstr "" +msgstr "カナダ-会計" #. module: base #: model:ir.actions.act_window,name:base.act_ir_actions_todo_form @@ -15842,7 +15992,7 @@ msgstr "" #. module: base #: model:ir.module.module,shortdesc:base.module_l10n_ve msgid "Venezuela - Accounting" -msgstr "" +msgstr "ベネズエラ-会計" #. module: base #: model:res.country,name:base.cl diff --git a/openerp/addons/base/ir/ir_mail_server.py b/openerp/addons/base/ir/ir_mail_server.py index ecb41b32592..04156411e48 100644 --- a/openerp/addons/base/ir/ir_mail_server.py +++ b/openerp/addons/base/ir/ir_mail_server.py @@ -22,6 +22,7 @@ from email.MIMEText import MIMEText from email.MIMEBase import MIMEBase from email.MIMEMultipart import MIMEMultipart +from email.Charset import Charset from email.Header import Header from email.Utils import formatdate, make_msgid, COMMASPACE from email import Encoders @@ -97,6 +98,26 @@ def encode_header(header_text): return header_text_ascii if header_text_ascii\ else Header(header_text_utf8, 'utf-8') +def encode_header_param(param_text): + """Returns an appropriate RFC2047 encoded representation of the given + header parameter value, suitable for direct assignation as the + param value (e.g. via Message.set_param() or Message.add_header()) + RFC2822 assumes that headers contain only 7-bit characters, + so we ensure it is the case, using RFC2047 encoding when needed. + + :param param_text: unicode or utf-8 encoded string with header value + :rtype: string + :return: if ``param_text`` represents a plain ASCII string, + return the same 7-bit string, otherwise returns an + ASCII string containing the RFC2047 encoded text. + """ + # For details see the encode_header() method that uses the same logic + if not param_text: return "" + param_text_utf8 = tools.ustr(param_text).encode('utf-8') + param_text_ascii = try_coerce_ascii(param_text_utf8) + return param_text_ascii if param_text_ascii\ + else Charset('utf8').header_encode(param_text_utf8) + name_with_email_pattern = re.compile(r'("[^<@>]+")\s*<([^ ,<@]+@[^> ,]+)>') address_pattern = re.compile(r'([^ ,<@]+@[^> ,]+)') @@ -309,7 +330,7 @@ class ir_mail_server(osv.osv): msg['Cc'] = encode_rfc2822_address_header(COMMASPACE.join(email_cc)) if email_bcc: msg['Bcc'] = encode_rfc2822_address_header(COMMASPACE.join(email_bcc)) - msg['Date'] = formatdate(localtime=True) + msg['Date'] = formatdate() # Custom headers may override normal headers or provide additional ones for key, value in headers.iteritems(): msg[ustr(key).encode('utf-8')] = encode_header(value) @@ -334,14 +355,16 @@ class ir_mail_server(osv.osv): if attachments: for (fname, fcontent) in attachments: - filename_utf8 = ustr(fname).encode('utf-8') + filename_rfc2047 = encode_header_param(fname) part = MIMEBase('application', "octet-stream") + + # The default RFC2231 encoding of Message.add_header() works in Thunderbird but not GMail + # so we fix it by using RFC2047 encoding for the filename instead. + part.set_param('name', filename_rfc2047) + part.add_header('Content-Disposition', 'attachment', filename=filename_rfc2047) + part.set_payload(fcontent) Encoders.encode_base64(part) - # Force RFC2231 encoding for attachment filename - # See email.message.Message.add_header doc - part.add_header('Content-Disposition', 'attachment', - filename=('utf-8',None,filename_utf8)) msg.attach(part) return msg diff --git a/openerp/addons/base/ir/ir_values.py b/openerp/addons/base/ir/ir_values.py index bd619966b67..2a33e0c73c4 100644 --- a/openerp/addons/base/ir/ir_values.py +++ b/openerp/addons/base/ir/ir_values.py @@ -404,7 +404,7 @@ class ir_values(osv.osv): results[action['name']] = (action['id'], action['name'], action_def) except except_orm, e: continue - return results.values() + return sorted(results.values()) def _map_legacy_model_list(self, model_list, map_fn, merge_results=False): """Apply map_fn to the various models passed, according to diff --git a/openerp/addons/base/module/module.py b/openerp/addons/base/module/module.py index beb35ee38b2..cb484520058 100644 --- a/openerp/addons/base/module/module.py +++ b/openerp/addons/base/module/module.py @@ -452,6 +452,7 @@ class module(osv.osv): 'sequence': terp.get('sequence', 100), 'application': terp.get('application', False), 'auto_install': terp.get('auto_install', False), + 'icon': terp.get('icon', False), } # update the list of available packages diff --git a/openerp/addons/base/res/res_partner.py b/openerp/addons/base/res/res_partner.py index c570c3b1d20..45d9a3688fd 100644 --- a/openerp/addons/base/res/res_partner.py +++ b/openerp/addons/base/res/res_partner.py @@ -380,6 +380,7 @@ class res_partner(osv.osv): ).res_id def _display_address(self, cr, uid, address, type, context=None): + ''' The purpose of this function is to build and return an address formatted accordingly to the standards of the country where it belongs. diff --git a/openerp/addons/base/res/res_partner_view.xml b/openerp/addons/base/res/res_partner_view.xml index a9dee26d99c..8ae0bfc3934 100644 --- a/openerp/addons/base/res/res_partner_view.xml +++ b/openerp/addons/base/res/res_partner_view.xml @@ -6,7 +6,11 @@ web_icon_hover="data/sales-hover.png" groups="base.group_sale_salesman"/> - + + + @@ -175,7 +179,7 @@ - + Addresses ir.actions.act_window @@ -605,8 +609,8 @@ + parent="base.menu_sales" + sequence="8"/> Customers diff --git a/openerp/addons/base/res/res_security.xml b/openerp/addons/base/res/res_security.xml index 6783e316a6c..6a2bf52d21b 100644 --- a/openerp/addons/base/res/res_security.xml +++ b/openerp/addons/base/res/res_security.xml @@ -35,8 +35,8 @@ user rule - ['|',('company_id.child_ids','child_of',[user.company_id.id]),('company_id','child_of',[user.company_id.id])] + [('company_ids','child_of',[user.company_id.id])] - + diff --git a/openerp/addons/base/res/res_users.py b/openerp/addons/base/res/res_users.py index f148813ae05..2617efeb4a2 100644 --- a/openerp/addons/base/res/res_users.py +++ b/openerp/addons/base/res/res_users.py @@ -34,6 +34,9 @@ from service import security from tools.translate import _ import openerp import openerp.exceptions +from lxml import etree +from lxml.builder import E + _logger = logging.getLogger(__name__) @@ -743,29 +746,27 @@ class groups_view(osv.osv): # and introduces the reified group fields view = self.get_user_groups_view(cr, uid, context) if view: - xml = u""" - - -%s -%s - -""" + xml1, xml2 = [], [] - xml1.append('' % _('Applications')) + xml1.append(E.separator(string=_('Application'), colspan="4")) for app, kind, gs in self.get_groups_by_application(cr, uid, context): if kind == 'selection': # application name with a selection field field_name = name_selection_groups(map(int, gs)) - xml1.append('' % field_name) - xml1.append('') + xml1.append(E.field(name=field_name)) + xml1.append(E.newline()) else: # application separator with boolean fields app_name = app and app.name or _('Other') - xml2.append('' % app_name) + xml2.append(E.separator(string=app_name, colspan="4")) for g in gs: field_name = name_boolean_group(g.id) - xml2.append('' % field_name) - view.write({'arch': xml % ('\n'.join(xml1), '\n'.join(xml2))}) + xml2.append(E.field(name=field_name)) + + xml = E.field(*(xml1 + xml2), name="groups_id", position="replace") + xml.addprevious(etree.Comment("GENERATED AUTOMATICALLY BY GROUPS")) + xml_content = etree.tostring(xml, pretty_print=True, xml_declaration=True, encoding="utf-8") + view.write({'arch': xml_content}) return True def get_user_groups_view(self, cr, uid, context=None): diff --git a/openerp/service/web_services.py b/openerp/service/web_services.py index 46beaecd323..330bb86dcfc 100644 --- a/openerp/service/web_services.py +++ b/openerp/service/web_services.py @@ -173,6 +173,8 @@ class db(netsvc.ExportService): raise Exception, e def exp_drop(self, db_name): + if not self.exp_db_exist(db_name): + return False openerp.modules.registry.RegistryManager.delete(db_name) sql_db.close_db(db_name) @@ -180,6 +182,17 @@ class db(netsvc.ExportService): cr = db.cursor() cr.autocommit(True) # avoid transaction block try: + # Try to terminate all other connections that might prevent + # dropping the database + try: + cr.execute("""SELECT pg_terminate_backend(procpid) + FROM pg_stat_activity + WHERE datname = %s AND + procpid != pg_backend_pid()""", + (db_name,)) + except Exception: + pass + try: cr.execute('DROP DATABASE "%s"' % db_name) except Exception, e: diff --git a/openerp/tools/graph.py b/openerp/tools/graph.py index b54e101eec4..1b039ce97c6 100755 --- a/openerp/tools/graph.py +++ b/openerp/tools/graph.py @@ -313,7 +313,8 @@ class graph(object): self.order[level] = self.order[level]+1 for sec_end in self.transitions.get(node, []): - self.init_order(sec_end, self.result[sec_end]['x']) + if node!=sec_end: + self.init_order(sec_end, self.result[sec_end]['x']) def order_heuristic(self): @@ -438,33 +439,27 @@ class graph(object): l.reverse() no = len(l) - if no%2==0: - first_half = l[no/2:] - factor = 1 - else: - first_half = l[no/2+1:] - factor = 0 - + rest = no%2 + first_half = l[no/2+rest:] last_half = l[:no/2] - i=1 - for child in first_half: - self.result[child]['y'] = mid_pos - (i - (factor * 0.5)) - i += 1 + for i, child in enumerate(first_half): + self.result[child]['y'] = mid_pos - (i+1 - (0 if rest else 0.5)) if self.transitions.get(child, False): if last: self.result[child]['y'] = last + len(self.transitions[child])/2 + 1 last = self.tree_order(child, last) - if no%2: + if rest: mid_node = l[no/2] self.result[mid_node]['y'] = mid_pos if self.transitions.get((mid_node), False): if last: self.result[mid_node]['y'] = last + len(self.transitions[mid_node])/2 + 1 - last = self.tree_order(mid_node) + if node!=mid_node: + last = self.tree_order(mid_node) else: if last: self.result[mid_node]['y'] = last + 1 @@ -474,13 +469,14 @@ class graph(object): i=1 last_child = None for child in last_half: - self.result[child]['y'] = mid_pos + (i - (factor * 0.5)) + self.result[child]['y'] = mid_pos + (i - (0 if rest else 0.5)) last_child = child i += 1 if self.transitions.get(child, False): if last: self.result[child]['y'] = last + len(self.transitions[child])/2 + 1 - last = self.tree_order(child, last) + if node!=child: + last = self.tree_order(child, last) if last_child: last = self.result[last_child]['y']