Košarica (0)
  • Vaša košarica je trenutno prazna

NEOSERV BLOG

Novice in nasveti iz sveta domen, gostovanja, SSL certifikatov, spletnih strani, spletnih trgovin in ostalih področij spleta.

Ko začnemo raziskovati, kako spletno stran, izdelano v sistemu WordPress, prevesti v drug jezik, hitro naletimo na vtičnik WPML. Gre namreč za daleč najbolj popularen vtičnik, ki omogoča enostavno prevajanje WordPress grafičnih predlog.

Čeprav je vtičnik izjemno popularen, pa je pogosto drugače z njegovo priljubljenostjo, saj marsikomu povzroča težave s hitrostjo delovanja spletne strani. Eden od glavnih razlogov za to je samodejno iskanje besedilnih nizov, ki jih je možno prevesti.

Vtičnik WPML je tako »krivec« za ogromno število vrstic v podatkovni bazi. Večina teh vrstic z besedilnimi nizi prevodov je neuporabljenih in tako odvečnih. V nadaljevanju boste izvedeli, kako lahko odvečne vrstice izbrišete (z in brez uporabe WP-CLI) in s tem pohitrite delovanje svoje spletne strani ter zmanjšate možnost napak.

Če vam vtičnik WPML povzroča težave s počasnim delovanjem spletne strani, vam svetujemo, da preizkusite vtičnik Polylang. Gre za brezplačno alternativo, ki prav tako omogoča večjezičnost spletnega mesta, hkrati pa mnogo manj vpliva na njegovo hitrost.

Kazalo

  1. Priprava varnostne kopije podatkovne baze
  2. Urejanje datoteke wp-config.php
  3. Izbris neprevedenih besedilnih nizov iz WPML tabele
  4. Dokončanje čiščenja neprevedenih besedilnih nizov

1. Priprava varnostne kopije podatkovne baze

Preden se lotite čiščenja MySQL podatkovne baze, naredite varnostno kopijo. Preverite navodila v tem prispevku ali uporabite spodnji WP-CLI ukaz.

wp db export before-translation-clean.sql --all-tablespaces --allow-root

Preden lahko odstranite neprevedene WPML besedilne nize, morate urediti še nekaj sprememb v datoteki wp-config.php, ki se nahaja v osnovni mapi WordPress spletne strani.

2. Urejanje datoteke wp-config.php

V datoteko wp-config.php morate dodati spodnje vrstice kode, ki se nanašajo na status prevajalskih nizov, ki jih uporablja vtičnik WPML.

define( 'ICL_STRING_TRANSLATION_PARTIAL', 2 );
define( 'ICL_STRING_TRANSLATION_COMPLETE', 10 );
define( 'ICL_STRING_TRANSLATION_NEEDS_UPDATE', 3 );
define( 'ICL_STRING_TRANSLATION_NOT_TRANSLATED', 0 );
define( 'ICL_STRING_TRANSLATION_WAITING_FOR_TRANSLATOR', 1 );

Omenjene nastavitve lahko uredite tudi z WP-CLI, in sicer s spodnjim wp config set ukazom.

wp config set ICL_STRING_TRANSLATION_PARTIAL 2 --allow-root

Po potrjenem vnosu boste prejeli obvestilo, da je bila konstanta uspešno dodana v wp-config.php.

Success: Added the constant 'ICL_STRING_TRANSLATION_PARTIAL' to the 'wp-config.php' file with the value '2'.

Postopek ponovite še za preostale štiri vrstice kode.

wp config set ICL_STRING_TRANSLATION_COMPLETE 10 --allow-root
wp config set ICL_STRING_TRANSLATION_NEEDS_UPDATE 3 --allow-root
wp config set ICL_STRING_TRANSLATION_NOT_TRANSLATED 0 --allow-root
wp config set ICL_STRING_TRANSLATION_WAITING_FOR_TRANSLATOR 1 --allow-root

Tako, zdaj ste pripravljeni na brisanje neprevedenih besedilnih nizov.

3. Izbris neprevedenih besedilnih nizov iz WPML tabele

Pri brisanju neprevedenih nizov si boste pomagali z nekaj preprostimi SQL ukazi.

Najprej preštejte število neprevedenih besedilnih nizov.

SELECT COUNT(*) FROM wp_icl_strings WHERE status IN (3, 1, 0);

Tu je še WP-CLI verzija ukaza.

wp db query "SELECT COUNT(*) FROM $(wp db prefix --allow-root)icl_strings WHERE status IN (3, 1, 0);" --allow-root

Nato s spodnjim ukazom izbrišite besedilne nize, ki ne ustrezajo kriteriju “prevedeno” (ang. translated) v skladu s konstantami, predhodno določenimi v datoteki wp-config.php.

Privzeta nastavitev predpone za tabele WordPress podatkovne baze je wp_. Če v svoji bazi podatkov uporabljate drugo predpono, spodnje ukaze ustrezno prilagodite.

