Im not sure on handle the canonical link and the alternate tag correctly.
Example: One product "tshirt" with multiple versions (blue, red)
Version blue: DE URL: ..de/kleidung/tshirt-de-blue
<link rel="canonical" href="...de/kleidung/tshirt-de">
<rel="alternate" hreflang="de" href="...de/kleidung/tshirt-de-blue">
<rel="alternate" hreflang="en" href="...de/en/fashion/tshirt-en-blue">
EN URL: ...de/en/fashion/tshirt-en-blue
<link rel="canonical" href="...de/en/fashion/tshirt-en">
<rel="alternate" hreflang="de" href="...de/kleidung/tshirt-de-blue">
<rel="alternate" hreflang="en" href="...de/en/fashion/tshirt-en-blue">
Version red: DE URL: ..de/kleidung/tshirt-red
<link rel="canonical" href="...de/kleidung/tshirt-de">
<rel="alternate" hreflang="de" href="...de/kleidung/tshirt-de-red">
<rel="alternate" hreflang="en" href="...de/en/fashion/tshirt-en-red">
EN URL: ...de/en/fashion/tshirt-red
<link rel="canonical" href="...de/en/fashion/tshirt-en">
<rel="alternate" hreflang="de" href="...de/kleidung/tshirt-de-red">
<rel="alternate" hreflang="en" href="...de/en/fashion/tshirt-en-red">
There is a general url for the product
Version general: DE URL: ..de/kleidung/tshirt-de
<link rel="canonical" href="...de/kleidung/tshirt-de">
<rel="alternate" hreflang="de" href="...de/kleidung/tshirt-de">
<rel="alternate" hreflang="en" href="...de/en/fashion/tshirt-en">
EN URL: ..de/en/fashion/tshirt-en
<link rel="canonical" href="...de/en/fashion/tshirt-en">
<rel="alternate" hreflang="de" href="...de/kleidung/tshirt-de">
<rel="alternate" hreflang="en" href="...de/en/fashion/tshirt-en">
So the canonical for each version and language is set the canonical to general language url and set alternate tags to the other language of the specific version.
The general version set canonical to itself and add the alternate tag to the other language from general version.
Is this the correct way ? Should i remove the altenate from the specific versions ? Should the canonical from each language set to the same (default) language ?