L'URL n'est pas rempli automatiquement si l'article en langue russe

Salut!
Lors de la création d'articles en russe, c'est-à-dire en cyrillique (qui est inclus dans la livraison standard du système), le champ de l'URL n'est pas rempli automatiquement. Au lieu de cela, l'entrée "new-article" apparaît dans le champ URL. Et cela se produit lorsque vous créez chaque nouvel article.
Avec d'autres langues, tout fonctionne bien, l'URL est remplie selon le titre de l'article. Mais pas avec le nom russe :(
«1

Réponses

  • Je n'ai pas ce problème. Y a-t-il des plugins activés ? Sont-ils tous compatibles avec ta version de PluXml ?
    Quelle est la version de PluXml utilisée ?
  • Seule la version installée 5.6
    Pas de plugins.
    Ici, il devrait être écrit dans une transcription "novaya-zapis"
    Cela devrait être écrit en transcription.
    C'est le cas avec les langues allemande, roumaine et autres.
    Ils sont traduits en transcription.
    Les mots russes en transcription ne sont pas traduits.
    pluxml1.jpg
  • septembre 2017 modifié
    Je ne suis pas un programmeur, mais je suppose que dans certains fichiers il devrait y avoir une règle pour traduire les caractères cyrilliques en translit.
    Quelque chose comme ceci:
    [== PHP ==]
    function translit($str){
        $alphavit = array(
        /*--*/
        "а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"yo","ж"=>"j","з"=>"z","и"=>"i","й"=>"i","к"=>"k","л"=>"l", "м"=>"m",
        "н"=>"n","о"=>"o","п"=>"p","р"=>"r","с"=>"s","т"=>"t","у"=>"y","ф"=>"f","х"=>"h","ц"=>"c","ч"=>"ch", "ш"=>"sh","щ"=>"sh",
        "ы"=>"i","э"=>"e","ю"=>"u","я"=>"ya",
        /*--*/
        "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D","Е"=>"E", "Ё"=>"Yo","Ж"=>"J","З"=>"Z","И"=>"I","Й"=>"I","К"=>"K", "Л"=>"L","М"=>"M",
        "Н"=>"N","О"=>"O","П"=>"P", "Р"=>"R","С"=>"S","Т"=>"T","У"=>"Y","Ф"=>"F", "Х"=>"H","Ц"=>"C","Ч"=>"Ch","Ш"=>"Sh","Щ"=>"Sh",
        "Ы"=>"I","Э"=>"E","Ю"=>"U","Я"=>"Ya","ь"=>"","Ь"=>"","ъ"=>"","Ъ"=>""
        );
        return strtr($str, $alphavit);
    }
    
    

    P/S

    Je suppose également que dans ce système pour la conversion est responsable de:
    class.plx.utils.php
  • Ok, on ne parlait pas de la même chose. Effectivement, ce doit être un bug (ou un oubli).
  • Jerry WhamJerry Wham Membre
    septembre 2017 modifié
    C'est un oubli dans le fichier lang/ru/admin.php, lignes 41, 42 et 43 : il faudrait mettre à la place :
    [== Indéfini ==]
    'L_DEFAULT_NEW_CATEGORY_URL' => 'новая-категория',
    'L_DEFAULT_NEW_STATIC_URL' => 'новая-страница',
    'L_DEFAULT_NEW_ARTICLE_URL' => 'новая-статья',
    
    si ma traduction est convenable.
  • @Konstantinopol,

    Il manque aussi des traductions dans le fichier core/lang/ru/core.php
    [== PHP ==]
    $LANG = array(
    
    'L_LANGUE'						=> 'Russian',
    /*  ... */
    'L_SHORT_JANUARY'				=> '',
    'L_SHORT_FEBRUARY'				=> '',
    'L_SHORT_MARCH'					=> '',
    'L_SHORT_APRIL'					=> '',
    'L_SHORT_MAY'					=> '',
    'L_SHORT_JUNE'					=> '',
    'L_SHORT_JULY'					=> '',
    'L_SHORT_AUGUST'				=> '',
    'L_SHORT_SEPTEMBER'				=> '',
    'L_SHORT_OCTOBER'				=> '',
    'L_SHORT_NOVEMBER'				=> '',
    'L_SHORT_DECEMBER'				=> '',
    
  • Messieurs, je suis désolé, mais ce n'est pas à ce sujet.
    Lors de la rédaction d'un article, le titre doit être converti en translittération.
    C'est-à-dire, si le titre en russe ressemble à un "Новая статья" (new article) alors le lien devrait ressembler à www.mysite.ru/novaya-statya.html et non www.mysite.ru/new-article.html ou [url=http://www.mysite.ru/новая-статья.html]www.mysite.ru/новая-статья.html[/url]

    l'expression "Новая статья" devrait être traduite dans la phrase "Novaya-statya"
    Mais il n'existe pas de règles de translittération dans les fichiers système.
  • Heureusement qu'il y a Wikpédia pour comprendre la translitteration :
    https://fr.wikipedia.org/wiki/Transcription_et_translitt%C3%A9ration

    Il faut faire un.plugin pour cela

    @Konstantinopol,
    Tu as un lien pour les règles de translittération ?
  • J'ai déjà répand le code, ici dans le sujet.
    [== Indéfini ==]
    function translit($str){
        $alphavit = array(
        /*--*/
        "а"=>"a","б"=>"b","в"=>"v","г"=>"g","д"=>"d","е"=>"e","ё"=>"yo","ж"=>"j","з"=>"z","и"=>"i","й"=>"i","к"=>"k","л"=>"l", "м"=>"m",
        "н"=>"n","о"=>"o","п"=>"p","р"=>"r","с"=>"s","т"=>"t","у"=>"y","ф"=>"f","х"=>"h","ц"=>"c","ч"=>"ch", "ш"=>"sh","щ"=>"sh",
        "ы"=>"i","э"=>"e","ю"=>"u","я"=>"ya",
        /*--*/
        "А"=>"A","Б"=>"B","В"=>"V","Г"=>"G","Д"=>"D","Е"=>"E", "Ё"=>"Yo","Ж"=>"J","З"=>"Z","И"=>"I","Й"=>"I","К"=>"K", "Л"=>"L","М"=>"M",
        "Н"=>"N","О"=>"O","П"=>"P", "Р"=>"R","С"=>"S","Т"=>"T","У"=>"Y","Ф"=>"F", "Х"=>"H","Ц"=>"C","Ч"=>"Ch","Ш"=>"Sh","Щ"=>"Sh",
        "Ы"=>"I","Э"=>"E","Ю"=>"U","Я"=>"Ya","ь"=>"","Ь"=>"","ъ"=>"","Ъ"=>""
        );
        return strtr($str, $alphavit);
    }
    
    Quant au plugin, je ne suis pas un programmeur. Dans PHP, je ne comprends pas, seulement HTML.
  • bazooka07bazooka07 Membre
    septembre 2017 modifié
    Ok, j'ai compris :P
    [== PHP ==]
    $a = 'Новая статья';
    echo translit($a);
    /* Cela donne : */
    /* Novaya statya */
    

    C'est juste pour l' url de l'article ?

    On doit pouvoir avec un plugin et le hook plxAdminEditArticle employé dans plAdmin::editArticle()
    Je pense que tu dois avoir le même problème avec les pages statiques.
  • Je suis désolé, mais quand je crée une nouvelle page statique, je dois entrer manuellement l'URL. Je n'ai pas remarqué l'automatisation là-bas.
  • septembre 2017 modifié
    Je vois juste que c'est fait dans un autre CMS facile, comme par exemple, Bludit, Getsimple,HTMLy, Redaxscript (et ainsi de suite)
    Je crois, si j'ai compris dans le PHP, je pouvais voir comment la translittération a été faite à partir d'eux et l'a fait dans Pluxml. Mais je ne suis pas complètement versé en PHP.
  • Oui, il y a une autre option.
    Il existe une version Pluxml du programmeur russe appelé Pluxfolio. C'est donc là que la translittération des articles est excellente.
    Mais le projet est maintenant fermé, il n'y a pas de lien avec celui-ci.
    Est-ce que quelqu'un de la coryphée locale peut-il voir comment cela se fait-il et jeter cette décision à un nouveau Pluxml?
    Voici un lien vers l'archive de version. Il y a 2 langues - anglais et russe, par défaut l'anglais. Mais comme je l'ai compris, le code est documenté.
    https://drive.google.com/open?id=0BxFu9ODnuSCRTFdFNnRoSTVsNzg
  • septembre 2017 modifié
    Donc, j'ai même trouvé le code, qui est responsable de la translittération.
    Il est situé dans class.plx.utils.php:
    [== Indéfini ==]
    	function removeAccents($str,$charset='utf-8') {
    
    		$str = plxUtils::imTranslite($str);
    	    $str = htmlentities($str, ENT_NOQUOTES, $charset);
    	    $str = preg_replace('#\&([A-za-z])(?:acute|cedil|circ|grave|ring|tilde|uml|uro)\;#', '\1', $str);
    	    $str = preg_replace('#\&([A-za-z]{2})(?:lig)\;#', '\1', $str); # pour les ligatures e.g. 'œ'
    	    $str = preg_replace('#\&[^;]+\;#', '', $str); # supprime les autres caractères    
    	    return $str;
    	}
    
    	function imTranslite($str)
    	{
    		static $tbl= array(
    			'а'=>'a', 'б'=>'b', 'в'=>'v', 'г'=>'g', 'д'=>'d', 'е'=>'e', 'ж'=>'g', 'з'=>'z',
    			'и'=>'i', 'й'=>'y', 'к'=>'k', 'л'=>'l', 'м'=>'m', 'н'=>'n', 'о'=>'o', 'п'=>'p',
    			'р'=>'r', 'с'=>'s', 'т'=>'t', 'у'=>'u', 'ф'=>'f', 'ы'=>'i', 'э'=>'e', 'А'=>'A',
    			'Б'=>'B', 'В'=>'V', 'Г'=>'G', 'Д'=>'D', 'Е'=>'E', 'Ж'=>'G', 'З'=>'Z', 'И'=>'I',
    			'Й'=>'Y', 'К'=>'K', 'Л'=>'L', 'М'=>'M', 'Н'=>'N', 'О'=>'O', 'П'=>'P', 'Р'=>'R',
    			'С'=>'S', 'Т'=>'T', 'У'=>'U', 'Ф'=>'F', 'Ы'=>'I', 'Э'=>'E', 'ё'=>"yo", 'х'=>"h",
    			'ц'=>"ts", 'ч'=>"ch", 'ш'=>"sh", 'щ'=>"shch", 'ъ'=>"", 'ь'=>"", 'ю'=>"yu", 'я'=>"ya",
    			'Ё'=>"YO", 'Х'=>"H", 'Ц'=>"TS", 'Ч'=>"CH", 'Ш'=>"SH", 'Щ'=>"SHCH", 'Ъ'=>"", 'Ь'=>"",
    			'Ю'=>"YU", 'Я'=>"YA"
    		);
    
    	return strtr($str, $tbl);
    	}
    	
    	function title2url($str) {
    
    		$str = strtolower(plxUtils::removeAccents($str,PLX_CHARSET));
    		$str = preg_replace('/[^[:alnum:]]+/',' ',$str);
    		return strtr(trim($str), ' ', '-');
    	}
    
    	function title2filename($str) {
    
    		$str = strtolower(plxUtils::removeAccents($str,PLX_CHARSET));
    		$str = preg_replace('/[^[:alnum:]|.|_]+/',' ',$str);
    		return strtr(trim($str), ' ', '-');
    	}
    
  • bazooka07bazooka07 Membre
    septembre 2017 modifié
    Pluxfolio a créé une fonction imTranslite() dans le fichier core/lib/class.plx.utils.php vers la ligne 176.

    C'est PluXml version 1.2. de 2011. C'est vieux !

    Je vais étudier cela. Laisse moi un temps de temps.
    Il faut faire un petit plugin pour ne pas modifier PluXml pour l'instant.
    Je vais voir les autres CMS
  • bazooka07
    Je vous serais très reconnaissant de pouvoir contribuer à la promotion de ce CMS remarquable en Russie.
  • J'ai proposé un pull request sur github mais il ne tient pas compte de la translittération (que je ne connaissais pas). Je ne sais pas s'il sera pris en compte du coup... :(
  • Jerry Wham
    Je suppose que vous avez apporté des modifications au fichier.
    Edit title2url and title2filename for cyrillic support #251
    J'ai téléchargé ce fichier et l'ai remplacé par l'original et c'est ce que j'ai eu:
    pluxml2.jpg
    L'URL se traduit par abracadabra :(
  • bazooka07bazooka07 Membre
    septembre 2017 modifié
    @Konstantinopol,

    C'est intéressant toutes ces informations sur les autres plugins. Il y a des tableaux et des fonctions pour faire la translittération

    [list=*]
    [*]Htmly utilise un plugin d'un autre site. C'est très bien. [/*]
    [*]GetSimple Il y a un mélange avec des chaines de texte en anglais. C'est le fouillis.[/*]
    [*]BludIt C'est bien aussi [/*]
    [/list]

    C'est vrai que PluXml a besoin d'une mise à jour.
    Il y a aussi des problèmes en allemand. par exemple blanc se dit weiß et doit être transformé en weiss pour l'url.

    Question : Tu peux utliser le cyrillic pour les noms de fichiers sur ton disque dur ?

    Pour les pages statiques, si l'url n'est pas indiqué, PluXml va la calculer à partir du titre. Donc je suis obligé d'étudier le problème aussi.

    Bon, ce n'est pas très compliqué, il me faut un peu de temps pour faire le plugin en attendant la prochaine version de PluXml au printemps 2018.
  • bazooka07
    Question : Tu peux utliser le cyrillic pour les noms de fichiers sur ton disque dur ?
    Oui, je peux utiliser le cyrillique pour les noms de fichiers sur mon disque dur.
    Pourquoi demandez-vous à ce sujet?
  • Je te propose d'essayer ce plugin :
    Télécharger le plugin kzUrlify

    Il gére les articles et les pages statiques qui n'ont pas l'URL à la saisie, en se basant sur le titre.
    Konstantinopol a écrit:
    bazooka07
    Question : Tu peux utliser le cyrillic pour les noms de fichiers sur ton disque dur ?
    Oui, je peux utiliser le cyrillique pour les noms de fichiers sur mon disque dur.
    Pourquoi demandez-vous à ce sujet?

    A cause des fichiers d'images.

    Si avec Firefox on importe un fichier d'image, est ce que le navigateur fait la translitération pour ne pas avoir un nom de fichier en cyrillique ?
  • bazooka07
    Excellent d'emploi!
    Et les articles et les pages statiques sont transposés comme prévu!
    À propos des images:
    Je donne toujours les noms anglais aux fichiers image, ou les Russes en translittération.
  • bazooka07bazooka07 Membre
    septembre 2017 modifié
    Super :D

    A propos des images.

    C'est pas bon non plus.

    Sur mon PC j'ai renommé un fichier image en "маленький кот.jpg" et le gestionnaire de médias le renomme en "jpg".
    %D0%BC%D0%B0%D0%BB%D0%B5%D0%BD%D1%8C%D0%BA%D0%B8%D0%B9-%D0%BA%D0%BE%D1%82.jpg
    http://kazimentou.fr/divers/%D0%BC%D0%B0%D0%BB%D0%B5%D0%BD%D1%8C%D0%BA%D0%B8%D0%B9-%D0%BA%D0%BE%D1%82.jpg

    D'après le lien ci-dessus les caractères cyrilliques marchent bien sur Internet.

    Je vais regarder cela aussi mais c'est plus compliqué.

    Il faut que la translittération soit automatique pour renommer les fichiers.
    Je vais voir après si dans le gestionnaire de médias les noms de fichiers en caractères latins peuvent être affichés en caractères cyrilliques.
    Si j'ai bien lu, la translittération est réversible.

    Est ce que c'est facile pour tous les russophones de faire la translittération manuellement et inversement ?
  • septembre 2017 modifié
    Si j'essaie de charger une image avec un nom cyrillique, par exemple "картинка1.jpg", puis après le téléchargement, le nom de l'image devient "1.jpg"
    Si vous utilisez l'éditeur de CKeditor, vous pouvez télécharger une image avec un nom cyrillique vers le chargeur interne (Roxy File Manager). MAIS, l'image ne s'ouvre pas et n'est pas affichée.
    pluxml3.jpg

    Mais ce n'est pas vraiment important.
    Dans toutes les recommandations pour la construction de sites indiqués, l'utilisation de l'alphabet latin pour nommer les fichiers téléchargés.
    C'est-à-dire, le contenu est dans votre langue maternelle, tout le reste est en latin.
  • bazooka07bazooka07 Membre
    septembre 2017 modifié
    Pour faire la translittération, Pluxml utilise la fonction removeAccents dans le fichier core/lib/class.plx.utils.php.

    Sauf que s'il ne reconnait pas un caractère, il le supprime sans ménagement. Et comme il ne connait pas les caractères cyrilliques, tout y passe, sauf le 1.

    PluxFolio avait corrigé cette fonction. Je vais proposer de faire la modification avec la prochaine version de PluXml mais en tenant compte de la langue du site.
    Inutile de faire de la translittération de caractères cyrilliques si le site est en polonais ! Et vice-versa.

    Le plugin Tinymce utilise le gestionnaire de fichiers de PluXml pour choisir une image.
    Donc si j'arrive à faire fonctionner correctement le gestionnaire de médias de PluXml, alors cela sera bon pour Tinymce.

    Fil de discussion à propos de TinyMCE
  • Merveilleux!
    Nous vous remercions de votre travail et de votre aide pour résoudre les problèmes associés au merveilleux système Pluxml. :D
  • Il doit y avoir aussi des problèmes avec les catégories.

    J'ai détecté 19 lignes de code qui posent problème pour la translittération.
    Je suis donc obligé de continuer directement dans PluXml car c'est trop compliqué avecc un plugin et impossible à certains endroits.
    J'enverrai un pull request quand j'aurai fini de coder ( c'est presque fini ) et fait des tests.

    Mais je ne suis pas russophone. Il faudrait que tu fasses un site de test quand j'aurai fini. Connais tu github.com et git ?

    Autre point :
    Ceux qui ont fait htmly, et surtout sur https://github.com/jbroadway/urlify/blob/master/URLify.php à la ligne n° 149, ont prévu la possibilité de supprimer les articles dans l'url. Par exemple, si le titre est "Vacances à la plage en 2017", l'url devient "vacances-plages-2017".
    Peux tu passer un tableau avec les articles et les prépositions russes en cyrillique à supprimer des urls, si tu le souhaites ?
  • septembre 2017 modifié
    Bonjour,
    J'ai la dernière version de Htmly installée.
    Quand je crée un article "Отпуск на пляже в 2017 году" ("Vacances à la plage en 2017")
    L'adresse de l'article est la suivante:
    //htmly2.ru/post/otpusk-na-plyazhe-v-2017-godu
    Toutes les prépositions sont préservées.
    Et je ne vois rien de mal avec cette adresse du point de vue du SEO!
    Quel est le problème avec cette adresse?
    Quel est le but de supprimer les prépositions de l'adresse?

    Git J'ai installé
    Mais pour être honnête, je ne l'ai pas utilisé
    Cependant, pouvez essayer :)

    P/S

    Oui, oublié d'ajouter.
    Si vous supprimez les prépositions de la phrase en latin (anglais, français, etc.), le reste sera tout à fait lisible et décent.
    Si il est simple (sans penser) d'enlever les prépositions de la phrase en russe, alors, pour que la phrase semble décemment, il faut changer les finitions des mots restants.

    PP/S

    Lexiquement, grammaticalement et stylistiquement, l'adresse correcte ne peut être créée que manuellement (pour SEO)
    Si vous écrivez un article une fois par mois - alors tout ce que nous faisons n'est pas du tout important.
    Une fois par mois, vous pouvez écrire manuellement l'adresse.
    On suppose que nous faisons cela pour ceux qui vont écrire souvent.
  • bazooka07bazooka07 Membre
    septembre 2017 modifié
    @Konstantinopol,

    Bonsoir,

    J'ai modifié PluXml comme je l'ai souhaité.
    J'ai fait quelques essais sous Ubuntu 17.04 et Apache.

    Il faudrait maintenant que tu fasses des essais pour me dire si cela convient.
    Le mieux pour commencer est de partir d'une installation neuve.

    Pour faire l'installation avec Git sous Linux, et certainement Mac, faire :
    [== bash ==]
    git clone --depth 1  https://github.com/bazooka07/PluXml.git -b translitteration
    cd PluXml/
    sudo chown -R www-data . config.php data plugins themes/defaut
    

    Le dépôt sur Github est bazooka07/PluXml et il faut prendre la branche translitteration
    Sur le fichier README.md;, il est marqué "Support des alphabets cyrillic, polonais, allemand, ... pour la translittération des Urls"

    Sinon tu peux aller sur la page https://github.com/bazooka07/PluXml/releases pour charger l'archive zip

    Il est préférable de régler le site en russe pour que la translittération se fasse en priorité à partir du cyrillic.

    Sur la page d'installation, il y a des drapeaux pour choisir la langue.

    S'il y a des traductions un peu bizarres, n'hésite pas à m'envoyer les corrections

    Bon amusement.
  • bazooka07
    Bonsoir,

    A installé votre version.
    Après l'installation initiale, donne une erreur sur la page principale:
    pluxml4.jpg

    Je crée un article, je clique sur "Aperçu" - j'obtiens ceci:
    Fatal error: Call to undefined function urlify() in D:\OpenServer\domains\pluxmlTran.ru\core\admin\article.php on line 81

    Et - je n'ai pas Linux, je ne travaille que sous Windows.
    Parce que je peux seulement télécharger les archives mises à jour ou les fichiers individuels et réinstaller le système après les corrections.
Connectez-vous ou Inscrivez-vous pour répondre.