first commit

This commit is contained in:
root
2026-03-14 09:42:12 +00:00
commit 0adbd20c2c
10991 changed files with 1646955 additions and 0 deletions

View File

@@ -0,0 +1,6 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from . import routes
__all__ = [routes]

View File

@@ -0,0 +1,8 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from trytond.model.exceptions import ValidationError
class ImageValidationError(ValidationError):
pass

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.category,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr ""
msgctxt "field:product.image,template:"
msgid "Product"
msgstr ""
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr ""
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.product,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.template,images:"
msgid "Images"
msgstr ""
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr ""
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr ""
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr ""
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr ""

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr "URL imatge"
msgctxt "field:product.category,images:"
msgid "Images"
msgstr "Imatges"
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr "Memòria cau"
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr "Categoria"
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr "Descripció"
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr "Imatge"
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr "ID de la imatge"
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr "Categoria Imatge"
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr "Altura"
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr "Imatge"
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr "ID de la imatge"
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr "Amplada"
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr "Memòria cau"
msgctxt "field:product.image,description:"
msgid "Description"
msgstr "Descripció"
msgctxt "field:product.image,image:"
msgid "Image"
msgstr "Imatge"
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr "ID de la imatge"
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr "Variant"
msgctxt "field:product.image,template:"
msgid "Product"
msgstr "Producte"
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr "Altura"
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr "Imatge"
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr "ID de la imatge"
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr "Imatge del producte"
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr "Amplada"
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr "URL de la imatge"
msgctxt "field:product.product,images:"
msgid "Images"
msgstr "Imatges"
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr "URL de la imatge"
msgctxt "field:product.template,images:"
msgid "Images"
msgstr "Imatges"
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr "La mida d'una imatge en cache ha de ser única."
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr "No es pot obrir o identificar la imatge del producte."
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr "Imatge de la categoria del producte"
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr "Cache imatge categoría"
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr "Imatge del producte"
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr "Cache de la imatge del producte"

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.category,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr ""
msgctxt "field:product.image,template:"
msgid "Product"
msgstr ""
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr ""
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.product,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.template,images:"
msgid "Images"
msgstr ""
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr ""
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr ""
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr ""
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr ""

View File

