Ajout de la prise en charge d'une langue à HCL Commerce

Vous pouvez utiliser l'API REST pour mettre à jour votre base de données d'environnement afin d'ajouter la prise en charge de HCL Commerce pour l'affichage du texte et du contenu dans une langue autre que les langues prises en charge par défaut.

Avant de commencer

Lorsque vous ajoutez une langue, vous devez connaître et utiliser le code de langue ISO 639-1 (alpha-2) et le code de pays ISO 3166-1 (alpha-2) de la langue. Pour plus d'informations sur ces normes, voir. Vous devez également vous assurer que votre paramètre régional (code de langue et code de pays) est une combinaison valide prise en charge par Java. Pour plus d'informations, voir  -

Procédure

  1. Composez la requête d'API REST pour ajouter une langue dans HCL Commerce.
    Pour ajouter une langue, vous devez utiliser l'API REST administrative suivante :
    • Langues (https://localhost:443/rest/admin/v2/languages)
    Pour composer l'appel API, vous avez besoin des détails suivants pour identifier les paramètres régionaux de la langue à ajouter.
    • Le code de langue. Ce code doit suivre la norme ISP 639-1 (alpha-2), par exemple "nl" pour la langue néerlandaise (Pays-Bas).
    • Le code pays. Ce code doit suivre la norme ISP 3166-1 (alpha-2), par exemple "NL" pour les Pays-Bas.
    • Id de langue. Cet ID doit être un entier négatif. Cet ID est utilisé pour identifier les paramètres régionaux linguistiques dans HCL Commerce.
    Ces codes doivent être joints à l'aide d'un trait de soulignement ("_") pour former le paramètre régional utilisé pour identifier la langue, par exemple "nl_NL". Avec ces informations, vous pouvez construire le premier corps POST pour l'appel d'API. Le corps de l'appel peut ressembler à l'exemple de corps suivant :
    
    {
      \"id\": {{langId_nl}},
      \"localeName\": {{localeName}},
      \"language\": {{language}},
      \"country\": {{country}},
      \"variant\": null,
      \"encoding\": \"UTF-8\",
      \"mimeCharSet\": \"UTF-8\"
    }
    
  2. Composez la requête d'API REST pour ajouter les informations descriptives, telles qu'un nom d'affichage, à la nouvelle langue.
    Lorsque vous ajoutez des informations descriptives linguistiques, vous devez utiliser l'API REST administrative suivante :

    Ce nom d'affichage descriptif est utilisé par les clients et les utilisateurs professionnels pour identifier la langue. Ce nom peut être visible dans la vitrine lorsque les utilisateurs parcourent le magasin dans cette langue ou dans d'autres langues. Il s'affiche également pour la langue dans Management Center. Lorsque vous ajoutez une nouvelle langue, ajoutez un nom pour votre nouvelle langue dans toutes les langues prises en charge par votre site afin que les utilisateurs de la vitrine puissent identifier la nouvelle langue, quelle que soit la langue prise en charge dans laquelle ils parcourent un magasin. Ajoutez également un nom descriptif pour toutes vos langues prises en charge dans votre nouvelle langue, afin que les utilisateurs puissent identifier les autres langues lorsqu'ils parcourent un magasin dans votre nouvelle langue.

    Le corps de l'appel permettant d'ajouter des informations descriptives peut ressembler à la structure de corps suivant :
    
    {
      \"descriptionLanguageId\": {{langId_nl}},
      \"description\": {{ownLanguage}},
      \"languageId\": {{langId_nl}}
    }
    
    • Le paramètre descriptionLanguageId indique l'ID de langue de la langue pour laquelle la description est associée.
    • Le paramètre languageId indique la langue qui doit être activement sélectionnée pour la description à utiliser. Par exemple, si la valeur de cet ID est "-1" (anglais des Etats-Unis), la valeur de description est le nom descriptif de la langue qui est définie avec la valeur descriptionLanguageId.
    Vous devez effectuer plusieurs appels POST pour inclure une description de votre langue nouvellement ajoutée pour toutes les langues prises en charge pour votre magasin et inclure une description de toutes les langues prises en charge pour votre magasin dans votre langue nouvellement ajoutée.
  3. Exécutez vos appels d'API REST et ajoutez la langue à HCL Commerce.
    Pour exécuter vos appels d'API REST, vous pouvez regrouper vos appels REST dans une collection JSON avec les appels API pour ajouter la langue à un magasin afin d'exécuter tous les appels dans l'ordre. La collection suivante montre comment regrouper les appels d'API pour l'ajout d'une langue.
    {
    	"info": {
    		"_postman_id": "ae005479-0194-47e1-941a-19201b53f624",
    		"name": "New Language",
    		"schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
    	},
    	"item": [
    		{
    			"name": "Create",
    			"item": [
    				{
    					"name": "Post Language",
    					"request": {
    						"auth": {
    							"type": "basic",
    							"basic": [
    								{
    									"key": "username",
    									"value": "{{username}}",
    									"type": "string"
    								},
    								{
    									"key": "password",
    									"value": "{{password}}",
    									"type": "string"
    								}
    							]
    						},
    						"method": "POST",
    						"header": [
    							{
    								"key": "Content-Type",
    								"value": "application/json",
    								"type": "text"
    							}
    						],
    						"body": {
    							"mode": "raw",
    							"raw": "{\n\t\"id\": {{langId_nl}},\n    \"localeName\": {{localeName}},\n    \"language\": {{language}},\n    \"country\": {{country}},\n    \"variant\": null,\n    \"encoding\": \"UTF-8\",\n    \"mimeCharSet\": \"UTF-8\"\n}"
    						},
    						"url": {
    							"raw": "https://{{ts-hostname}}:{{ts-port}}/rest/admin/v2/languages",
    							"protocol": "https",
    							"host": [
    								"{{ts-hostname}}"
    							],
    							"port": "{{ts-port}}",
    							"path": [
    								"rest",
    								"admin",
    								"v2",
    								"languages"
    							]
    						}
    					},
    					"response": []
    				},
    				{
    					"name": "PostLanguage Description in new language",
    					"request": {
    						"auth": {
    							"type": "basic",
    							"basic": [
    								{
    									"key": "password",
    									"value": "{{password}}",
    									"type": "string"
    								},
    								{
    									"key": "username",
    									"value": "{{username}}",
    									"type": "string"
    								}
    							]
    						},
    						"method": "POST",
    						"header": [
    							{
    								"key": "Content-Type",
    								"type": "text",
    								"value": "application/json"
    							}
    						],
    						"body": {
    							"mode": "raw",
    							"raw": "{\n\t\"descriptionLanguageId\": {{langId_nl}},\n\t\"description\": {{ownLanguage}},\n\t\"languageId\": {{langId_nl}}\n}\n"
    						},
    						"url": {
    							"raw": "https://{{ts-hostname}}:{{ts-port}}/rest/admin/v2/language-descriptions",
    							"protocol": "https",
    							"host": [
    								"{{ts-hostname}}"
    							],
    							"port": "{{ts-port}}",
    							"path": [
    								"rest",
    								"admin",
    								"v2",
    								"language-descriptions"
    							]
    						}
    					},
    					"response": []
    				},
    				{
    					"name": "Post English Language Description in new Language",
    					"request": {
    						"auth": {
    							"type": "basic",
    							"basic": [
    								{
    									"key": "password",
    									"value": "{{password}}",
    									"type": "string"
    								},
    								{
    									"key": "username",
    									"value": "{{username}}",
    									"type": "string"
    								}
    							]
    						},
    						"method": "POST",
    						"header": [
    							{
    								"key": "Content-Type",
    								"type": "text",
    								"value": "application/json"
    							}
    						],
    						"body": {
    							"mode": "raw",
    							"raw": "{\n    \"descriptionLanguageId\": {{langId_en}},\n    \"description\": {{englishNewLanguage}},\n    \"languageId\": {{langId_nl}}\n}"
    						},
    						"url": {
    							"raw": "https://{{ts-hostname}}:{{ts-port}}/rest/admin/v2/language-descriptions",
    							"protocol": "https",
    							"host": [
    								"{{ts-hostname}}"
    							],
    							"port": "{{ts-port}}",
    							"path": [
    								"rest",
    								"admin",
    								"v2",
    								"language-descriptions"
    							]
    						}
    					},
    					"response": []
    				},
    				{
    					"name": "Post Langugae Description in English",
    					"request": {
    						"auth": {
    							"type": "basic",
    							"basic": [
    								{
    									"key": "password",
    									"value": "{{password}}",
    									"type": "string"
    								},
    								{
    									"key": "username",
    									"value": "{{username}}",
    									"type": "string"
    								}
    							]
    						},
    						"method": "POST",
    						"header": [
    							{
    								"key": "Content-Type",
    								"type": "text",
    								"value": "application/json"
    							}
    						],
    						"body": {
    							"mode": "raw",
    							"raw": "{\n\t\"descriptionLanguageId\": {{langId_nl}},\n\t\"description\": {{englishLanguage}},\n\t\"languageId\": {{langId_en}}\n}\n"
    						},
    						"url": {
    							"raw": "https://{{ts-hostname}}:{{ts-port}}/rest/admin/v2/language-descriptions",
    							"protocol": "https",
    							"host": [
    								"{{ts-hostname}}"
    							],
    							"port": "{{ts-port}}",
    							"path": [
    								"rest",
    								"admin",
    								"v2",
    								"language-descriptions"
    							]
    						}
    					},
    					"response": []
    				},
    				{
    					"name": "Post Languages to SAS",
    					"request": {
    						"auth": {
    							"type": "basic",
    							"basic": [
    								{
    									"key": "password",
    									"value": "{{password}}",
    									"type": "string"
    								},
    								{
    									"key": "username",
    									"value": "{{username}}",
    									"type": "string"
    								}
    							]
    						},
    						"method": "POST",
    						"header": [
    							{
    								"key": "Content-Type",
    								"type": "text",
    								"value": "application/json"
    							}
    						],
    						"body": {
    							"mode": "raw",
    							"raw": "{\r\n  \"storeId\": {{storeAssetStroreId}},\r\n  \"languageId\": {{langId_nl}},\r\n  \"currency\": null\r\n}"
    						},
    						"url": {
    							"raw": "https://{{ts-hostname}}:{{ts-port}}/rest/admin/v2/store-languages?",
    							"protocol": "https",
    							"host": [
    								"{{ts-hostname}}"
    							],
    							"port": "{{ts-port}}",
    							"path": [
    								"rest",
    								"admin",
    								"v2",
    								"store-languages"
    							],
    							"query": [
    								{
    									"key": "languageId",
    									"value": "-1",
    									"disabled": true
    								}
    							]
    						}
    					},
    					"response": []
    				},
    				{
    					"name": "Post Languages to CAS",
    					"request": {
    						"auth": {
    							"type": "basic",
    							"basic": [
    								{
    									"key": "password",
    									"value": "{{password}}",
    									"type": "string"
    								},
    								{
    									"key": "username",
    									"value": "{{username}}",
    									"type": "string"
    								}
    							]
    						},
    						"method": "POST",
    						"header": [
    							{
    								"key": "Content-Type",
    								"type": "text",
    								"value": "application/json"
    							}
    						],
    						"body": {
    							"mode": "raw",
    							"raw": "\r\n{\r\n  \"storeId\": {{catalogAssetStoreId}},\r\n  \"languageId\": {{langId_nl}},\r\n  \"currency\": null\r\n}"
    						},
    						"url": {
    							"raw": "https://{{ts-hostname}}:{{ts-port}}/rest/admin/v2/store-languages?",
    							"protocol": "https",
    							"host": [
    								"{{ts-hostname}}"
    							],
    							"port": "{{ts-port}}",
    							"path": [
    								"rest",
    								"admin",
    								"v2",
    								"store-languages"
    							],
    							"query": [
    								{
    									"key": "languageId",
    									"value": "-1",
    									"disabled": true
    								}
    							]
    						}
    					},
    					"response": []
    				},
    				{
    					"name": "Post Languages to Store",
    					"request": {
    						"auth": {
    							"type": "basic",
    							"basic": [
    								{
    									"key": "password",
    									"value": "{{password}}",
    									"type": "string"
    								},
    								{
    									"key": "username",
    									"value": "{{username}}",
    									"type": "string"
    								}
    							]
    						},
    						"method": "POST",
    						"header": [
    							{
    								"key": "Content-Type",
    								"type": "text",
    								"value": "application/json"
    							}
    						],
    						"body": {
    							"mode": "raw",
    							"raw": "{\r\n  \"storeId\": {{esiteStoreId}},\r\n  \"languageId\": {{langId_nl}},\r\n  \"currency\": null\r\n}"
    						},
    						"url": {
    							"raw": "https://{{ts-hostname}}:{{ts-port}}/rest/admin/v2/store-languages?",
    							"protocol": "https",
    							"host": [
    								"{{ts-hostname}}"
    							],
    							"port": "{{ts-port}}",
    							"path": [
    								"rest",
    								"admin",
    								"v2",
    								"store-languages"
    							],
    							"query": [
    								{
    									"key": "languageId",
    									"value": "-1",
    									"disabled": true
    								}
    							]
    						}
    					},
    					"response": []
    				}
    			]
    		},
    		{
    			"name": "Build Index",
    			"item": [
    				{
    					"name": "BUILD INDEX",
    					"event": [
    						{
    							"listen": "test",
    							"script": {
    								"id": "1597ae48-ade9-48ce-b346-09a43a00ff06",
    								"exec": [
    									"pm.environment.set(\"JobId\", pm.response.json().jobStatusId);",
    									""
    								],
    								"type": "text/javascript"
    							}
    						}
    					],
    					"request": {
    						"auth": {
    							"type": "basic",
    							"basic": [
    								{
    									"key": "password",
    									"value": "passw0rd",
    									"type": "string"
    								},
    								{
    									"key": "username",
    									"value": "spiuser",
    									"type": "string"
    								}
    							]
    						},
    						"method": "POST",
    						"header": [],
    						"body": {
    							"mode": "raw",
    							"raw": ""
    						},
    						"url": {
    							"raw": "https://{{ts-hostname}}:{{ts-port}}/wcs/resources/admin/index/dataImport/build?masterCatalogId=10001",
    							"protocol": "https",
    							"host": [
    								"{{ts-hostname}}"
    							],
    							"port": "{{ts-port}}",
    							"path": [
    								"wcs",
    								"resources",
    								"admin",
    								"index",
    								"dataImport",
    								"build"
    							],
    							"query": [
    								{
    									"key": "masterCatalogId",
    									"value": "10001"
    								}
    							]
    						}
    					},
    					"response": []
    				},
    				{
    					"name": "JOB STATUS",
    					"request": {
    						"auth": {
    							"type": "basic",
    							"basic": [
    								{
    									"key": "password",
    									"value": "passw0rd",
    									"type": "string"
    								},
    								{
    									"key": "username",
    									"value": "spiuser",
    									"type": "string"
    								}
    							]
    						},
    						"method": "GET",
    						"header": [],
    						"body": {
    							"mode": "raw",
    							"raw": ""
    						},
    						"url": {
    							"raw": "https://{{ts-hostname}}:3738/search/admin/resources/index/build/status?jobStatusId={{JobId}}",
    							"protocol": "https",
    							"host": [
    								"{{ts-hostname}}"
    							],
    							"port": "3738",
    							"path": [
    								"search",
    								"admin",
    								"resources",
    								"index",
    								"build",
    								"status"
    							],
    							"query": [
    								{
    									"key": "jobStatusId",
    									"value": "{{JobId}}"
    								}
    							]
    						}
    					},
    					"response": []
    				}
    			]
    		}
    	]
    }
    Pour utiliser cette collection, vous devez définir les variables d'environnement de l'API. Les appels API de la collection sont structurés avec des variables. Les valeurs utilisées pour les variables peuvent être incluses dans un fichier JSON distinct. Le fichier suivant comprend des exemples de valeurs pour la définition du néerlandais des Pays-Bas.
    {
    	"id": "436186fc-583d-4a22-ab90-a79f8ed560e8",
    	"name": "Language",
    	"values": [
    		{
    			"key": "language",
    			"value": "\"nl\"",
    			"description": {
    				"content": "",
    				"type": "text/plain"
    			},
    			"enabled": true
    		},
    		{
    			"key": "country",
    			"value": "\"NL\"",
    			"description": {
    				"content": "",
    				"type": "text/plain"
    			},
    			"enabled": true
    		},
    		{
    			"key": "localeName",
    			"value": "\"nl_NL\"",
    			"description": {
    				"content": "",
    				"type": "text/plain"
    			},
    			"enabled": true
    		},
    		{
    			"key": "langId_nl",
    			"value": "-1015",
    			"description": {
    				"content": "",
    				"type": "text/plain"
    			},
    			"enabled": true
    		},
    		{
    			"key": "langId_en",
    			"value": "-1",
    			"description": {
    				"content": "",
    				"type": "text/plain"
    			},
    			"enabled": true
    		},
    		{
    			"key": "ts-hostname",
    			"value": "localhost",
    			"description": {
    				"content": "",
    				"type": "text/plain"
    			},
    			"enabled": true
    		},
    		{
    			"key": "ts-port",
    			"value": "443",
    			"description": {
    				"content": "",
    				"type": "text/plain"
    			},
    			"enabled": true
    		},
    		{
    			"key": "search-port",
    			"value": "3738",
    			"description": "",
    			"enabled": true
    		},
    		{
    			"key": "ownLanguage",
    			"value": "\"Nederland\"",
    			"description": {
    				"content": "",
    				"type": "text/plain"
    			},
    			"enabled": true
    		},
    		{
    			"key": "englishLanguage",
    			"value": "\"Dutch Netherlands\"",
    			"description": {
    				"content": "",
    				"type": "text/plain"
    			},
    			"enabled": true
    		},
    		{
    			"key": "englishNewLanguage",
    			"value": "\"Verenigde Staten Engels\"",
    			"description": {
    				"content": "",
    				"type": "text/plain"
    			},
    			"enabled": true
    		},
    		{
    			"key": "username",
    			"value": "wcsadmin",
    			"description": {
    				"content": "",
    				"type": "text/plain"
    			},
    			"enabled": true
    		},
    		{
    			"key": "password",
    			"value": "wcs1admin",
    			"description": {
    				"content": "",
    				"type": "text/plain"
    			},
    			"enabled": true
    		},
    		{
    			"key": "esiteStoreId",
    			"value": "1",
    			"description": {
    				"content": "",
    				"type": "text/plain"
    			},
    			"enabled": true
    		},
    		{
    			"key": "storeAssetStroreId",
    			"value": "11001",
    			"description": {
    				"content": "",
    				"type": "text/plain"
    			},
    			"enabled": true
    		},
    		{
    			"key": "catalogAssetStoreId",
    			"value": "10501",
    			"description": {
    				"content": "",
    				"type": "text/plain"
    			},
    			"enabled": true
    		}
    	],
    	"_postman_variable_scope": "environment",
    	"_postman_exported_at": "2019-04-04T14:03:22.468Z",
    	"_postman_exported_using": "Postman/7.0.7"
    }
    Remplacez les exemples de valeurs définis dans le fichier par les valeurs des magasins et la langue que vous ajoutez à votre environnement. Vous pouvez ensuite utiliser la collection et les fichiers de valeurs pour exécuter les requêtes d'API afin d'ajouter la langue.