Översättningsfunktionen för PHP-kod i WordPress använder PHP-funktionen gettext(). Översättningarna redigeras i textfiler med filändelsen .po
, men när sidan körs hämtas översättningarna från en kompilerad version av samma fil, med ändelsen .mo
.
De vanligaste programmen för hantering av po-filer kan själva söka igenom programkoden efter strängar som går att översätta, men många utvecklare av tillägg och teman brukar skicka med en mallfil med filändelsen .pot
.
Du kan använda Loco Translate för att skapa din översättning, men om du sedan lägger den med filnamnet sv_SE.mo i temats mapp languages kan du sedan inaktivera Loco eftersom tillägget inte används vid körning av sidor i WordPress (med undantag för funktionen i Loco som kan lägga översättningen på en annan plats än normalt).
Om temat vore utformat enligt standarden för WordPress (så att temat använde en textdomän som sammanfaller med temats slug) så hade jag nog förväntat mig att översättningarna borde ha hetat något i stil med workscout-sv_SE.mo, men man kan inte få allt, kantänka).
Personligen har jag aldrig använt Loco. Jag brukar köra med https://poedit.net/ på min egen dator i stället (när jag inte arbetar på olika online-plattformar).
Om du vill följa vår svenska stilmall kan du läsa igenom https://wpsv.se/engagera-dig/stilguide-for-oversattningar/
Tänk på att om/när du uppdaterar ditt tema kommer WordPress att kasta allt innehåll under temats mapp, därför ska du se till att spara din översättning någonstans där den inte försvinner.
Nuförtiden har WordPress även stöd för översättningar som konsumeras direkt i Javascript, och där bor översättningarna i json-filer, men det verkar du inte behöva i just detta fall.
Tusen tack för ett djupgående svar och lite utbildning i detta 🙂👍
Men om jag förstår dig rätt är loco bara ett sätt att hitta vad i dom filerna som ska översättas och inte ett aktivt plug in som ligger och ”sölar ner” sidan alltså? Jag hade någon konstig tanke att pluginet översatte löpande när man klickar runt på sidan och behövde ladda över svenskan på engelskan – därav min oro av hastigheten 😅 Men då får jag bara vara noga att ha översättningen sparad lokalt på min dator också ifall det skulle hända något framåt. Återigen stort tack för din hjälp! 😇
-
Det här svaret redigerades för 1 år, 4 månader sedan av
flamuren.
Loco är ett tillägg som hjälper dig att administrera dina översättningar. Loco översätter ingenting åt dig.
Uppföljning lite senare när jag pillat en massa med hemsidan. Tack för hjälpen. Använde loco translate och har översatt allt jag hittat. Dock kunde jag inte översätta kundvagens meddelande i woocommerce – ”no products in cart”. Testade massa olika sätt och frågade både loco supporten och mitt temats support samt woocommerce. Men hitta tillslut detta när jag googlade som funkar:
// translation of empty cart
function change_translate_text( $translated_text ) {
if ( 'No products in the cart.' === $translated_text ) {
$translated_text = 'Inga produkter i varukorgen.';
}
return $translated_text;
}
add_filter( 'gettext', 'change_translate_text', 20 );
__________________________
Detta la jag i function filen i mitt barntema. Dock hittade jag någon notering i wordpress om funktionen och kommentarer att det inte är bästa sättet att göra det på. Vet du tor-björn om det går att optimera koden ytterligare eller göra den mer träffsäker?
här finns kommentare
där diskuteras översättningensfunktionen tror jag och där menar någon att detta inte är bästa sättet.
-
Det här svaret redigerades för 11 månader, 1 vecka sedan av
flamuren.
Finns denna sträng med i din po-fil? Kanske det är något strul som gör att sökningen efter översättningsbara strängar missar just denna fil.
Kan du hitta var i temat denna sträng finns? (det är inte en sträng från WooCommerce, utan från temat eller någon utökning till WooCommerce, alltså ett tredjepartstillägg).
Ja den finns med i po-filen. Iaf samma sträng. Men det kanske är kopierat till temat på något sätt också – men där hittas det inget som ens liknar strängen.
Enligt woocommerce och andra så ska det vara i woocommerce. Men den vill verkligen inte översättas förutom med den koden ovan. Använder jag en domain så översätts den inte 🤷♂️
Jag har pillat mer. Mina översättningar var mer eller mindre kaos. hade 2800 översättningsfiler i en mapp som jag har rensat.
Sen ser jag även att jag har 758 filer under ”wp-content/languages/”. En del uppdaterade idag vid något klockslag. Bisart många språk osv. Kan jag rensa här på något sätt? Och varför laddar WP ner språk jag inte ens använder?
Jag såg ditt svar här gällande detta tror jag: https://wordpress.org/support/topic/why-is-there-so-many-translation-updates/
Kan jag på något sätt få WP att endast ladda ner svenska (och engelska där det saknas svenska)?
EDIT: jag följde denna guide och rensade ut allt: https://baswijdenes.com/how-to-uninstall-a-language-in-wordpress/
-
Det här svaret redigerades för 11 månader sedan av
flamuren.
-
Det här svaret redigerades för 11 månader sedan av
flamuren.