@@ -0,0 +1,138 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr "Bild-URL"
msgctxt "field:product.category,images:"
msgid "Images"
msgstr "Bilder"
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr "Cache"
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr "Kategorie"
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr "Beschreibung"
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr "Bild"
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr "Bild-ID"
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr "Kategoriebild"
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr "Höhe"
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr "Bild"
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr "Bild-ID"
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr "Breite"
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr "Cache"
msgctxt "field:product.image,description:"
msgid "Description"
msgstr "Beschreibung"
msgctxt "field:product.image,image:"
msgid "Image"
msgstr "Bild"
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr "Bild ID"
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr "Variante"
msgctxt "field:product.image,template:"
msgid "Product"
msgstr "Artikel"
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr "Höhe"
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr "Bild"
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr "Bild ID"
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr "Artikelbild"
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr "Breite"
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr "Bild-URL"
msgctxt "field:product.product,images:"
msgid "Images"
msgstr "Bilder"
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr "Bild-URL"
msgctxt "field:product.template,images:"
msgid "Images"
msgstr "Bilder"
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
"Die Größe für zwischengespeicherte Bilder kann nur einmal vergeben werden."
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
"Das für den Artikel festgelegte Bild kann nicht geöffnet oder das Bildformat"
" nicht erkannt werden."
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr "Artikelkategorie Bild"
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr "Artikelkategorie Bild Cache"
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr "Artikelbild"
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr "Artikelbild Cache"

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr "URL Imagen"
msgctxt "field:product.category,images:"
msgid "Images"
msgstr "Imágenes"
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr "Caché"
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr "Categoría"
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr "Descripción"
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr "Imagen"
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr "ID de la Imagen"
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr "Imagen Categoría"
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr "Alto"
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr "Imagen"
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr "ID de la Imagen"
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr "Ancho"
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr "Caché"
msgctxt "field:product.image,description:"
msgid "Description"
msgstr "Descripción"
msgctxt "field:product.image,image:"
msgid "Image"
msgstr "Imagen"
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr "ID Imagen"
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr "Variante"
msgctxt "field:product.image,template:"
msgid "Product"
msgstr "Producto"
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr "Alto"
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr "Imagen"
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr "ID Imagen"
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr "Imagen producto"
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr "Ancho"
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr "URL Imagen"
msgctxt "field:product.product,images:"
msgid "Images"
msgstr "Imágenes"
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr "URL Imagen"
msgctxt "field:product.template,images:"
msgid "Images"
msgstr "Imágenes"
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr "El tamaño de una imagen en cache debe ser único."
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr "No se puede abrir o identificar la imagen del producto."
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr "Imagen de categoría de producto"
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr "Caché imagen categoría"
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr "Imagen producto"
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr "Caché imagen producto"

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.category,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr ""
msgctxt "field:product.image,template:"
msgid "Product"
msgstr ""
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr ""
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.product,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.template,images:"
msgid "Images"
msgstr ""
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr ""
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr ""
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr ""
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr ""

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.category,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr ""
msgctxt "field:product.image,template:"
msgid "Product"
msgstr ""
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr ""
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.product,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.template,images:"
msgid "Images"
msgstr ""
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr ""
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr ""
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr ""
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr ""

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.category,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr ""
msgctxt "field:product.image,template:"
msgid "Product"
msgstr ""
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr ""
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.product,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.template,images:"
msgid "Images"
msgstr ""
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr ""
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr ""
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr ""
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr ""

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.category,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr ""
msgctxt "field:product.image,template:"
msgid "Product"
msgstr ""
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr ""
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.product,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.template,images:"
msgid "Images"
msgstr ""
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr ""
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr ""
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr ""
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr ""

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr "URL de l'image"
msgctxt "field:product.category,images:"
msgid "Images"
msgstr "Images"
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr "Cache"
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr "Catégorie"
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr "Description"
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr "Image"
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr "ID de l'image"
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr "Image de catégorie"
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr "Hauteur"
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr "Image"
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr "ID de l'image"
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr "Largeur"
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr "Cache"
msgctxt "field:product.image,description:"
msgid "Description"
msgstr "Description"
msgctxt "field:product.image,image:"
msgid "Image"
msgstr "Image"
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr "ID de l'image"
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr "Variante"
msgctxt "field:product.image,template:"
msgid "Product"
msgstr "Produit"
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr "Hauteur"
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr "Image"
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr "ID de l'image"
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr "Image du produit"
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr "Largeur"
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr "URL de l'image"
msgctxt "field:product.product,images:"
msgid "Images"
msgstr "Images"
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr "URL de l'image"
msgctxt "field:product.template,images:"
msgid "Images"
msgstr "Images"
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr "La taille de l'image mise en cache doit être unique."
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr "Impossible d'ouvrir ou d'identifier l''image mise pour le produit."
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr "Image de catégorie de produit"
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr "Cache d'image de catégorie de produit"
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr "Image du produit"
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr "Cache d'image de produit"

View File

@@ -0,0 +1,145 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
#, fuzzy
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr "Képek"
#, fuzzy
msgctxt "field:product.category,images:"
msgid "Images"
msgstr "Képek"
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
#, fuzzy
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr "Képek"
#, fuzzy
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr "Képek"
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
#, fuzzy
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr "Képek"
#, fuzzy
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr "Képek"
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr ""
msgctxt "field:product.image,template:"
msgid "Product"
msgstr "Termék"
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr "Termékkép"
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.product,images:"
msgid "Images"
msgstr "Képek"
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.template,images:"
msgid "Images"
msgstr "Képek"
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
#, fuzzy
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr "Termékkép"
#, fuzzy
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr "Termékkép"
#, fuzzy
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr "Termékkép"
#, fuzzy
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr "Termékkép"

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.category,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr ""
msgctxt "field:product.image,template:"
msgid "Product"
msgstr ""
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr ""
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.product,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.template,images:"
msgid "Images"
msgstr ""
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr ""
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr ""
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr ""
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr ""

View File

@@ -0,0 +1,136 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.category,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr ""
msgctxt "field:product.image,template:"
msgid "Product"
msgstr "Prodotto"
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr ""
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.product,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.template,images:"
msgid "Images"
msgstr ""
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr ""
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr ""
#, fuzzy
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr "Prodotto"
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr ""

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.category,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr ""
msgctxt "field:product.image,template:"
msgid "Product"
msgstr ""
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr ""
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.product,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.template,images:"
msgid "Images"
msgstr ""
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr ""
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr ""
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr ""
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr ""

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.category,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr ""
msgctxt "field:product.image,template:"
msgid "Product"
msgstr ""
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr ""
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.product,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.template,images:"
msgid "Images"
msgstr ""
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr ""
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr ""
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr ""
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr ""

View File