DELETE FROM wp_icl_strings WHERE status IN (3, 1, 0);

Če uporabljate WP-CLI, vpišite ukaz.

wp db query "DELETE FROM $(wp db prefix --allow-root)icl_strings WHERE status IN (3, 1, 0);" --allow-root

Tu je naslednji SQL ukaz, s katerim ugotovite število neprevedenih besedilnih nizov.

SELECT COUNT(*) FROM wp_icl_string_translations WHERE string_id NOT IN (SELECT id from wp_icl_strings);

Še WP-CLI verzija zgornjega ukaza.

wp db query "SELECT COUNT(*) FROM $(wp db query --allow-root)icl_string_translations WHERE string_id NOT IN (SELECT id from $(wp db prefix --allow-root)icl_strings);" --allow-root

Zdaj izbrišite še te vnose.

DELETE FROM wp_icl_string_translations WHERE string_id NOT IN (SELECT id from wp_icl_strings);

Pri uporabi WP-CLI vpišite naslednje.

wp db query "DELETE FROM $(wp db prefix --allow-root)icl_string_translations WHERE string_id NOT IN (SELECT id from $(wp db prefix --allow-root)icl_strings);" --allow-root

Zdaj morate tabele še izprazniti (ang. truncate).

TRUNCATE wp_icl_string_packages;
TRUNCATE wp_icl_string_positions;

Še WP-CLI alternativa.

wp db query "TRUNCATE $(wp db prefix --allow-root)icl_string_packages;" --allow-root
wp db query "TRUNCATE $(wp db prefix --allow-root)icl_string_positions;" --allow-root

Preostane vam še zadnji korak, v katerem boste odstranili konstante iz datoteke wp-config.php ter poskrbeli, da se vam tabele podatkovne baze ne bodo ponovno začele polniti.

4. Dokončanje čiščenja neprevedenih besedilnih nizov

Ponovno odprite datoteko wp-config.php in odstranite vrstice, ki ste jih vnesli pred kratkim.

define( 'ICL_STRING_TRANSLATION_PARTIAL', 2 );
define( 'ICL_STRING_TRANSLATION_COMPLETE', 10 );
define( 'ICL_STRING_TRANSLATION_NEEDS_UPDATE', 3 );
define( 'ICL_STRING_TRANSLATION_NOT_TRANSLATED', 0 );
define( 'ICL_STRING_TRANSLATION_WAITING_FOR_TRANSLATOR', 1 );

Pri odstranjevanju vrstic si lahko pomagate tudi z WP-CLI.

wp config delete ICL_STRING_TRANSLATION_PARTIAL 2 --allow-root
wp config delete ICL_STRING_TRANSLATION_COMPLETE --allow-root
wp config delete ICL_STRING_TRANSLATION_NEEDS_UPDATE --allow-root
wp config delete ICL_STRING_TRANSLATION_NOT_TRANSLATED --allow-root
wp config delete ICL_STRING_TRANSLATION_WAITING_FOR_TRANSLATOR --allow-root

Zdaj pa morate v WordPress administraciji izključiti samodejno registracijo nizov in s tem preprečiti, da bi se tabele podatkovne baze ponovno polnile z nepotrebnimi vnosi.

1. V WordPress administraciji se pomaknite v WPML -> String Translation -> Auto register strings for translation in kliknite na Edit.

WPML - Samodejna registracija besedilnih nizov za prevajanje

2. Odstranite kljukico pri okencu v levem zgornjem kotu, da odstranite kljukice pri celotnem seznamu nastavitev. Kliknite na modri gumb Apply.

WPML - Izključitev samodejne registracije prevodov

Zdaj bi na tej strani moralo biti vidno obvestilo, da so vsi besedilni nizi prevodov izključeni (ang. Strings from all text domains are excluded).

WPML - Obvestilo o izključitvi prevodov

Preostane vam le še to, da poustvarite tabele, ki ste jih izpraznili v enem izmed prejšnjih korakov.

3. V WordPress administraciji se pomaknite v WPML -> Support in poiščite naslednji zapis …

‘For advanced access or to completely uninstall WPML and remove all language information, use the troubleshooting page’

… in kliknite na povezavo, ki se nahaja na besedi troubleshooting.

4. Odprla se vam bo stran za odpravljanje napak, kjer poiščite gumb Recreate ST DB cache tables in kliknite nanj.

WPML - Ponovno kreiranje tabele v podatkovni bazi

Tako, prišli ste do konca! Vtičnik WPML zdaj ne bi več smel slediti samodejni registraciji nizov za prevajanje. Podatkovna baza vaše WordPress spletne strani ne bo več tako zasičena z nepotrebnimi vnosi, kar bo pohitrilo delovanje spletnega mesta in zmanjšalo možnost pojava napak.

KOMENTARJI

KOMENTIRAJTE OBJAVO

(obvezno)
(obvezno, e-poštni naslov bo skrit)
(neobvezno)
Varnostno vprašanje, ki potrdi, da ste resnična oseba.