| Component | Approved | Translated | Unreviewed | Unfinished | Unfinished words | Unfinished characters | Untranslated | Checks | Suggestions | Comments | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 3pl_logistic_company BSD-2-Clause | 13% | 29% | 44 | 198 | 2,032 | 17,103 | 198 | 0 | 9 | 0 | |
| account BSD-2-Clause | 1% | 88% | 2,776 | 378 | 3,348 | 35,521 | 373 | 40 | 0 | 0 | |
| account_3way_match BSD-2-Clause | 0% | 18 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_accountant BSD-2-Clause | 13% | 95% | 369 | 20 | 80 | 493 | 20 | 3 | 0 | 0 | |
| account_accountant_batch_payment BSD-2-Clause | 12% | 87% | 6 | 1 | 2 | 13 | 1 | 0 | 0 | 0 | |
| account_accountant_check_printing BSD-2-Clause | 0% | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_accountant_fleet BSD-2-Clause | 25% | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_add_gln BSD-2-Clause | 0% | 0% | 0 | 6 | 11 | 63 | 6 | 0 | 0 | 0 | |
| account_asset BSD-2-Clause | 0% | 86% | 322 | 50 | 438 | 3,154 | 50 | 3 | 0 | 0 | |
| account_asset_fleet BSD-2-Clause | 0% | 7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_avatax BSD-2-Clause | 0% | 100% | 115 | 0 | 0 | 0 | 0 | 2 | 0 | 0 | |
| account_avatax_geolocalize BSD-2-Clause | 0% | 10 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_avatax_sale BSD-2-Clause | 0% | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_avatax_stock BSD-2-Clause | 0% | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_bank_statement_extract BSD-2-Clause | 0% | 95% | 44 | 2 | 4 | 32 | 2 | 0 | 0 | 0 | |
| account_bank_statement_import BSD-2-Clause | 0% | 87% | 27 | 4 | 48 | 292 | 4 | 1 | 0 | 0 | |
| account_bank_statement_import_camt BSD-2-Clause | 1% | 315 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_bank_statement_import_csv BSD-2-Clause | 0% | 75% | 9 | 3 | 7 | 56 | 3 | 0 | 0 | 0 | |
| account_bank_statement_import_ofx BSD-2-Clause | 0% | 5 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_bank_statement_import_qif BSD-2-Clause | 0% | 11 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_base_import BSD-2-Clause | 0% | 97% | 75 | 2 | 13 | 83 | 2 | 1 | 0 | 0 | |
| account_batch_payment BSD-2-Clause | 0% | 92% | 155 | 13 | 70 | 373 | 13 | 3 | 0 | 0 | |
| account_budget BSD-2-Clause | 0% | 98% | 122 | 2 | 11 | 70 | 2 | 2 | 0 | 0 | |
| account_budget_purchase BSD-2-Clause | 6% | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_check_printing BSD-2-Clause | 0% | 91% | 64 | 6 | 160 | 992 | 6 | 1 | 0 | 0 | |
| account_debit_note BSD-2-Clause | 0% | 70% | 34 | 14 | 36 | 286 | 14 | 2 | 0 | 0 | |
| account_edi BSD-2-Clause | 0% | 73 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_edi_proxy_client BSD-2-Clause | 0% | 88% | 32 | 4 | 82 | 427 | 4 | 0 | 0 | 0 | |
| account_edi_ubl_cii BSD-2-Clause | 1% | 71% | 226 | 91 | 1,004 | 5,994 | 91 | 2 | 0 | 0 | |
| account_external_tax BSD-2-Clause | 0% | 100% | 9 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | |
| account_fiscal_categories BSD-2-Clause | 0% | 57% | 23 | 17 | 61 | 390 | 17 | 0 | 0 | 0 | |
| account_fiscal_categories_fleet BSD-2-Clause | 0% | 66% | 16 | 8 | 26 | 189 | 8 | 0 | 0 | 0 | |
| account_fleet BSD-2-Clause | 0% | 22 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_followup BSD-2-Clause | 1% | 96% | 147 | 6 | 51 | 355 | 6 | 0 | 0 | 0 | |
| account_inter_company_rules BSD-2-Clause | 0% | 95% | 20 | 1 | 1 | 2 | 1 | 0 | 0 | 0 | |
| account_intrastat BSD-2-Clause | 0% | 79% | 119 | 31 | 174 | 1,146 | 31 | 1 | 0 | 0 | |
| account_invoice_extract BSD-2-Clause | 0% | 92% | 58 | 5 | 26 | 153 | 5 | 0 | 0 | 0 | |
| account_invoice_extract_purchase BSD-2-Clause | 0% | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_iso20022 BSD-2-Clause | 0% | 78% | 67 | 18 | 106 | 693 | 18 | 6 | 0 | 0 | |
| account_loans BSD-2-Clause | 0% | 96% | 164 | 6 | 75 | 497 | 6 | 2 | 0 | 0 | |
| account_online_payment BSD-2-Clause | 0% | 66% | 26 | 13 | 440 | 6,855 | 13 | 0 | 0 | 0 | |
| account_online_synchronization BSD-2-Clause | 1% | 92% | 207 | 17 | 95 | 655 | 17 | 7 | 0 | 0 | |
| account_payment BSD-2-Clause | 1% | 98% | 119 | 2 | 13 | 87 | 2 | 5 | 0 | 0 | |
| account_peppol BSD-2-Clause | 0% | 40% | 146 | 218 | 2,233 | 13,984 | 218 | 4 | 0 | 0 | |
| account_peppol_advanced_fields BSD-2-Clause | 0% | 17% | 3 | 14 | 85 | 619 | 14 | 0 | 0 | 0 | |
| account_peppol_response BSD-2-Clause | 0% | 0% | 0 | 72 | 258 | 1,742 | 72 | 0 | 0 | 0 | |
| account_pos_settle_due BSD-2-Clause | 0% | 0% | 0 | 8 | 40 | 238 | 8 | 0 | 0 | 0 | |
| account_qr_code_emv BSD-2-Clause | 0% | 94% | 17 | 1 | 3 | 18 | 1 | 0 | 0 | 0 | |
| account_qr_code_sepa BSD-2-Clause | 0% | 8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_reports BSD-2-Clause | 1% | 67% | 768 | 364 | 2,440 | 17,064 | 364 | 7 | 0 | 0 | |
| account_reports_cash_basis BSD-2-Clause | 0% | 10 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_saft BSD-2-Clause | 0% | 89% | 17 | 2 | 11 | 75 | 2 | 0 | 2 | 0 | |
| account_saft_import BSD-2-Clause | 0% | 23 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_sepa_direct_debit BSD-2-Clause | 1% | 98% | 264 | 4 | 71 | 455 | 4 | 4 | 0 | 0 | |
| account_tax_python BSD-2-Clause | 0% | 57% | 11 | 8 | 48 | 306 | 8 | 1 | 0 | 0 | |
| account_transfer BSD-2-Clause | 0% | 83% | 60 | 12 | 119 | 758 | 12 | 0 | 0 | 0 | |
| account_update_tax_tags BSD-2-Clause | 0% | 17 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| account_winbooks_import BSD-2-Clause | 0% | 37 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| accountant BSD-2-Clause | 0% | 46% | 6 | 7 | 34 | 254 | 7 | 0 | 0 | 0 | |
| accountant_fleet BSD-2-Clause | 0% | 33% | 1 | 2 | 24 | 158 | 2 | 0 | 0 | 0 | |
| accountant_hr_expense BSD-2-Clause | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |||
| accountant_knowledge BSD-2-Clause | 0% | 14% | 44 | 264 | 2,307 | 16,225 | 264 | 0 | 0 | 0 | |
| accounting_firm BSD-2-Clause | 0% | 20% | 52 | 208 | 2,402 | 15,117 | 208 | 0 | 0 | 0 | |
| agriculture_shop BSD-2-Clause | 0% | 37% | 96 | 157 | 1,635 | 14,160 | 157 | 1 | 0 | 0 | |
| ai BSD-2-Clause | 0% | 28% | 74 | 187 | 2,219 | 15,827 | 187 | 0 | 0 | 0 | |
| ai_app BSD-2-Clause | 0% | 37% | 18 | 30 | 173 | 1,151 | 30 | 0 | 0 | 0 | |
| ai_crm BSD-2-Clause | 0% | 54% | 6 | 5 | 94 | 560 | 5 | 0 | 0 | 0 | |
| ai_crm_livechat BSD-2-Clause | 12% | 75% | 5 | 2 | 7 | 38 | 2 | 0 | 0 | 0 | |
| ai_documents BSD-2-Clause | 5% | 31% | 16 | 41 | 245 | 1,523 | 41 | 0 | 0 | 0 | |
| ai_documents_account BSD-2-Clause | 4% | 26% | 5 | 17 | 168 | 1,029 | 17 | 0 | 0 | 0 | |
| ai_documents_source BSD-2-Clause | 0% | 75% | 6 | 2 | 6 | 33 | 2 | 0 | 0 | 0 | |
| ai_fields BSD-2-Clause | 2% | 21% | 8 | 33 | 157 | 805 | 33 | 0 | 0 | 0 | |
| ai_knowledge BSD-2-Clause | 0% | 38% | 5 | 8 | 36 | 230 | 8 | 0 | 0 | 0 | |
| ai_livechat BSD-2-Clause | 6% | 50% | 7 | 8 | 55 | 314 | 8 | 0 | 0 | 0 | |
| ai_server_actions BSD-2-Clause | 0% | 66% | 8 | 4 | 22 | 111 | 4 | 1 | 0 | 0 | |
| ai_website BSD-2-Clause | 5% | 38% | 6 | 11 | 23 | 158 | 11 | 0 | 0 | 0 | |
| ai_website_livechat BSD-2-Clause | 3% | 56% | 16 | 13 | 45 | 285 | 13 | 0 | 0 | 0 | |
| analytic BSD-2-Clause | 0% | 93% | 152 | 10 | 84 | 452 | 10 | 1 | 0 | 0 | |
| analytic_enterprise BSD-2-Clause | 0% | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| appointment BSD-2-Clause | 1% | 80% | 517 | 128 | 2,171 | 26,568 | 128 | 5 | 0 | 0 | |
| appointment_account_payment BSD-2-Clause | 0% | 92% | 85 | 7 | 58 | 521 | 7 | 1 | 0 | 0 | |
| appointment_crm BSD-2-Clause | 0% | 15 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| appointment_google_calendar BSD-2-Clause | 0% | 12 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| appointment_google_reserve BSD-2-Clause | 0% | 54% | 40 | 34 | 250 | 1,784 | 34 | 0 | 0 | 0 | |
| appointment_hr BSD-2-Clause | 33% | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| appointment_hr_recruitment BSD-2-Clause | 27% | 8 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| appointment_microsoft_calendar BSD-2-Clause | 0% | 4 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| appointment_sms BSD-2-Clause | 50% | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| approvals BSD-2-Clause | 1% | 92% | 231 | 19 | 112 | 791 | 19 | 0 | 0 | 0 | |
| approvals_purchase BSD-2-Clause | 0% | 78% | 26 | 7 | 58 | 379 | 7 | 0 | 0 | 0 | |
| approvals_purchase_stock BSD-2-Clause | 0% | 6 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| architects BSD-2-Clause | 0% | 29% | 45 | 106 | 1,004 | 9,045 | 106 | 0 | 0 | 0 | |
| art_craft BSD-2-Clause | 0% | 65% | 118 | 63 | 929 | 7,648 | 63 | 3 | 0 | 0 | |
| attachment_indexation BSD-2-Clause | 0% | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
| auth_ldap BSD-2-Clause | 2% | 100% | 37 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | |
| auth_oauth BSD-2-Clause | 0% | 84% | 38 | 7 | 33 | 185 | 7 | 1 | 0 | 0 | |
| auth_passkey BSD-2-Clause | 2% | 97% | 36 | 1 | 7 | 117 | 1 | 0 | 0 | 0 | |
| auth_passkey_portal BSD-2-Clause | 9% | 81% | 8 | 2 | 5 | 24 | 2 | 0 | 0 | 0 | |
| auth_password_policy BSD-2-Clause | 0% | 87% | 14 | 2 | 2 | 10 | 2 | 0 | 0 | 0 | |
| auth_password_policy_portal BSD-2-Clause | 0% | 3 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | ||
Summary
| Project website | www.odoo.com | |
|---|---|---|
| Project reviewers50 |
|
|
| Language | Catalan | |
| Language code | ca | |
| Text direction | Left to right | |
| Case sensitivity | Case-sensitive | |
| Number of speakers | 8,218,781 | |
07/27/2026
String statistics
| Strings percent | Hosted strings | Words percent | Hosted words | Characters percent | Hosted characters | |
|---|---|---|---|---|---|---|
| Total | 120,053 | 763,937 | 5,707,890 | |||
| Approved | 1% | 532 | 1% | 8,737 | 1% | 105,136 |
| Waiting for review | 58% | 70,193 | 42% | 322,601 | 39% | 2,268,346 |
| Translated | 58% | 70,725 | 43% | 331,338 | 41% | 2,373,482 |
| Needs editing | 1% | 287 | 1% | 1,067 | 1% | 7,761 |
| Read-only | 0% | 0 | 0% | 0 | 0% | 0 |
| Failing checks | 1% | 831 | 1% | 9,320 | 1% | 69,405 |
| Strings with suggestions | 1% | 11 | 1% | 107 | 1% | 1,174 |
| Untranslated strings | 40% | 49,041 | 56% | 431,532 | 58% | 3,326,647 |
Quick numbers
and previous 30 days
Trends of last 30 days
+1%
Hosted words
+100%
+1%
Hosted strings
+100%
−1%
Translated
+59%
+60%
Contributors
+100%
|
Translation approved |
|
|
Translation added |
|
None
Resource updated |
The “
website_sale_renting_planning/i18n/ca.po” file was changed.
07/25/2026
|
None
String added in the repository |
|
None
Resource updated |
The “
sale_shopee/i18n/ca.po” file was changed.
07/25/2026
|
None
String added in the repository |
|
None
String added in the repository |
|
None
String added in the repository |
|
None
String added in the repository |
|
None
Resource updated |
The “
sale_lazada/i18n/ca.po” file was changed.
07/25/2026
|
None
<t t-set="is_online" t-value="'appointment_type_id' in object.event_id and object.event_id.appointment_type_id"/>
<t t-set="customer" t-value="object.event_id.find_partner_customer()"/>
<t t-set="target_responsible" t-value="object.partner_id == object.event_id.partner_id"/>
<t t-set="target_customer" t-value="object.partner_id == customer"/>
<t t-set="recurrent" t-value="object.recurrence_id and not ctx.get('calendar_template_ignore_recurrence')"/>
<t t-set="organizer" t-value="object.event_id.user_id"/>
<h1 style="font-size: 18px; font-weight: bold; color: #374151; margin-bottom: 28px;">
Date Updated
<img src="/calendar/static/src/img/sync.png" style="border:0; width: 24px; height: 24px; margin-left: 10px; text-decoration:none; vertical-align: bottom;"/>
</h1>
<p style="margin: 0;">
<span style="display: block; margin-bottom: 8px;">Hello <t t-out="object.common_name or ''">Ready Mat</t>,</span>
<t t-if="is_online and target_responsible">
<t t-if="customer">
Your appointment with <t t-out="customer.name or ''">Jesse Brown</t> has been updated:
</t>
<t t-else="">
Your appointment has been updated:
</t>
<strong t-out="object.event_id.appointment_type_id.name or ''">Schedule a Demo</strong> is now scheduled for
<t t-out="object.event_id.get_display_time_tz(tz=object.partner_id.tz) or ''">05/04/2021 at (11:00:00 To 11:30:00) (Europe/Brussels)</t>.
</t>
<t t-elif="is_online and target_customer">
Your appointment <strong t-out="object.event_id.appointment_type_id.name or ''"/> <t t-if="organizer">with </t><t t-out="organizer.partner_id.name or ''">Colleen Diaz</t>
is now scheduled for <t t-out="object.event_id.get_display_time_tz(tz=object.partner_id.tz) or ''">05/04/2021 at (11:00:00 To 11:30:00) (Europe/Brussels)</t>.
</t>
<t t-else="">
The date of the meeting <strong t-out="object.event_id.name or ''">Follow-up for Project proposal</strong> <t t-if="organizer">created by </t><t t-out="organizer.partner_id.name or ''">Colleen Diaz</t> is now scheduled for
<t t-out="object.event_id.get_display_time_tz(tz=object.partner_id.tz) or ''">05/04/2021 at (11:00:00 To 11:30:00) (Europe/Brussels)</t>.
</t>
</p>
<div style="text-align: center; padding: 16px 0px 16px 0px;">
<a t-attf-href="/calendar/meeting/view?token={{ object.access_token }}&id={{ object.event_id.id }}" t-attf-style="display: inline-block; margin-left: 12px; padding: 7px 14px; color: #111827; text-decoration: none; background-color: #E7E9ED; border-radius: 3px;">
View</a>
</div>
<div style="margin: 16px 0 0;">
<h2 t-attf-style="margin-bottom: 12px; font-size: 14px; font-weight: bold; color: {{user.company_id.email_secondary_color or '#875A7B'}};">Details</h2>
<table cellpadding="0" cellspacing="0" border="0" style="font-size: 13px; color: #374151;">
<tr>
<td style="width: 100px; color: #676F7B;">Date & Time</td>
<td style="font-weight: bold;">
<t t-out="format_datetime(dt=object.event_id.start, tz=object.mail_tz if not object.event_id.allday else None, dt_format='EEEE', lang_code=object.env.lang) or ''">Tuesday</t>
<t t-out="format_datetime(dt=object.event_id.start, tz=object.mail_tz if not object.event_id.allday else None, dt_format='d', lang_code=object.env.lang) or ''">4</t>
<t t-out="format_datetime(dt=object.event_id.start, tz=object.mail_tz if not object.event_id.allday else None, dt_format='MMMM y', lang_code=object.env.lang) or ''">May 2021</t>
<t t-if="not object.event_id.allday">
<t t-out="format_time(time=object.event_id.start, tz=object.mail_tz, time_format='short', lang_code=object.env.lang) or ''">11:00 AM</t>
<t t-if="object.mail_tz">
<span style="font-size: 11px; font-weight: normal;">
(<t t-out="object.mail_tz or ''">Europe/Brussels</t>)
</span>
</t>
</t>
</td>
</tr>
<tr t-if="recurrent">
<td style="width: 100px; padding-top: 6px; color: #676F7B;">When</td>
<td style="padding-top: 6px;"><t t-out="object.recurrence_id.get_recurrence_name() or ''">Every 1 Weeks, for 3 events</t></td>
</tr>
<tr t-if="not object.event_id.allday and object.event_id.duration">
<td style="width: 100px; padding-top: 6px; color: #676F7B;">Duration</td>
<td style="padding-top: 6px;"><t t-out="('%dH%02d' % (object.event_id.duration,round(object.event_id.duration*60)%60)) or ''">0H30</t></td>
</tr>
<tr t-if="object.event_id.location">
<td style="width: 100px; padding-top: 6px; color: #676F7B; vertical-align: top;">Location</td>
<td style="padding-top: 6px;">
<t t-out="object.event_id.location or ''">Bruxelles</t>
<a target="_blank" t-if="not is_online or is_online and object.event_id.location != object.event_id.appointment_type_id.location_id.name" t-attf-href="http://maps.google.com/maps?oi=map&q={{object.event_id.location}}" style="margin-left: 12px; font-size: 12px; color: #008f8c; text-decoration: underline;">View Map</a>
</td>
</tr>
<tr t-if="object.event_id.videocall_location">
<td style="width: 100px; padding-top: 6px; color: #676F7B;">
<t t-if="object.event_id.videocall_source == 'discuss'">Join with</t>
<t t-else="">Join</t>
</td>
<td style="padding-top: 6px;">
<a t-att-href="object.event_id.videocall_location" target="_blank" style="color: #008f8c;">
<t t-if="object.event_id.videocall_source == 'discuss'">Odoo Discuss</t>
<t t-else="">Video meeting</t>
</a>
</td>
</tr>
</table>
</div>
<div style="margin: 32px 0 0;">
<h2 t-attf-style="margin-bottom: 12px; font-size: 14px; font-weight: bold; color: {{user.company_id.email_secondary_color or '#875A7B'}};">Attendees</h2>
<div t-foreach="object.event_id.attendee_ids" t-as="attendee" style="margin-bottom: 5px;">
<img t-if="attendee.state" t-attf-src="/calendar/static/src/img/state_{{ attendee.state }}.png" style="border:0; width: 15px; height: 15px; vertical-align: text-bottom;"/>
<t t-if="attendee != object">
<span style="margin-left: 5px;" t-out="attendee.common_name or ''">Mitchell Admin</span>
</t>
<t t-else="">
<span style="margin-left: 5px;">You</span>
</t>
</div>
</div>
<div t-if="not is_html_empty(object.event_id.description)" style="margin: 32px 0 0;">
<h2 t-attf-style="margin-bottom: 12px; font-size: 14px; font-weight: bold; color: {{user.company_id.email_secondary_color or '#875A7B'}};">Description of the event</h2>
<t t-out="object.event_id.description">Internal meeting for discussion for new pricing for product and services.</t>
</div>
<p style="margin: 32px 0 0;">
Thank you!
<t t-if="organizer.signature">
<span style="display: block; margin-top: 8px;"><t t-out="organizer.signature or ''">Mitchell Admin</t></span>
</t>
</p>
</div>
<t t-set="is_online" t-value="'appointment_type_id' in object.event_id and object.event_id.appointment_type_id"/>
<t t-set="customer" t-value="object.event_id.find_partner_customer()"/>
<t t-set="target_responsible" t-value="object.partner_id == object.event_id.partner_id"/>
<t t-set="target_customer" t-value="object.partner_id == customer"/>
<t t-set="recurrent" t-value="object.recurrence_id and not ctx.get('calendar_template_ignore_recurrence')"/>
<t t-set="organizer" t-value="object.event_id.user_id"/>
<h1 style="font-size: 18px; font-weight: bold; color: #374151; margin-bottom: 28px;">
Data actualitzada
<img src="/calendar/static/src/img/sync.png" style="border:0; width: 24px; height: 24px; margin-left: 10px; text-decoration:none; vertical-align: bottom;"/>
</h1>
<p style="margin: 0;">
<span style="display: block; margin-bottom: 8px;">Hola, <t t-out="object.common_name or ''">Ready Mat</t>:</span>
<t t-if="is_online and target_responsible">
<t t-if="customer">
La teva reunió amb <t t-out="customer.name or ''">Jesse Brown</t> ha estat actualitzada:
</t>
<t t-else="">
La teva reunió s'ha actualitzat:
</t>
<strong t-out="object.event_id.appointment_type_id.name or ''">Programar una demostració</strong> ara està programada pel
<t t-out="object.event_id.get_display_time_tz(tz=object.partner_id.tz) or ''">04/05/2021 d'11:00:00 a 11:30:00 h (Europa/Brussel·les)</t>.
</t>
<t t-elif="is_online and target_customer">
La reunió <strong t-out="object.event_id.appointment_type_id.name or ''"/> <t t-if="organizer">amb </t><t t-out="organizer.partner_id.name or ''">Colleen Diaz</t>
ara està programada pel <t t-out="object.event_id.get_display_time_tz(tz=object.partner_id.tz) or ''">04/05/2021 d'11:00:00 a 11:30:00 h (Europa/Brussel·les)</t>.
</t>
<t t-else="">
La data de la reunió, <strong t-out="object.event_id.name or ''">Seguiment de la proposta del projecte,</strong> <t t-if="organizer">creada per </t><t t-out="organizer.partner_id.name or ''">Colleen Diaz</t> ara està programada pel
<t t-out="object.event_id.get_display_time_tz(tz=object.partner_id.tz) or ''">04/05/2021 d'11:00:00 a 11:30:00 h (Europa/Brussel·les)</t>.
</t>
</p>
<div style="text-align: center; padding: 16px 0px 16px 0px;">
<a t-attf-href="/calendar/meeting/view?token={{ object.access_token }}&id={{ object.event_id.id }}" t-attf-style="display: inline-block; margin-left: 12px; padding: 7px 14px; color: #111827; text-decoration: none; background-color: #E7E9ED; border-radius: 3px;">
Veure</a>
</div>
<div style="margin: 16px 0 0;">
<h2 t-attf-style="margin-bottom: 12px; font-size: 14px; font-weight: bold; color: {{user.company_id.email_secondary_color or '#875A7B'}};">Detalls</h2>
<table cellpadding="0" cellspacing="0" border="0" style="font-size: 13px; color: #374151;">
<tr>
<td style="width: 100px; color: #676F7B;">Data i hora</td>
<td style="font-weight: bold;">
<t t-out="format_datetime(dt=object.event_id.start, tz=object.mail_tz if not object.event_id.allday else None, dt_format='EEEE', lang_code=object.env.lang) or ''">dimarts</t>
<t t-out="format_datetime(dt=object.event_id.start, tz=object.mail_tz if not object.event_id.allday else None, dt_format='d', lang_code=object.env.lang) or ''">4</t>
<t t-out="format_datetime(dt=object.event_id.start, tz=object.mail_tz if not object.event_id.allday else None, dt_format='MMMM y', lang_code=object.env.lang) or ''">de maig de 2021</t>
<t t-if="not object.event_id.allday">
<t t-out="format_time(time=object.event_id.start, tz=object.mail_tz, time_format='short', lang_code=object.env.lang) or ''">11:00 h</t>
<t t-if="object.mail_tz">
<span style="font-size: 11px; font-weight: normal;">
(<t t-out="object.mail_tz or ''">Europa/Brussel·les</t>)
</span>
</t>
</t>
</td>
</tr>
<tr t-if="recurrent">
<td style="width: 100px; padding-top: 6px; color: #676F7B;">Quan?</td>
<td style="padding-top: 6px;"><t t-out="object.recurrence_id.get_recurrence_name() or ''">setmanalment, 3 esdeveniments</t></td>
</tr>
<tr t-if="not object.event_id.allday and object.event_id.duration">
<td style="width: 100px; padding-top: 6px; color: #676F7B;">Durada</td>
<td style="padding-top: 6px;"><t t-out="('%dH%02d' % (object.event_id.duration,round(object.event_id.duration*60)%60)) or ''">0 h 30 min</t></td>
</tr>
<tr t-if="object.event_id.location">
<td style="width: 100px; padding-top: 6px; color: #676F7B; vertical-align: top;">Ubicació</td>
<td style="padding-top: 6px;">
<t t-out="object.event_id.location or ''">Brussel·les</t>
<a target="_blank" t-if="not is_online or is_online and object.event_id.location != object.event_id.appointment_type_id.location_id.name" t-attf-href="http://maps.google.com/maps?oi=map&q={{object.event_id.location}}" style="margin-left: 12px; font-size: 12px; color: #008f8c; text-decoration: underline;">Veure mapa</a>
</td>
</tr>
<tr t-if="object.event_id.videocall_location">
<td style="width: 100px; padding-top: 6px; color: #676F7B;">
<t t-if="object.event_id.videocall_source == 'discuss'">Unir-se amb</t>
<t t-else="">Unir-se</t>
</td>
<td style="padding-top: 6px;">
<a t-att-href="object.event_id.videocall_location" target="_blank" style="color: #008f8c;">
<t t-if="object.event_id.videocall_source == 'discuss'">Converses d'Odoo</t>
<t t-else="">Videotrucada</t>
</a>
</td>
</tr>
</table>
</div>
<div style="margin: 32px 0 0;">
<h2 t-attf-style="margin-bottom: 12px; font-size: 14px; font-weight: bold; color: {{user.company_id.email_secondary_color or '#875A7B'}};">Participants</h2>
<div t-foreach="object.event_id.attendee_ids" t-as="attendee" style="margin-bottom: 5px;">
<img t-if="attendee.state" t-attf-src="/calendar/static/src/img/state_{{ attendee.state }}.png" style="border:0; width: 15px; height: 15px; vertical-align: text-bottom;"/>
<t t-if="attendee != object">
<span style="margin-left: 5px;" t-out="attendee.common_name or ''">Mitchell Admin</span>
</t>
<t t-else="">
<span style="margin-left: 5px;">Tu</span>
</t>
</div>
</div>
<div t-if="not is_html_empty(object.event_id.description)" style="margin: 32px 0 0;">
<h2 t-attf-style="margin-bottom: 12px; font-size: 14px; font-weight: bold; color: {{user.company_id.email_secondary_color or '#875A7B'}};">Descripció de l'esdeveniment</h2>
<t t-out="object.event_id.description">Reunió interna per parlar sobre els nous preus dels productes i serveis.</t>
</div>
<p style="margin: 32px 0 0;">
Gràcies!
<t t-if="organizer.signature">
<span style="display: block; margin-top: 8px;"><t t-out="organizer.signature or ''">Mitchell Admin</t></span>
</t>
</p>
</div>