@@ -0,0 +1,136 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr "Afbeelding URL"
msgctxt "field:product.category,images:"
msgid "Images"
msgstr "Afbeeldingen"
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr "Cache"
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr "Categorie"
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr "Omschrijving"
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr "Afbeelding"
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr "Afbeelding ID"
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr "Categorie afbeelding"
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr "Hoogte"
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr "Afbeelding"
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr "Afbeelding ID"
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr "Breedte"
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr "Cache"
msgctxt "field:product.image,description:"
msgid "Description"
msgstr "Omschrijving"
msgctxt "field:product.image,image:"
msgid "Image"
msgstr "Afbeelding"
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr "Afbeeldings-ID"
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr "Variant"
msgctxt "field:product.image,template:"
msgid "Product"
msgstr "Product"
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr "Hoogte"
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr "Afbeelding"
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr "Afbeeldings-ID"
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr "Product afbeelding"
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr "Breedte"
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr "Afbeelding URL"
msgctxt "field:product.product,images:"
msgid "Images"
msgstr "Afbeeldingen"
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr "Afbeelding URL"
msgctxt "field:product.template,images:"
msgid "Images"
msgstr "Afbeeldingen"
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr "De grootte van de in de cache opgeslagen afbeelding moet uniek zijn."
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
"Kan de set met afbeeldingen voor het product niet openen of identificeren."
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr "Product categorie afbeelding"
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr "Product categorie afbeelding cache"
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr "Product afbeelding"
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr "Product afbeelding cache"

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.category,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr ""
msgctxt "field:product.image,template:"
msgid "Product"
msgstr ""
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr ""
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.product,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.template,images:"
msgid "Images"
msgstr ""
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr ""
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr ""
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr ""
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr ""

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr "URL da Imagem"
msgctxt "field:product.category,images:"
msgid "Images"
msgstr "Imagens"
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr "Cache"
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr "Categoria"
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr "Descrição"
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr "Imagem"
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr "ID da Imagem"
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr "Imagem da Categoria"
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr "Altura"
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr "Imagem"
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr "ID da Imagem"
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr "Largura"
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr "Cache"
msgctxt "field:product.image,description:"
msgid "Description"
msgstr "Descrição"
msgctxt "field:product.image,image:"
msgid "Image"
msgstr "Imagem"
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr "ID da Imagem"
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr "Variante"
msgctxt "field:product.image,template:"
msgid "Product"
msgstr "Produto"
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr "Altura"
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr "Imagem"
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr "ID da Imagem"
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr "Imagem do Produto"
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr "Largura"
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr "URL da Imagem"
msgctxt "field:product.product,images:"
msgid "Images"
msgstr "Imagens"
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr "URL da Imagem"
msgctxt "field:product.template,images:"
msgid "Images"
msgstr "Imagens"
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr "O tamanho das imagens no cache deve ser único."
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr "Imagem da Categoria"
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr "Imagem da Categoria, em Cache"
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr "Imagem do Produto"
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr "Imagem do Produto, em Cache"

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.category,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr ""
msgctxt "field:product.image,template:"
msgid "Product"
msgstr ""
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr ""
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.product,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.template,images:"
msgid "Images"
msgstr ""
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr ""
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr ""
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr ""
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr ""

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.category,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr ""
msgctxt "field:product.image,template:"
msgid "Product"
msgstr ""
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr ""
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.product,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.template,images:"
msgid "Images"
msgstr ""
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr ""
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr ""
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr ""
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr ""

View File

@@ -0,0 +1,147 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
#, fuzzy
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr "URL podobe"
#, fuzzy
msgctxt "field:product.category,images:"
msgid "Images"
msgstr "Podobe"
#, fuzzy
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr "Predpomnilnik"
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
#, fuzzy
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr "Podoba"
#, fuzzy
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr "ID podobe"
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
#, fuzzy
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr "Podoba"
#, fuzzy
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr "ID podobe"
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr "Predpomnilnik"
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr "Podoba"
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr "ID podobe"
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr "Različica"
msgctxt "field:product.image,template:"
msgid "Product"
msgstr "Izdelek"
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr "Podoba"
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr "ID podobe"
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr "Podoba produkta"
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr "URL podobe"
msgctxt "field:product.product,images:"
msgid "Images"
msgstr "Podobe"
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr "URL podobe"
msgctxt "field:product.template,images:"
msgid "Images"
msgstr "Podobe"
#, fuzzy
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr "Velikost podobe izdelka mora biti edinstvena."
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
#, fuzzy
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr "Podoba produkta"
#, fuzzy
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr "Predpomnilnik podobe izdelka"
#, fuzzy
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr "Podoba produkta"
#, fuzzy
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr "Predpomnilnik podobe izdelka"

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.category,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr ""
msgctxt "field:product.image,template:"
msgid "Product"
msgstr ""
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr ""
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.product,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.template,images:"
msgid "Images"
msgstr ""
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr ""
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr ""
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr ""
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr ""

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.category,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr ""
msgctxt "field:product.image,template:"
msgid "Product"
msgstr ""
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr ""
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.product,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.template,images:"
msgid "Images"
msgstr ""
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr ""
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr ""
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr ""
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr ""

