[IMP] website_sale_aplicoop: improve i18n label fallbacks and response parsing
Add hardcoded fallback translations for es/eu when PO-based translation returns the source string unchanged. Expand labels dict with all keys needed by the frontend. Fix JSON response parsing in template (data.result || data). Add js_translations keys. Add pot file for stock_picking_batch_custom. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
647438e012
commit
5eea3e2a23
7 changed files with 346 additions and 20 deletions
|
|
@ -43,15 +43,89 @@ def _get_translated_labels(self, lang=None, request_obj=None):
|
|||
lang = _get_detected_language(self, request_obj=req)
|
||||
|
||||
env_lang = req.env(context=dict(req.env.context, lang=lang))
|
||||
lang_code = (lang or "").split("_")[0]
|
||||
|
||||
fallbacks = {
|
||||
"es": {
|
||||
"Browse Product Categories": "Explorar categorías de productos",
|
||||
"Save Draft": "Grabar pedido",
|
||||
"Save order as draft": "Grabar pedido",
|
||||
"Order saved as draft": "Pedido grabado",
|
||||
"This order's cart is empty.": "El carrito de este pedido está vacío.",
|
||||
"This order's cart is empty": "El carrito de este pedido está vacío",
|
||||
},
|
||||
"eu": {
|
||||
"Browse Product Categories": "Produktu kategoriak arakatu",
|
||||
"Save Draft": "Eskaera gorde",
|
||||
"Save order as draft": "Eskaera gorde",
|
||||
"Order saved as draft": "Eskaera gordeta",
|
||||
"This order's cart is empty.": "Eskaera honen saskia hutsik dago.",
|
||||
"This order's cart is empty": "Eskaera honen saskia hutsik dago",
|
||||
},
|
||||
}
|
||||
|
||||
def tr(source):
|
||||
translated = env_lang._(source)
|
||||
if translated == source:
|
||||
translated = fallbacks.get(lang_code, {}).get(source, translated)
|
||||
return translated
|
||||
|
||||
labels = {
|
||||
"product": env_lang._("Product"),
|
||||
"quantity": env_lang._("Quantity"),
|
||||
"price": env_lang._("Price"),
|
||||
"subtotal": env_lang._("Subtotal"),
|
||||
"total": env_lang._("Total"),
|
||||
"empty": env_lang._("This order's cart is empty."),
|
||||
# ... keep minimal set here; website_sale.py will fall back if needed
|
||||
"product": tr("Product"),
|
||||
"quantity": tr("Quantity"),
|
||||
"price": tr("Price"),
|
||||
"subtotal": tr("Subtotal"),
|
||||
"total": tr("Total"),
|
||||
"empty": tr("This order's cart is empty."),
|
||||
"empty_cart": tr("This order's cart is empty."),
|
||||
"browse_categories": tr("Browse Product Categories"),
|
||||
"all_categories": tr("Browse Product Categories"),
|
||||
"save_draft": tr("Save Draft"),
|
||||
"save_order_as_draft": tr("Save order as draft"),
|
||||
"order_saved_as_draft": tr("Order saved as draft"),
|
||||
"save_cart": tr("Save Cart"),
|
||||
"reload_cart": tr("Reload Cart"),
|
||||
"proceed_to_checkout": tr("Proceed to Checkout"),
|
||||
"confirm_order": tr("Confirm Order"),
|
||||
"back_to_cart": tr("Back to Cart"),
|
||||
"remove_item": tr("Remove Item"),
|
||||
"cancel": tr("Cancel"),
|
||||
"confirm": tr("Confirm"),
|
||||
"confirmation": tr("Confirmation"),
|
||||
"items": tr("items"),
|
||||
"items_placeholder": tr("items"),
|
||||
"added_to_cart": tr("added to cart"),
|
||||
"cart_restored": tr("Your cart has been restored"),
|
||||
"order_loaded": tr("Order loaded"),
|
||||
"invalid_quantity": tr("Please enter a valid quantity"),
|
||||
"connection_error": tr("Connection error"),
|
||||
"error_unknown": tr("Unknown error"),
|
||||
"error_saving_draft": tr("Error saving cart"),
|
||||
"error_loading_draft": tr("Error loading draft"),
|
||||
"error_processing_response": tr("Error processing response"),
|
||||
"draft_saved": tr("Order saved as draft"),
|
||||
"draft_saved_success": tr("Cart saved as draft successfully"),
|
||||
"draft_loaded_success": tr("Draft order loaded successfully"),
|
||||
"reload_draft_confirm": tr(
|
||||
"Are you sure you want to load your last saved draft?"
|
||||
),
|
||||
"reload_draft_replace": tr("This will replace the current items in your cart"),
|
||||
"reload_draft_with": tr("with the saved draft."),
|
||||
"clear_cart_confirm": tr(
|
||||
"Are you sure you want to clear the cart? This will also cancel any saved draft order."
|
||||
),
|
||||
"cart_cleared": tr("Cart cleared"),
|
||||
"draft_cancelled": tr("draft order cancelled"),
|
||||
"home_delivery": tr("Home Delivery"),
|
||||
"delivery_information": tr("Delivery Information"),
|
||||
"delivery_info_template": tr(
|
||||
"Delivery Information: Your order will be delivered at {pickup_day} {pickup_date}"
|
||||
),
|
||||
"important": tr("Important"),
|
||||
"confirm_order_warning": tr(
|
||||
"Once you confirm this order, you will not be able to modify it. Please review carefully before confirming."
|
||||
),
|
||||
"pickup_day_label": tr("Pickup Day"),
|
||||
}
|
||||
|
||||
return labels
|
||||
|
|
|
|||
|
|
@ -308,7 +308,7 @@ msgstr "Quincenal"
|
|||
#. odoo-python
|
||||
#: code:addons/website_sale_aplicoop/models/js_translations.py:0
|
||||
msgid "Browse Product Categories"
|
||||
msgstr "Explorar Categorías de Productos"
|
||||
msgstr "Explorar categorías de productos"
|
||||
|
||||
#. module: website_sale_aplicoop
|
||||
#: model_terms:ir.ui.view,arch_db:website_sale_aplicoop.eskaera_page
|
||||
|
|
@ -725,7 +725,8 @@ msgid ""
|
|||
"Delivery Information: Your order will be delivered at {pickup_day} "
|
||||
"{pickup_date}"
|
||||
msgstr ""
|
||||
"Información de Entrega en Domicilio: Tu pedido será entregado el {pickup_day} {pickup_date}"
|
||||
"Información de Entrega en Domicilio: Tu pedido será entregado el "
|
||||
"{pickup_day} {pickup_date}"
|
||||
|
||||
#. module: website_sale_aplicoop
|
||||
#: model:ir.model.fields,field_description:website_sale_aplicoop.field_group_order__delivery_notice
|
||||
|
|
@ -1535,7 +1536,7 @@ msgstr "Referencia del Pedido"
|
|||
#. odoo-python
|
||||
#: code:addons/website_sale_aplicoop/controllers/website_sale.py:0
|
||||
msgid "Order saved as draft"
|
||||
msgstr "Pedido guardado como borrador"
|
||||
msgstr "Pedido grabado"
|
||||
|
||||
#. module: website_sale_aplicoop
|
||||
#: model:product.ribbon,name:website_sale_aplicoop.out_of_stock_ribbon
|
||||
|
|
@ -1884,7 +1885,7 @@ msgstr "Guardar Carrito"
|
|||
#. odoo-python
|
||||
#: code:addons/website_sale_aplicoop/models/js_translations.py:0
|
||||
msgid "Save as Draft"
|
||||
msgstr "Guardar como Borrador"
|
||||
msgstr "Grabar pedido"
|
||||
|
||||
#. module: website_sale_aplicoop
|
||||
#. odoo-python
|
||||
|
|
@ -2263,3 +2264,13 @@ msgstr "con el borrador guardado."
|
|||
#: model_terms:ir.ui.view,arch_db:website_sale_aplicoop.eskaera_shop_products
|
||||
msgid "{{ product.name }}"
|
||||
msgstr "{{ product.name }}"
|
||||
|
||||
#. module: website_sale_aplicoop
|
||||
#: code:addons/website_sale_aplicoop/models/js_translations.py:0
|
||||
msgid "Save Draft"
|
||||
msgstr "Grabar pedido"
|
||||
|
||||
#. module: website_sale_aplicoop
|
||||
#: code:addons/website_sale_aplicoop/models/js_translations.py:0
|
||||
msgid "Save order as draft"
|
||||
msgstr "Grabar pedido"
|
||||
|
|
|
|||
|
|
@ -309,7 +309,7 @@ msgstr "Bi-astean behin"
|
|||
#. odoo-python
|
||||
#: code:addons/website_sale_aplicoop/models/js_translations.py:0
|
||||
msgid "Browse Product Categories"
|
||||
msgstr "Produktu Kategoriak Arakatu"
|
||||
msgstr "Produktu kategoriak arakatu"
|
||||
|
||||
#. module: website_sale_aplicoop
|
||||
#: model_terms:ir.ui.view,arch_db:website_sale_aplicoop.eskaera_page
|
||||
|
|
@ -723,8 +723,8 @@ msgid ""
|
|||
"Delivery Information: Your order will be delivered at {pickup_day} "
|
||||
"{pickup_date}"
|
||||
msgstr ""
|
||||
"Etxean Entrega Informazioa: Zure eskaera honakoan entregatuko da {pickup_day} "
|
||||
"{pickup_date}"
|
||||
"Etxean Entrega Informazioa: Zure eskaera honakoan entregatuko da "
|
||||
"{pickup_day} {pickup_date}"
|
||||
|
||||
#. module: website_sale_aplicoop
|
||||
#: model:ir.model.fields,field_description:website_sale_aplicoop.field_group_order__delivery_notice
|
||||
|
|
@ -1533,7 +1533,7 @@ msgstr "Eskaera erreferentzia"
|
|||
#. odoo-python
|
||||
#: code:addons/website_sale_aplicoop/controllers/website_sale.py:0
|
||||
msgid "Order saved as draft"
|
||||
msgstr "Eskaera zirriborro gisa gordeta"
|
||||
msgstr "Eskaera gordeta"
|
||||
|
||||
#. module: website_sale_aplicoop
|
||||
#: model:product.ribbon,name:website_sale_aplicoop.out_of_stock_ribbon
|
||||
|
|
@ -1882,7 +1882,7 @@ msgstr "Saskia Gorde"
|
|||
#. odoo-python
|
||||
#: code:addons/website_sale_aplicoop/models/js_translations.py:0
|
||||
msgid "Save as Draft"
|
||||
msgstr "Zirriborro Gisa Gorde"
|
||||
msgstr "Eskaera gorde"
|
||||
|
||||
#. module: website_sale_aplicoop
|
||||
#. odoo-python
|
||||
|
|
@ -2047,14 +2047,14 @@ msgstr "Hurrengo ziklorako esleitutako bilketa-tartea (kalkulatua)"
|
|||
#: model_terms:ir.ui.view,arch_db:website_sale_aplicoop.eskaera_checkout_summary
|
||||
#: model_terms:ir.ui.view,arch_db:website_sale_aplicoop.eskaera_shop
|
||||
msgid "This order's cart is empty"
|
||||
msgstr "Eskaera honen saskia hutsean dago"
|
||||
msgstr "Eskaera honen saskia hutsik dago"
|
||||
|
||||
#. module: website_sale_aplicoop
|
||||
#. odoo-python
|
||||
#: code:addons/website_sale_aplicoop/controllers/website_sale_i18n.py:0
|
||||
#: code:addons/website_sale_aplicoop/models/js_translations.py:0
|
||||
msgid "This order's cart is empty."
|
||||
msgstr "Eskaera honen saskia hutsean dago."
|
||||
msgstr "Eskaera honen saskia hutsik dago."
|
||||
|
||||
#. module: website_sale_aplicoop
|
||||
#. odoo-python
|
||||
|
|
@ -2263,3 +2263,13 @@ msgstr "gordetako zirriborroarekin."
|
|||
#: model_terms:ir.ui.view,arch_db:website_sale_aplicoop.eskaera_shop_products
|
||||
msgid "{{ product.name }}"
|
||||
msgstr "{{ product.name }}"
|
||||
|
||||
#. module: website_sale_aplicoop
|
||||
#: code:addons/website_sale_aplicoop/models/js_translations.py:0
|
||||
msgid "Save Draft"
|
||||
msgstr "Eskaera gorde"
|
||||
|
||||
#. module: website_sale_aplicoop
|
||||
#: code:addons/website_sale_aplicoop/models/js_translations.py:0
|
||||
msgid "Save order as draft"
|
||||
msgstr "Eskaera gorde"
|
||||
|
|
|
|||
|
|
@ -35,6 +35,8 @@ def _register_translations():
|
|||
_("Remove Item")
|
||||
_("Add to Cart")
|
||||
_("Save as Draft")
|
||||
_("Save Draft")
|
||||
_("Save order as draft")
|
||||
_("Load Draft")
|
||||
_("Browse Product Categories")
|
||||
|
||||
|
|
|
|||
|
|
@ -601,7 +601,7 @@
|
|||
var tooltipMap = {
|
||||
"save-cart-btn": "save_cart",
|
||||
"reload-cart-btn": "reload_cart",
|
||||
"confirm-order-btn": "save_cart",
|
||||
"confirm-order-btn": "save_draft",
|
||||
"remove-from-cart": "remove_item",
|
||||
};
|
||||
|
||||
|
|
|
|||
|
|
@ -83,7 +83,8 @@
|
|||
}
|
||||
})
|
||||
.then(response => response.json())
|
||||
.then(labels => {
|
||||
.then(data => {
|
||||
var labels = data.result || data;
|
||||
//console.log('[eskaera_page] Labels received:', labels);
|
||||
|
||||
// Update category selector first option text
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue