import logging from odoo.http import request _logger = logging.getLogger(__name__) def _get_detected_language(self, request_obj=None, **post): req = request_obj or request url_lang = req.params.get("lang") post_lang = post.get("lang") cookie_lang = req.httprequest.cookies.get("lang") context_lang = req.env.context.get("lang") user_lang = req.env.user.lang or "es_ES" detected = None if url_lang: detected = url_lang elif post_lang: detected = post_lang elif cookie_lang: detected = cookie_lang elif context_lang: detected = context_lang else: detected = user_lang _logger.info( "🌐 Language detection: url=%s, post=%s, cookie=%s, context=%s, user=%s → DETECTED=%s", url_lang, post_lang, cookie_lang, context_lang, user_lang, detected, ) return detected def _get_translated_labels(self, lang=None, request_obj=None): req = request_obj or request if lang is None: lang = _get_detected_language(self, request_obj=req) env_lang = req.env(context=dict(req.env.context, lang=lang)) 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 } return labels def _translate_labels(self, labels_dict, lang): # Minimal fallback translator kept here; prefers env translations translations = { "es_ES": {}, } lang_translations = translations.get(lang, {}) translated = {} for key, english_label in labels_dict.items(): translated[key] = lang_translations.get(english_label, english_label) _logger.info( "[_translate_labels] Language: %s, Translated %d labels", lang, len(translated) ) return translated