View File

@@ -0,0 +1,135 @@
#
msgid ""
msgstr "Content-Type: text/plain; charset=utf-8\n"
msgctxt "field:product.category,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.category,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.category.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.category.image,category:"
msgid "Category"
msgstr ""
msgctxt "field:product.category.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.category.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,category_image:"
msgid "Category Image"
msgstr ""
msgctxt "field:product.category.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.category.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.category.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.category.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.image,cache:"
msgid "Cache"
msgstr ""
msgctxt "field:product.image,description:"
msgid "Description"
msgstr ""
msgctxt "field:product.image,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image,product:"
msgid "Variant"
msgstr ""
msgctxt "field:product.image,template:"
msgid "Product"
msgstr ""
msgctxt "field:product.image.cache,height:"
msgid "Height"
msgstr ""
msgctxt "field:product.image.cache,image:"
msgid "Image"
msgstr ""
msgctxt "field:product.image.cache,image_id:"
msgid "Image ID"
msgstr ""
msgctxt "field:product.image.cache,product_image:"
msgid "Product Image"
msgstr ""
msgctxt "field:product.image.cache,width:"
msgid "Width"
msgstr ""
msgctxt "field:product.product,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.product,images:"
msgid "Images"
msgstr ""
msgctxt "field:product.template,image_url:"
msgid "Image URL"
msgstr ""
msgctxt "field:product.template,images:"
msgid "Images"
msgstr ""
msgctxt "model:ir.message,text:msg_image_cache_size_unique"
msgid "The size of cached image must be unique."
msgstr ""
msgctxt "model:ir.message,text:msg_product_image_error"
msgid "Can not open or identify the image set for the product."
msgstr ""
msgctxt "model:product.category.image,string:"
msgid "Product Category Image"
msgstr ""
msgctxt "model:product.category.image.cache,string:"
msgid "Product Category Image Cache"
msgstr ""
msgctxt "model:product.image,string:"
msgid "Product Image"
msgstr ""
msgctxt "model:product.image.cache,string:"
msgid "Product Image Cache"
msgstr ""

View File

