Puncte:0

Cum funcționează importul traducerilor unui modul contrib?

drapel cn

Versiunea Drupal: 9.3.13

Practic, încerc să înțeleg cum funcționează utilizarea traducerii unui modul contrib. Vreau să pot descărca și folosi traducerile din infrastructura Drupal și nu pot face acest lucru să funcționeze.

Am un site cu două limbi, engleză și germană (implicit). Am rulat „drush locale-check” și „drush locale-update”, iar asta a importat fișierul în limba germană de bază (care acum este salvat la „web/sites/default/files/translations/drupal-9.3.13.de. po"). Dacă limba actuală a interfeței este germană, văd tot felul de caracteristici de bază traduse în germană.

Module active:

  • Traducerea configurației
  • Traducerea interfeței
  • Limba

Am instalat apoi un modul, mai întâi încărcându-l prin compozitor și apoi instalându-l prin pagina „admin/module”. M-am asigurat că un șir al modulului a fost folosit într-o pagină, că acest șir este tradus pe localize.drupal.org pentru versiunea curentă a modulului și că a apărut sub „admin/config/regional/translate” ca netradus după aceea. Apoi am rulat din nou ambele comenzi de traducere. Rezultatul spune că traducerile pentru un proiect au fost verificate și că nu s-a schimbat nimic. Nu a apărut nicio traducere pentru șirul meu de testare.

Tocmai am testat acest lucru pe o nouă instalare Drupal cu modulul „drupal/cookies” (versiunea 1.0.18, https://www.drupal.org/project/cookies).Pagina modulului de pe localize.drupal.org arată o mulțime de șiruri de caractere traduse: https://localize.drupal.org/translate/languages/de/translate?project=cookies&status=2&release=531668&search=&author&context=all&limit=10&sid=0

De ce stiu:

  • Modulele mele personalizate folosesc fișiere .po, iar acestea sunt încărcate foarte bine.
  • Se pare că există o eroare care face ca noile versiuni ale modulelor să nu fie preluate (https://www.drupal.org/project/drupal/issues/2575945). Acest lucru este, de asemenea, rău, dar aici nicio traducere pentru modul nu este încărcată în primul rând.

Am încercat să depanez acest lucru și am ajuns până la verificarea „locale.project” și „locale.translation_status” din tabelul „key_value”. Ambele conțin doar nucleul Drupal pe site-ul meu de testare. În site-ul de producție sunt de asemenea conținute toate modulele personalizate, dar niciunul dintre modulele contribuite.

Deci întrebarea este: ce îmi lipsește aici? Cum ar trebui să funcționeze asta?

drapel cn
Un simplu da sau nu dacă încărcarea traducerilor pentru modulele contrib ar trebui să funcționeze în acest fel ar fi utilă. :-)
Puncte:1
drapel cn

După multă depanare, am rezolvat această problemă comparând comportamentul lui Drupal cu o instalare complet nouă. Desigur, „drush locale-update” ar trebui să obțină traduceri pentru modulele contrib!

Ce s-a întâmplat aici a fost această linie în composer.json:

"config": {
     „eliminare modificări”: adevărat,
     "preferred-install": "sursa",
     „sortare-pachete”: adevărat
},

Linia ofensiva este "preferred-install": "sursa". Acest lucru a fost comis cu ceva timp în urmă, nimeni nu știe de ce și îl face pe compozitor să verifice codul din git în loc să descarce fișierul zip din Drupal.

Acest lucru nu face o mare diferență, cu excepția faptului că Drupal adaugă în mod normal informații în fișierul info.yml al modulelor:

# Informații adăugate de scriptul de ambalare Drupal.org pe 2021-04-02
versiunea: „8.x-1.2”
proiect: „foobar”
marcaj data: 1617351415

Cu un git checkout, aceasta lipsește! Și când Drupal verifică mai târziu pentru traduceri, parcurge toate modulele și încearcă să obțină numele proiectului. Aparent, în Drupal proiectele sunt traduse, nu modulele individuale. Unele module conțin o mulțime de sub-module, care au același nume de proiect și, prin urmare, aceeași bază de traducere. Deoarece toate modulele mele de contribuție au venit din git mai degrabă decât din fișierul zip îmbunătățit, asta însemna că Drupal le-a sărit peste toate la „drush locale-update”! Nu a fost scoasă nicio informație despre aceasta, pur și simplu au fost omise în liniște.

Soluția pentru mine a fost să schimb linia ofensătoare la aceasta:

„preferred-install”: {
    "drupal/*": "dist",
    "*": "sursă"
},

De asemenea, rețineți că trebuie să ștergeți modulele de pe web/modules/contrib și să le reinstalați prin compozitor. Doar schimbarea celor de mai sus și rularea „compositor install” nu este suficientă!

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.