- Posts: 2696
- Thank you received: 74
Changer option des pays
2 months 3 weeks ago - 2 months 3 weeks ago #372438
by erickb
Changer option des pays was created by erickb
-- HikaShop version -- : 6.5
Bonjour
L'enregistrement dans le sélect des pays les options sont sous cette Forme :
Comment ne garder que le zone_name que je peux traduire en français >algerie<
Dans quel fichier ?
En attendant et en espérant que une mise à jour, ne va pas les réécrire:
Merci
Bonjour
L'enregistrement dans le sélect des pays les options sont sous cette Forme :
Code:
<option value="country_Algeria_3" id="address_country_country_Algeria_3">Algeria (الجزائر)</option>
Comment ne garder que le zone_name que je peux traduire en français >algerie<
Dans quel fichier ?
En attendant et en espérant que une mise à jour, ne va pas les réécrire:
Code:
UPDATE fr_hikashop_zone
SET zone_name = ''
WHERE zone_type = 'country';
Merci
Last edit: 2 months 3 weeks ago by erickb.
Please Log in or Create an account to join the conversation.
2 months 3 weeks ago #372439
by nicolas
Replied by nicolas on topic Changer option des pays
Bonjour,
Le libellé du pays est construit dans back/classes/field.php (fonction setValues, vers la ligne 978) :
HikaShop affiche donc le nom anglais (zone_name_english) et n'ajoute le second nom entre parenthèses que lorsque zone_name est différent. Le "(الجزائر)" ne vient pas de HikaShop : c'est le contenu de votre champ zone_name pour l'Algérie dans la table hikashop_zone (le nom en arabe), alors que zone_name_english vaut "Algeria".
Évitez de modifier ce fichier, il serait écrasé à la prochaine mise à jour. La méthode propre se fait en deux temps :
1) Supprimer le second nom. Dans HikaShop, menu Système > Zones, ouvrez le pays et remettez le champ zone_name identique au nom anglais (ou videz-le). La liste n'affichera alors plus qu'un seul nom (ex. "Algeria"). Ne modifiez pas zone_name_english, il sert en interne (imports, correspondances de pays).
2) Traduire en français. À l'affichage, HikaShop passe chaque libellé par sa fonction de traduction : le libellé "Algeria" correspond à la clé ALGERIA. Créez une surcharge de langue côté site (Extensions > Langues > Surcharges), en français : clé ALGERIA, valeur "Algérie". Le pays s'affichera alors "Algérie". Faites de même pour les autres pays voulus (la clé est le nom anglais en majuscules, espaces remplacés par des underscores, par exemple UNITED_STATES).
Le libellé du pays est construit dans back/classes/field.php (fonction setValues, vers la ligne 978) :
Code:
$title = $zone->zone_name_english;
if($zone->zone_name_english != $zone->zone_name && !empty($zone->zone_name)){
$title .= ' ('.$zone->zone_name.')';
}
HikaShop affiche donc le nom anglais (zone_name_english) et n'ajoute le second nom entre parenthèses que lorsque zone_name est différent. Le "(الجزائر)" ne vient pas de HikaShop : c'est le contenu de votre champ zone_name pour l'Algérie dans la table hikashop_zone (le nom en arabe), alors que zone_name_english vaut "Algeria".
Évitez de modifier ce fichier, il serait écrasé à la prochaine mise à jour. La méthode propre se fait en deux temps :
1) Supprimer le second nom. Dans HikaShop, menu Système > Zones, ouvrez le pays et remettez le champ zone_name identique au nom anglais (ou videz-le). La liste n'affichera alors plus qu'un seul nom (ex. "Algeria"). Ne modifiez pas zone_name_english, il sert en interne (imports, correspondances de pays).
2) Traduire en français. À l'affichage, HikaShop passe chaque libellé par sa fonction de traduction : le libellé "Algeria" correspond à la clé ALGERIA. Créez une surcharge de langue côté site (Extensions > Langues > Surcharges), en français : clé ALGERIA, valeur "Algérie". Le pays s'affichera alors "Algérie". Faites de même pour les autres pays voulus (la clé est le nom anglais en majuscules, espaces remplacés par des underscores, par exemple UNITED_STATES).
The following user(s) said Thank You: erickb
Please Log in or Create an account to join the conversation.
2 months 3 weeks ago - 2 months 3 weeks ago #372442
by erickb
Replied by erickb on topic Changer option des pays
la liste n est plus ordonnée car elle est triée sur le name English
États unis arrive en dernier par exemple
Polynésie française arrive après Guyane et avant Allemagne
Il faut trier sur les noms en français
J ai essayé avec zone_ordering avec une table intermédiaire, traduite et dans l'ordre mais ça ne marche pas
Merci
États unis arrive en dernier par exemple
Polynésie française arrive après Guyane et avant Allemagne
Il faut trier sur les noms en français
J ai essayé avec zone_ordering avec une table intermédiaire, traduite et dans l'ordre mais ça ne marche pas
Code:
UPDATE fr_hikashop_zone h
JOIN aa_zone a
ON a.zone_id = h.zone_id
SET h.zone_ordering = a.zone_ordering;
Merci
Last edit: 2 months 3 weeks ago by erickb.
Please Log in or Create an account to join the conversation.
2 months 3 weeks ago #372452
by nicolas
Replied by nicolas on topic Changer option des pays
Bonjour,
Le tri de la liste des pays est fait dans back/types/country.php :
zone_ordering est donc bien prioritaire, le nom anglais n'est que le critère de départage. Votre idée est la bonne (la liste du checkout passe par cette même requête), il reste juste à remplir zone_ordering correctement.
Deux raisons pour lesquelles votre UPDATE n'a rien changé :
1) La jointure sur zone_id. zone_id est un auto-incrément propre à chaque base : si aa_zone vient d'une autre installation, ses zone_id ne correspondent pas à ceux de fr_hikashop_zone, et la copie tombe à côté. Faites la jointure sur zone_name_english, qui est stable.
2) Il faut une valeur distincte pour CHAQUE pays. Tout pays resté à 0 (la valeur par défaut) remonte en tête, avant vos pays ordonnés, puisque le tri applique zone_ordering en premier. À vérifier :
Une méthode fiable, en numérotant selon le nom français (adaptez le nom de la colonne française de aa_zone) :
Le COLLATE (utf8mb4_unicode_ci, ou utf8_unicode_ci selon l'encodage de votre table) fait que "États-Unis" ou "Égypte" se trient bien sous E et non en fin de liste.
Pour votre inquiétude sur les mises à jour : la table des zones n'est remplie qu'à la première installation, les mises à jour ne réécrivent pas ses lignes. Vos zone_name vidés et vos zone_ordering sont donc conservés.
Le tri de la liste des pays est fait dans back/types/country.php :
Code:
... ORDER BY a.zone_ordering ASC, a.zone_name_english ASC
zone_ordering est donc bien prioritaire, le nom anglais n'est que le critère de départage. Votre idée est la bonne (la liste du checkout passe par cette même requête), il reste juste à remplir zone_ordering correctement.
Deux raisons pour lesquelles votre UPDATE n'a rien changé :
1) La jointure sur zone_id. zone_id est un auto-incrément propre à chaque base : si aa_zone vient d'une autre installation, ses zone_id ne correspondent pas à ceux de fr_hikashop_zone, et la copie tombe à côté. Faites la jointure sur zone_name_english, qui est stable.
2) Il faut une valeur distincte pour CHAQUE pays. Tout pays resté à 0 (la valeur par défaut) remonte en tête, avant vos pays ordonnés, puisque le tri applique zone_ordering en premier. À vérifier :
Code:
SELECT COUNT(*) FROM fr_hikashop_zone WHERE zone_type='country' AND zone_ordering = 0;
Une méthode fiable, en numérotant selon le nom français (adaptez le nom de la colonne française de aa_zone) :
Code:
-- 1) numéroter aa_zone dans l'ordre français
SET @i := 0;
UPDATE aa_zone
SET zone_ordering = (@i := @i + 1)
WHERE zone_type = 'country'
ORDER BY nom_francais COLLATE utf8mb4_unicode_ci;
-- 2) recopier vers HikaShop en joignant sur le nom anglais (stable)
UPDATE fr_hikashop_zone h
JOIN aa_zone a ON a.zone_name_english = h.zone_name_english
SET h.zone_ordering = a.zone_ordering
WHERE h.zone_type = 'country';
Le COLLATE (utf8mb4_unicode_ci, ou utf8_unicode_ci selon l'encodage de votre table) fait que "États-Unis" ou "Égypte" se trient bien sous E et non en fin de liste.
Pour votre inquiétude sur les mises à jour : la table des zones n'est remplie qu'à la première installation, les mises à jour ne réécrivent pas ses lignes. Vos zone_name vidés et vos zone_ordering sont donc conservés.
The following user(s) said Thank You: erickb
Please Log in or Create an account to join the conversation.
2 months 3 weeks ago - 2 months 3 weeks ago #372458
by erickb
Replied by erickb on topic Changer option des pays
Ça marche
Merci
Une petite option qui serait sympa, ça serait de pouvoir grouper par continent avec optgroup et legend
Merci
Une petite option qui serait sympa, ça serait de pouvoir grouper par continent avec optgroup et legend
Last edit: 2 months 3 weeks ago by erickb.
Please Log in or Create an account to join the conversation.
2 months 3 weeks ago #372462
by nicolas
Replied by nicolas on topic Changer option des pays
Bonjour,
C'est une bonne idée. Je pense que ça devrait même être par défaut.
Nous allons voir cela...
C'est une bonne idée. Je pense que ça devrait même être par défaut.
Nous allons voir cela...
The following user(s) said Thank You: erickb
Please Log in or Create an account to join the conversation.
2 months 1 week ago - 2 months 1 week ago #372588
by erickb
Replied by erickb on topic Changer option des pays
Version 6.5.1 le nom des continents
Superbe
Merci
Ça met Martinique Guadeloupe et Réunion dans Autres
Je vais créer un "continent" DOM-TOM mais j ignore si l association que je vais créer dans la table zone_link sera modifiée après une mise à jour
Et surtout si j enlève la Guyane de L Amérique du Sud pour la mettre en DOM-TOM
Superbe
Merci
Ça met Martinique Guadeloupe et Réunion dans Autres
Je vais créer un "continent" DOM-TOM mais j ignore si l association que je vais créer dans la table zone_link sera modifiée après une mise à jour
Et surtout si j enlève la Guyane de L Amérique du Sud pour la mettre en DOM-TOM
Last edit: 2 months 1 week ago by erickb.
Please Log in or Create an account to join the conversation.
2 months 1 week ago #372594
by nicolas
Replied by nicolas on topic Changer option des pays
Bonjour,
Merci. Les associations et les nouvelles zones ne sont pas touchées lors des mises à jour. Vous pouvez y aller.
Merci. Les associations et les nouvelles zones ne sont pas touchées lors des mises à jour. Vous pouvez y aller.
The following user(s) said Thank You: erickb
Please Log in or Create an account to join the conversation.
Time to create page: 0.221 seconds