@@ -0,0 +1,13 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
<record model="ir.message" id="msg_image_cache_size_unique">
<field name="text">The size of cached image must be unique.</field>
</record>
<record model="ir.message" id="msg_product_image_error">
<field name="text">Can not open or identify the image set for the product.</field>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,340 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import base64
import io
import math
from urllib.parse import quote, urlencode, urljoin
import PIL
import PIL.Image
import trytond.config as config
from trytond.i18n import gettext
from trytond.model import (
MatchMixin, ModelSQL, ModelView, Unique, fields, sequence_ordered)
from trytond.pool import PoolMeta
from trytond.pyson import Bool, Eval, If
from trytond.tools import slugify
from trytond.transaction import Transaction
from trytond.url import http_host
from trytond.wsgi import Base64Converter
from .exceptions import ImageValidationError
if config.getboolean('product', 'image_filestore', default=False):
file_id = 'image_id'
store_prefix = config.get('product', 'image_prefix', default=None)
else:
file_id = None
store_prefix = None
SIZE_MAX = config.getint('product', 'image_size_max', default=2048)
class ImageURLMixin:
__slots__ = ()
__image_url__ = None
images = None
image_url = fields.Function(fields.Char("Image URL"), '_get_image_url')
def _get_image_url(self, name):
return self.get_image_url(s=64)
def _image_url(self, base, **args):
if self.code and list(self.images_used):
url = urljoin(
base, quote('%(prefix)s/%(code)s/%(database)s/%(name)s' % {
'prefix': self.__image_url__,
'database': Base64Converter(None).to_url(
Transaction().database.name),
'code': quote(self.code, ''),
'name': slugify(self.name),
}))
if args:
size = args.pop('s', None)
width = args.pop('w', None)
height = args.pop('h', None)
index = args.pop('i', None)
id = args.pop('id', None)
args = {k: int(bool(v)) for k, v in args.items()}
if size:
args['s'] = size
if width:
args['w'] = width
if height:
args['h'] = height
if index is not None:
args['i'] = index
timestamp = int((self.write_date or self.create_date).timestamp())
args['t'] = (
base64.urlsafe_b64encode(timestamp.to_bytes(8, 'big'))
.decode().rstrip('='))
if id is not None:
args['id'] = id
url += '?' + urlencode(args)
return url
def get_image_url(self, _external=False, **args):
url_base = config.get(
'product', 'image_base', default='')
url_external_base = config.get(
'product', 'image_base', default=http_host())
return self._image_url(
url_external_base if _external else url_base, **args)
@property
def images_used(self):
yield from self.images
def get_images(self, pattern):
Image = self.__class__.images.get_target()
pattern = pattern.copy()
for key in set(pattern.keys()) - Image.allowed_match_keys():
del pattern[key]
pattern = {k: bool(int(v)) for k, v in pattern.items()}
for image in self.images_used:
if image.match(pattern, match_none=True):
yield image
class Template(ImageURLMixin, metaclass=PoolMeta):
__name__ = 'product.template'
__image_url__ = '/product/image'
images = fields.One2Many('product.image', 'template', "Images")
class Product(ImageURLMixin, metaclass=PoolMeta):
__name__ = 'product.product'
__image_url__ = '/product/variant/image'
images = fields.One2Many(
'product.image', 'product', "Images",
domain=[
('template', '=', Eval('template', -1)),
])
@property
def images_used(self):
yield from super().images_used
for image in self.template.images_used:
if not image.product:
yield image
class _ImageMixin:
__slots__ = ()
image = fields.Binary(
"Image", file_id=file_id, store_prefix=store_prefix, required=True)
image_id = fields.Char("Image ID", readonly=True)
class ImageMixin(_ImageMixin):
__slots__ = ()
cache = None
description = fields.Char("Description", translate=True)
@classmethod
def allowed_match_keys(cls):
return {'id'}
@classmethod
def preprocess_values(cls, mode, values):
values = super().preprocess_values(mode, values)
if values.get('image'):
values['image'] = cls.convert(values['image'])
return values
@classmethod
def on_modification(cls, mode, images, field_names=None):
super().on_modification(mode, images, field_names=field_names)
if mode == 'write':
cls.clear_cache(images)
@classmethod
def _round_size(cls, size):
return min((
2 ** math.ceil(math.log2(size)),
10 * math.ceil(size / 10) if size <= 100
else 50 * math.ceil(size / 50)))
def get(self, size=400):
if isinstance(size, int):
size = (size, size)
size = tuple(map(self._round_size, size))
if not all(0 < s <= SIZE_MAX for s in size):
raise ValueError(f"Invalid size {size}")
for cache in self.cache:
if (cache.width, cache.height) == size:
# re-instantiate to fetch only one image
return cache.__class__(cache.id).image
with Transaction().new_transaction():
cache = self._store_cache(size, self._resize(size))
# Save cache only if record is already committed
if self.__class__.search([('id', '=', self.id)]):
cache.save()
return cache.image
@classmethod
def convert(cls, image, **_params):
data = io.BytesIO()
try:
img = PIL.Image.open(io.BytesIO(image))
except PIL.UnidentifiedImageError as e:
raise ImageValidationError(gettext(
'product_image.msg_product_image_error'), str(e)) from e
img.thumbnail((SIZE_MAX, SIZE_MAX))
if img.mode != 'RGB':
img = img.convert('RGBA')
background = PIL.Image.new('RGBA', img.size, (255, 255, 255))
background.alpha_composite(img)
img = background.convert('RGB')
img.save(data, format='jpeg', optimize=True, dpi=(300, 300), **_params)
return data.getvalue()
def _resize(self, size=64, **_params):
data = io.BytesIO()
img = PIL.Image.open(io.BytesIO(self.image))
if isinstance(size, int):
size = (size, size)
img.thumbnail(size)
img.save(data, format='jpeg', optimize=True, dpi=(300, 300), **_params)
return data.getvalue()
def _store_cache(self, size, image):
Cache = self.__class__.cache.get_target()
if isinstance(size, int):
width = height = size
else:
width, height = size
return Cache(
image=image,
width=width,
height=height)
@classmethod
def clear_cache(cls, images):
Cache = cls.cache.get_target()
caches = [c for i in images for c in i.cache]
Cache.delete(caches)
class Image(ImageMixin, sequence_ordered(), ModelSQL, ModelView, MatchMixin):
__name__ = 'product.image'
template = fields.Many2One(
'product.template', "Product",
required=True, ondelete='CASCADE',
domain=[
If(Bool(Eval('product')),
('products', '=', Eval('product')),
()),
])
product = fields.Many2One(
'product.product', "Variant",
domain=[
If(Bool(Eval('template')),
('template', '=', Eval('template')),
()),
])
cache = fields.One2Many(
'product.image.cache', 'product_image', "Cache", readonly=True)
@classmethod
def __setup__(cls):
super().__setup__()
cls.__access__.add('template')
def _store_cache(self, size, image):
cache = super()._store_cache(size, image)
cache.product_image = self
return cache
class ImageCacheMixin(_ImageMixin):
__slots__ = ()
width = fields.Integer(
"Width", required=True,
domain=[
('width', '>', 0),
('width', '<=', SIZE_MAX),
])
height = fields.Integer(
"Height", required=True,
domain=[
('height', '>', 0),
('height', '<=', SIZE_MAX),
])
class ImageCache(ImageCacheMixin, ModelSQL):
__name__ = 'product.image.cache'
product_image = fields.Many2One(
'product.image', "Product Image", required=True, ondelete='CASCADE')
@classmethod
def __setup__(cls):
super().__setup__()
t = cls.__table__()
cls._sql_constraints += [
('dimension_unique', Unique(t, t.product_image, t.width, t.height),
'product_image.msg_image_cache_size_unique'),
]
@classmethod
def __register__(cls, module):
cursor = Transaction().connection.cursor()
table = cls.__table__()
table_h = cls.__table_handler__(module)
super().__register__(module)
# Migration from 7.0: split size into width and height
table_h.drop_constraint('size_unique')
if table_h.column_exist('size'):
cursor.execute(*table.update(
[table.width, table.height],
[table.size, table.size]))
table_h.drop_column('size')
class Category(ImageURLMixin, metaclass=PoolMeta):
__name__ = 'product.category'
__image_url__ = '/product-category/image'
images = fields.One2Many('product.category.image', 'category', "Images")
class CategoryImage(
ImageMixin, sequence_ordered(), ModelSQL, ModelView, MatchMixin):
__name__ = 'product.category.image'
category = fields.Many2One(
'product.category', "Category",
required=True, ondelete='CASCADE')
cache = fields.One2Many(
'product.category.image.cache', 'category_image', "Cache",
readonly=True)
@classmethod
def __setup__(cls):
super().__setup__()
cls.__access__.add('category')
def _store_cache(self, size, image):
cache = super()._store_cache(size, image)
cache.category_image = self
return cache
class CategoryImageCache(ImageCacheMixin, ModelSQL):
__name__ = 'product.category.image.cache'
category_image = fields.Many2One(
'product.category.image', "Category Image", required=True,
ondelete='CASCADE')
@classmethod
def __setup__(cls):
super().__setup__()
t = cls.__table__()
cls._sql_constraints += [
('dimension_unique',
Unique(t, t.category_image, t.width, t.height),
'product_image.msg_image_cache_size_unique'),
]

View File

@@ -0,0 +1,66 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tryton>
<data>
<record model="ir.ui.view" id="template_view_list">
<field name="model">product.template</field>
<field name="inherit" ref="product.template_view_tree"/>
<field name="name">template_list</field>
</record>
<record model="ir.ui.view" id="template_view_form">
<field name="model">product.template</field>
<field name="inherit" ref="product.template_view_form"/>
<field name="name">template_form</field>
</record>
<record model="ir.ui.view" id="image_view_list">
<field name="model">product.image</field>
<field name="type">tree</field>
<field name="name">image_list</field>
</record>
<record model="ir.ui.view" id="image_view_form">
<field name="model">product.image</field>
<field name="type">form</field>
<field name="name">image_form</field>
</record>
<record model="ir.ui.view" id="image_view_list_form">
<field name="model">product.image</field>
<field name="type">list-form</field>
<field name="name">image_form</field>
</record>
<record model="ir.ui.view" id="category_view_list">
<field name="model">product.category</field>
<field name="inherit" ref="product.category_view_list"/>
<field name="name">category_list</field>
</record>
<record model="ir.ui.view" id="category_view_form">
<field name="model">product.category</field>
<field name="inherit" ref="product.category_view_form"/>
<field name="name">category_form</field>
</record>
<record model="ir.ui.view" id="category_image_view_list">
<field name="model">product.category.image</field>
<field name="type">tree</field>
<field name="name">category_image_list</field>
</record>
<record model="ir.ui.view" id="category_image_view_form">
<field name="model">product.category.image</field>
<field name="type">form</field>
<field name="name">category_image_form</field>
</record>
<record model="ir.ui.view" id="category_image_view_list_form">
<field name="model">product.category.image</field>
<field name="type">list-form</field>
<field name="name">category_image_form</field>
</record>
</data>
</tryton>

View File

@@ -0,0 +1,96 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
from urllib.parse import unquote
import trytond.config as config
from trytond.protocols.wrappers import (
HTTPStatus, Response, abort, with_pool, with_transaction)
from trytond.wsgi import app
@app.route(
'/product/image/<code>/<base64:database_name>',
methods={'GET'})
@app.route(
'/product/image/<code>/<base64:database_name>/<name>',
methods={'GET'})
@with_pool
@with_transaction()
def product_image(request, pool, code, name=None):
Template = pool.get('product.template')
try:
template, = Template.search([
('code', '=', unquote(code)),
])
except ValueError:
abort(HTTPStatus.NOT_FOUND)
return _image(request, pool, template)
@app.route(
'/product/variant/image/<code>/<base64:database_name>',
methods={'GET'})
@app.route(
'/product/variant/image/<code>/<base64:database_name>/<name>',
methods={'GET'})
@with_pool
@with_transaction()
def variant_image(request, pool, code, name=None):
Product = pool.get('product.product')
try:
product, = Product.search([
('code', '=', unquote(code)),
])
except ValueError:
abort(HTTPStatus.NOT_FOUND)
return _image(request, pool, product)
@app.route(
'/product-category/image/<code>/<base64:database_name>',
methods={'GET'})
@app.route(
'/product-category/image/<code>/<base64:database_name>/<name>',
methods={'GET'})
@with_pool
@with_transaction()
def category_image(request, pool, code, name=None):
Category = pool.get('product.category')
try:
category, = Category.search([
('code', '=', unquote(code)),
])
except ValueError:
abort(HTTPStatus.NOT_FOUND)
return _image(request, pool, category)
def _image(request, pool, record):
images = record.get_images(request.args)
if not images:
abort(HTTPStatus.NOT_FOUND)
try:
image = list(images)[int(request.args.get('i', 0))]
except IndexError:
abort(HTTPStatus.NOT_FOUND)
except ValueError:
abort(HTTPStatus.BAD_REQUEST)
try:
size = int(request.args.get('s', 400))
except ValueError:
abort(HTTPStatus.BAD_REQUEST)
try:
width = int(request.args.get('w', size))
except ValueError:
abort(HTTPStatus.BAD_REQUEST)
try:
height = int(request.args.get('h', size))
except ValueError:
abort(HTTPStatus.BAD_REQUEST)
response = Response(image.get((width, height)), mimetype='image/jpeg')
response.headers['Cache-Control'] = (
'max-age=%s, public' % config.getint(
'product', 'image_timeout', default=365 * 24 * 60 * 60))
response.add_etag()
return response

View File

@@ -0,0 +1,2 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.

View File

@@ -0,0 +1,129 @@
# This file is part of Tryton. The COPYRIGHT file at the top level of
# this repository contains the full copyright notices and license terms.
import datetime as dt
import io
import unittest
import urllib.request
import PIL.Image
from trytond.pool import Pool
from trytond.tests.test_tryton import (
TEST_NETWORK, ModuleTestCase, with_transaction)
class ProductImageTestCase(ModuleTestCase):
'Test Product Image module'
module = 'product_image'
@unittest.skipUnless(TEST_NETWORK, "requires network")
@with_transaction()
def test_image_square(self):
"Test image square"
pool = Pool()
Image = pool.get('product.image')
Template = pool.get('product.template')
Uom = pool.get('product.uom')
template = Template(name="Template")
template.default_uom, = Uom.search([], limit=1)
template.save()
image = Image(template=template)
image.image = urllib.request.urlopen(
'https://downloads.tryton.org/tests/product-image/chair.jpg'
).read()
image.save()
self.assertEqual(template.image_url, None)
template.code = "CODE"
template.save()
self.assertRegex(
template.image_url,
r'/product/image/CODE/.*/Template\?s=64')
img = PIL.Image.open(io.BytesIO(image.get(size=100)))
self.assertEqual(img.size, (100, 100))
img = PIL.Image.open(io.BytesIO(image.get(size=(150, 200))))
self.assertEqual(img.size, (150, 150))
@unittest.skipUnless(TEST_NETWORK, "requires network")
@with_transaction()
def test_image_non_square(self):
"Test image non square"
pool = Pool()
Image = pool.get('product.image')
Template = pool.get('product.template')
Uom = pool.get('product.uom')
template = Template(name="Template")
template.default_uom, = Uom.search([], limit=1)
template.save()
image = Image(template=template)
image.image = urllib.request.urlopen(
'https://downloads.tryton.org/tests/product-image/chair-800.jpg'
).read()
image.save()
self.assertEqual(template.image_url, None)
template.code = "CODE"
template.save()
self.assertRegex(
template.image_url,
r'/product/image/CODE/.*/Template\?s=64')
img = PIL.Image.open(io.BytesIO(image.get(size=100)))
self.assertEqual(img.size, (78, 100))
img = PIL.Image.open(io.BytesIO(image.get(size=(100, 200))))
self.assertEqual(img.size, (100, 128))
@with_transaction()
def test_round_size(self):
"Test round size"
pool = Pool()
Image = pool.get('product.image')
for size, result in [
(1, 1),
(2, 2),
(19, 20),
(45, 50),
(101, 128),
(129, 150),
]:
with self.subTest(size=size):
self.assertEqual(Image._round_size(size), result)
@unittest.skipUnless(TEST_NETWORK, "requires network")
@with_transaction()
def test_get_image_url(self):
"Test get_image_url"
pool = Pool()
Image = pool.get('product.image')
Template = pool.get('product.template')
Uom = pool.get('product.uom')
template = Template(name="Template", code="CODE")
template.default_uom, = Uom.search([], limit=1)
template.save()
for _ in range(3):
image = Image(template=template)
image.image = urllib.request.urlopen(
'https://downloads.tryton.org/tests/product-image/chair.jpg'
).read()
image.save()
template.write_date = dt.datetime(2025, 1, 1) # fix timestamp
self.assertRegex(
template.get_image_url(i=2),
r'^/product/image/CODE/.*/Template\?i=2&t=AAAAAGd0hYA$')
self.assertRegex(
template.get_image_url(s=400),
r'^/product/image/CODE/.*/Template\?s=400&t=AAAAAGd0hYA$')
del ModuleTestCase

View File

@@ -0,0 +1,18 @@
[tryton]
version=7.8.0
depends:
ir
product
xml:
product.xml
message.xml
[register]
model:
product.Template
product.Product
product.Image
product.ImageCache
product.Category
product.CategoryImage
product.CategoryImageCache

View File

@@ -0,0 +1,10 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<data>
<xpath expr="//notebook" position="inside">
<page name="images">
<field name="images" colspan="4" mode="list-form,tree,form"/>
</page>
</xpath>
</data>

View File

@@ -0,0 +1,20 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<form>
<field name="image" widget="image" height="200" width="200" xexpand="0" colspan="2"/>
<group id="category" col="2" colspan="2" yalign="0" yexpand="0">
<label name="sequence"/>
<field name="sequence"/>
<group colspan="2" col="-1" id="checkboxes">
<!-- Add checkboxes here -->
</group>
<label name="category"/>
<field name="category"/>
<label name="description"/>
<field name="description"/>
</group>
</form>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree sequence="sequence">
<field name="category" expand="1"/>
<field name="image" expand="2"/>
<field name="description" expand="1" optional="1"/>
</tree>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<data>
<xpath expr="//field[@name='code']" position="inside">
<prefix id="image" icon="image_url" icon_type="url" url_size="s"/>
</xpath>
</data>

View File

@@ -0,0 +1,23 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<form>
<field name="image" widget="image" height="200" width="200" xexpand="0" colspan="2"/>
<group id="product" col="2" colspan="2" yalign="0" yexpand="0">
<label name="sequence"/>
<field name="sequence"/>
<group colspan="2" col="-1" id="checkboxes">
<!-- Add checkboxes here -->
</group>
<label name="template"/>
<field name="template"/>
<label name="product"/>
<field name="product"/>
<label name="description"/>
<field name="description"/>
</group>
</form>

View File

@@ -0,0 +1,9 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<tree sequence="sequence">
<field name="template" expand="1"/>
<field name="product" expand="1"/>
<field name="image" expand="2"/>
<field name="description" expand="1" optional="1"/>
</tree>

View File

@@ -0,0 +1,10 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<data>
<xpath expr="//notebook" position="inside">
<page name="images">
<field name="images" colspan="4" mode="list-form,tree,form"/>
</page>
</xpath>
</data>

View File

@@ -0,0 +1,8 @@
<?xml version="1.0"?>
<!-- This file is part of Tryton. The COPYRIGHT file at the top level of
this repository contains the full copyright notices and license terms. -->
<data>
<xpath expr="//field[@name='code']" position="inside">
<prefix id="image" icon="image_url" icon_type="url" url_size="s"/>
</xpath>
</data>