Arkiv for juli 2008

Bemærk: Dette indlæg er blevet opdateret 26. august 2008 med informationer omkring datoformater. Du kan hoppe direkte til den tilføjede tekst, hvis du vil.

WordPress er blevet en af de meste (hvis ikke den mest udbredte) blogging-platforme. Det skyldes blandt andet den enorme palette af WordPress-temaer (altså designs) der er derude.

Desværre er det få af disse temaer, der er oversat til dansk, og det holder jo bare ikke 100%, at der står "Published by", "Leave a comment" og "This entry was posted…", når blogindlæggene er på dansk, vel? :-)

Heldigvis er det meget nemt at oversætte WordPress-temaer. Du skal bruge Poedit til at lave oversættelserne, så den kan du godt gå i gang med at hente og installere, mens du læser videre.

Da der også er en ok chance for, at du skal redigere i tema-filerne, får du også brug for en god tekst-editor. Her er Notepad++ noget af det bedste, du kan få. Akkurat som Poedit er den gratis.

Punkt 1
Det første, du skal gøre er at undersøge, om temaet nu ikke skulle være oversat til dansk i forvejen. Det kan du tjekke ved at se, om der er en fil med navnet "da_DK.mo" sammen med dit tema. Er der det, er temaet formentlig klar til dansk. Hvis der følger en "da_DK.po"-fil med er det endnu bedre. Det betyder nemlig, at du kan redigere i oversættelsen.

Forvirret? Det behøver du ikke være. WordPress oversættelser foregår ved, at man redigerer i en såkaldt .po-fil med Poedit (passende navn, ikke?). Hver gang man gemmer sin .po-fil, laver Poedit en opdateret .mo-fil. Det foregår helt automatisk, og .mo-filen bliver placeret i samme mappe som .po-filen. Det er .mo-filen, WordPress henter oversættelsen fra, men det er i .po-filen, du kan redigere i oversættelsen.

.po- og .mo-filer skal placeres i mappen for det specifikke tema, sammen med .php-filerne.

Punkt 2
Okay, hvis der ikke er en "da_DK.mo" og/eller "da_DK.po", kan du med det samme tjekke, om der er andre .po-filer. Er der det, kan du tage en kopi af en af dem, omdøbe den til "da_DK.po" og oversætte den til dansk. Som forklaret ovenfor vil Poedit så automatisk give dig en "da_DK.mo"

Punkt 3
Hvis der slet ikke er nogle .po-filer, er din sidste redning (inden du skal på arbejde :-)), at du kan tjekke, om der er en .pot-fil. Er der det, gør du følgende:

  1. Start Poedit
  2. "File" » "New catalog from POT file…"
  3. Find din .pot-fil og åbn den med Poedit
  4. Lav oversættelserne og gem filen som "da_DK.po"

Så har du en dansk oversættelse, som du kan uploade sammen med tema-filerne.

Punkt 4
Okay, hvis ingen af de ovenstående tre punkter har givet gevinst, er der ikke andet at gøre end at spytte i hænderne, gnide håndfladerne mod hinanden og gå i gang.

Er temaet klar til at blive oversat?
Det første du skal gøre er at tjekke, om temaet overhovedet er klar til at kommunikere med .mo-filen. Der er kun én måde at gøre dette på: Kig i koden.

Gå alle .php-filerne i temaet igennem. Alle (og jeg mener alle) tekststrenge, der skal oversættes skal være inkluderet i en "__" eller "_e" funktion.

Hvad er nu det, tænker du nok. "__" og "_e" er WordPress' måde at trække oversættelser ind:

"__" er til tekststrenge, som bliver lavet om til links, det er for eksempel, "Previous page", "Next page", "No comments", "1 comment", "% comments" etc.

"_e" er til tekststrenge der er, ja, tekststrenge. Det vil sige al tekst, der fremstår, som ren tekst, og ikke bliver til links. Her er det lidt tricky, for en "_e"-streng kan sagtens indgå i et link:

<a href="http://www.onlineminds.dk">Visit Online Minds</a>

I dette tilfælde vil "Online Minds" være en tekststreng og linktitel. Men der skal en "_e" omkring. Og det ser sådan ud:

<a href="http://www.onlineminds.dk"><?php _e('Visit Online Minds', 'onlineminds'); ?></a>

Men hov, hvad er nu det, der står efter kommaet? 'onlineminds'?

Jo, det er sådan, at det er de færreste ting i livet, der er lige til, og sådan er det også med WordPress-oversættelser. Hver oversættelse skal have et tekstdomæne. WordPress er rimelig ligeglad med, hvad du sætter tekstdomænet (for det tema, du er ved at oversætte) til, pas dog på med mellemrum, men husk for pokker, at lade det være det samme hele vejen igennem.

Jeg gør gerne det, at jeg sætter tekstdomænet til det samme som navnet på tema-mappen. Ligger temaet i en mappe med navnet "yellowjacket-10", ja så sætter jeg tekstdomænet til "yellowjacket-10".

Til slut skal vi kalde tekstdomænet, men lad os vente lidt med det.

"_e" er den, der er lettest at komme i gang med, så lad os starte der. Som det fremgår af ovenstående er oversættelsen bygget op efter følgende model:

<?php _e('Original tekst', 'tekstdomæne'); ?>

Det vil sige, at du skal lede .php-filerne igennem efter alle tekst-strenge (som hører under "_e") og sætter <?php _e(' foran og ', 'tekstdomæne'); ?> bagefter.

__ awaits…
Men der er jo stadig "__" tilbage. Her er det straks lidt mere tricky. "__" skal bruges ved alle de oversættelser, der (af WordPress) bliver omkodet til HTML-links, som forklaret ovenfor.

Det vil sige, at du skal bruge "__", når du for eksempel støder på:

<?php next_posts_link('&laquo; Older Entries') ?>

Så skal du sætte selve teksten i en "__" funktion. Men frygt ej, det er ikke besværligt :-)

<?php next_posts_link(__('&laquo; Older Entries', 'tekstdomæne')) ?>

Min hadeoversættelse er, når der skal sættes "__" funktioner omkring antallet af kommentarer til et indlæg. Oprindeligt ser koden (oftest) sådan ud:

<?php comments_popup_link('No Comments &#187;', '1 Comment &#187;', '% Comments &#187;'); ?>

Som de hurtige øjne har spottet, er der her tre tekststrenge, der skal oversættes:

  • No Comments &#187;
  • 1 Comment &#187;
  • % Comments &#187;

Og da de alle tre skal oversættes, skal de i hver deres "__" funktion:

<?php comments_popup_link(__('Add Comment &#187;', 'tekstdomæne'), __('1 Comment &#187;', 'tekstdomæne'), __('% Comments &#187;', 'tekstdomæne')); ?>

Her bliver du rigtig glad for Notepad++, hvor du ved at klikke på en parentes kan se, hvor den åbner og lukker. Ellers er det nemt at glemme de to lukkeparenteser til sidst… ;-)

Hvis du synes, det hele lyder lidt for besværligt at komme i gang med, kan du starte med at kigge nogle af de allerede oversatte temaer, eller du kan kigge i standard-temaet (det ligger i \wp-content\themes\default i din WordPress), der er de korrekte funktioner de rigtige steder.

Opdatering! __ bruges også til dato- og tidsformater!
Siden jeg oprindeligt skrev dette indlæg, har jeg oversat en del flere WordPress-temaer og har opdaget behovet for at kunne tilpasse datoformatet fra amerikansk til dansk. Det ser bare dumt ud, når der står "juli 31st" ud for et indlæg.

Når WordPress snakker dato og tid, bruges standardoperatørerne for PHP.

Det vil sige, at "F jS, Y" bliver til (på engelsksproget WordPress) "July 31st" og altså "juli 31st" på dansk. Derfor vil vi (ved at skæve til operatørerne for PHP's dato og tid) have den til at skrive 31. juli, og det gøres ved at skrive "j. F". "Y" kan vi bare lade være, da det giver året, altså "2008" i skrivende stund.

Ergo, når du møder følgende:

<?php the_time('F jS, Y'); ?>

Erstatte det med:

<?php the_time(__('F jS, Y', 'tekstdomæne')); ?>

Så bliver det trukket ud i din oversættelsesfil, og du kan indtaste "j. F Y" (uden anførselstegn) i Poedit, når du kommer dertil.

Det samme gør sig gældende med andre dato- og tidsformater i WordPress. Tilføj hellere listen over PHP-operatører til dato og tid til dine bogmærker, den er god at have ved hånden :-)

Kald tekstdomænet
Når du er færdig med at sætte strengene i "__" og "_e" funktioner, skal du kalde det tekstdomæne, som du har valgt. Hvis der ikke er det samme tekstdomæne på alle strengene, bliver strengene med det forkerte tekstdomæne ikke oversat.

Men for at få det til at virke, er du først og fremmest nødt til at kalde tekstdomænet. Det gør du ved at gå ind i "functions.php"-filen i det tema, du vil oversætte. I den første sætning (efter "<?" — så teknisk set er det linie #2) skriver du:

load_theme_textdomain('tekstdomæne');

Når alt dette er gjort, skal du i gang med selve oversættelsen. Her skal du bruge Poedit, som gerne skulle være installeret på din maskine nu.

  • Åbn Poedit
  • "File" » "New catalog…"
  • Under "Project info" beskriver du nu oversættelsen og vælger sprog ("Danish"), land ("DENMARK") og tegnsæt ("UTF-8").
  • Under paths klikker du på "New item" og skriver stien til WordPress-temaet — det letteste er at kopiere den ind fra din Stifinder, så er du sikker på, det er den rigtige!)
  • Under keywords skal du trykke "New item" og skrive "__". Tryk på "New item" igen og skriv "_e".
  • Når det hele er på plads, klikker du på "OK"

Poedit scanner nu .php-filerne igennem for forekomster af "__" og "_e" og trækker tekststrengene ind.

Nu er det bare lige ud ad landevejen at oversætte tekststrengene. Når du er færdig har du, som nævnt i starten af dette indlæg, en .po- og .mo-fil.

Og så skulle dit WordPress-tema gerne være oversat :-)

BEMÆRK: Til trods for al det hårde arbejde, kommer din oversættelse ikke frem, hvis din blog ikke er sat til dansk. Hvis den ikke er det, gør du det i din "wp-config.php"-fil, som WordPress oprettede, da det blev installeret.

I linjen med "WPLANG" skal der stå:

define ('WPLANG', 'da_DK');

Jeg satser på at vende jeg tilbage med en lignende guide til oversættelse af WordPress-plugins på et senere tidspunkt…jeg kan dog ikke love noget tidspunkt i disse ferie-tider :-)

Relaterede indlæg

Comments 7 kommentarer »

En af de gode ting ved Facebook er, synes jeg, at det giver en mulighed for at følge med i, hvad ens vender går rundt og laver. Det fungerer ved, at de opdaterer deres status (de såkaldte "status updates"), og så kan man følge med.

Men jo flere venner man får og jo mere aktivitet, der bliver på Facebook (og jo flere der finder ud af at bruge featuren), jo sværere bliver det at følge med. Frygt dog ej, for din bedste ven hedder: RSS.

Jeps, ved hjælp af et RSS-feed, kan du følge dine venners gøren og laden i din feed reader, hos mig er det Google Reader og Opera Mini.

Du finder feed'et ved at klikke på "Friends" og ude i venstremenuen klikker du på "Friends' Status Feed". Så har du URL'en til dit feed (som består af dit Facebook bruger-ID og en unik nøgle), som du kan putte ind i dit feedlæser-program.

Relaterede indlæg

Comments 7 kommentarer »

Funktionen 'Suggest friends' er i det sociale medie Facebook kun forbeholdt nye brugere – og kun én gang. Mange har forgæves forsøgt at genfinde applikationen for senere at foreslå venner iblandt venner. Her er imidlertid løsningen på, hvordan du pærelet omgår denne tilsyneladende totale tanketorsk af en forglemmelse hos Facebook.

Comments 3 kommentarer »

En af de mere synlige nye ting i Firefox 3-browseren er den nye adressebar, kaldet "Awesome bar", der lader dig finde sider frem, du tidligere har besøgt ved, at du blot skal skrive dele af sidetitlen.

Nogle kan lide Awesome Bar, andre kan ikke. Personligt er jeg meget glad for den.

Men hvad enten du er glad for den eller ej, så bør du tjekke Firefox Extension Guru's blogindlæg om, hvordan du tweaker adressebaren i Firefox 3.

Jeg er især interesseret i tippet om, hvordan man kan udelukke bookmarks/favoritter fra de forslag, som Awesome Bar'en kommer med:

Remove ALL Bookmarks – Your displayed results will only be based on your browser history as well what has already been typed in the Smart Location Bar. With about:config change the following entries to ‘0′ (note this is a zero, not an ‘O’ also be sure to Restart Firefox and clear history after making these changes):

  • places.frecency.unvisitedBookmarkBonus
  • places.frecency.bookmarkVisitBonus

God tweaking :-)

Relaterede indlæg

Comments Ingen kommentarer »

Gmail er en fantatisk mail-service (i hvert fald hvis du spørger mig), men som standard kører Gmail på en standard http-forbindelse. Det betyder kort fortalt blandt andet, at trafikken mellem din computer og Gmail ikke er krypteret og derfor kan blive opsnuset af andre.

Gmails logon-funktion kører sikker forbindelse (https), men det gør selve Gmail ikke. Derfor har man tidligere været nødt til at installere Firefox-udvidelser (for eksempel Better Gmail fra Lifehacker) for at få sikker forbindelse, så andre ikke kan læse med.

Indtil nu.

Google har nemlig implementeret komplet https-understøttelse i Gmaillæs mere på Gmail support.

Du finder indstillingen i Gmail-indstillingerne, nederst på siden (klik for større billede):

HTTPS i Gmail

Som Google også selv skriver, kan det gøre din Gmail lidt langsommere:

Please note that selecting 'Always use https' will prevent you from accessing Gmail via HTTP (Hypertext Transfer Protocol). In addition, it may make Gmail a bit slower. If you trust the security of your network, you can turn this feature off at any time.

Hastighedsnedsættelsen kan jeg dog sagtens leve med :-)

Relaterede indlæg

Comments 3 kommentarer »

Det er feriesæson, så det kan være svært at følge med i vennernes gøren og laden på internettet. For eksempel hvad angår billedet på Flickr, kan det være svært at følge med i, hvad ens kontakter uploader. Sådan har jeg det i hvert fald.

Derfor blev jeg glad, da jeg fandt ud af, at Flickr har en e-mail-feature, hvor man kan vælge at få tilsendt e-mails, når ens kontakter uploader nye billeder og/eller, når der er aktivitet på ens billeder – det kan for eksempel være kommentarer, eller at en anden Flickr-bruger har tilføjet dit billede som favorit.

Her er opskriften på, hvordan det gøres.

  1. Log ind på Flickr
  2. Klik "Contacts" øverst
  3. I bunden af siden klikker du på "Get updates by e-mail"
  4. Markér dine ønsker ved at hakke checkbox'ene af, jeg har valgt at få en e-mail, så snart der er aktivitet på mine fotos, og at Flickr skal sende en mail en gang i døgnet med en opsamling af billeder uploadet af mine kontakter.
  5. Klik "Save changes", når du er færdig

Her kan du se et eksempel på, hvordan en mail med oplysninger om nye billeder fra kontakter kan se ud (klik på billedet for større version):

Eksempel på en mail fra Flickr

Relaterede indlæg

Comments Ingen kommentarer »

Dette tip berører kun WordPress, men med lidt ændring i koden, burde det kunne portes til at virke generelt på PHP. Mere om det i slutningen af indlægget.

Du kender muligvis TinyURL, en simpel tjeneste, der tager et langt link og gør det kortere. På dansk har vi kortlink.dk, men TinyURL er mere udbredt. Derudover har TinyURL et ret simpelt API, som Dave Winer også har skrevet om.

TinyURL-API'et fungerer på den måde, at du bruger en .php-fil hos dem (http://tinyurl.com/api-create.php), som du sender en URL ind i. TinyURL's api-create.php spytter så en TinyURL http-URL ud til dig. Lad os tage et eksempel:

http://tinyurl.com/api-create.php?url=http://www.onlineminds.dk

Resultat: http://tinyurl.com/6zu3ju.

PHP er din ven. Din bedste ven.
Okay, det var den nemme del. Nu skal vi have fat i den TinyURL, som bliver spyttet ud. Her bruger vi PHP, som også er det sprog, WordPress er skrevet i.

For overblikkets skyld slår jeg denne operation ud på to variabler, men det kan i virkeligheden godt gøres i ét hug, som jeg vil vise lige om lidt.

Først får vi fat i URL'en på den side, som spytter TinyURL'en ud, altså fx:

http://www.tinyurl.com/api-create.php?url=http://www.onlineminds.dk.

Det gør vi på den snedige måde, at vi tager den første del af URL'en (til og med "?url=") og slår det sammen med WordPress-funktionen "get_permalink", som spytter URL'en til et blogindlæg ud. I PHP ser det således ud:

<?php $gettinyurl = "http://tinyurl.com/api-create.php?url=" . get_permalink(); ?>

Variablen "gettinyurl" er nu sat til den URL, som browseren lander på, når api-create.php spytter en TinyURL til den pågældende side ud. Nu skal vi have fat i det indhold, den spytter ud: TinyURL'en. Her har PHP en herlig funktion, der hedder file_get_contents (jeg skylder en stor tak til vores udvikler Søren Pedersen her, som gjorde mig opmærksom på denne!).

Vi laver en ny variabel (lad os kalde den "tinyurl") og sætter den til at trække indholdet ud, via den parameter ("gettinyurl"), som vi lige har sat:

<?php $tinyurl = file_get_contents($gettinyurl); ?>

Nu er det eneste, du skal gøre at spytte "tinyurl" ud der, hvor du vil have TinyURL'en vist:

<?php echo $tinyurl; ?>

Sådan.

Bemærk: Dette virker kun, når du er i The Loop i WordPress, kort fortalt der, hvor WordPress trækker indlæg ud. Det er i samme område, som overskrift, link og antal kommentarer til et indlæg bliver trukket ud.

Plug it in, plug it in
Efter at have kodet dette, er jeg blevet opmærksom på et WordPress-plugin, Tiny Link, som gør præcis det samme, den gør det bare i ét smæk. Koden til Tiny Link-plugin'et ser således ud:

function TinyLink() {
// get the tinyurl link and create one for the current permalink
$tinylink = file_get_contents("http://tinyurl.com/api-create.php?url=" . get_permalink());

// Print the result
echo $tinylink;

}

Altså præcis det samme. Plugin'et gør dog noget smart. Det laver en funktion med navnet "TinyLink", som du kan kalde, hvor som helst, du vil have det (stadig så længe du er i The Loop) ved at skrive:

<?php TinyLink() ?>

Få det til at spille udenfor WordPress
Som jeg lovede tidligere, kan dette også lade sig gøre, selvom man ikke nødvendigvis er i WordPress. Og det kan det da.

I stedet for get_permalink skal du bruge en linje PHP, der spytter URL'en på den aktuelle side ud. Jeg fandt en her:

<?php $url = "http" . ((!empty($_SERVER['HTTPS'])) ? "s" : "") . "://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI']; ?>

De hurtige har sikkert gættet, hvordan kaldet til TinyURL-api'et skal se ud:

<?php $tinyurl = file_get_contents("http://tinyurl.com/api-create.php?url=" . $url); ?>

Altså fuldstændig som i før, bare med "$url" i stedet for "the_permalink()". Nu er variablen "tinyurl" TinyURL'en til den URL, som variablen bliver skrevet på. Værsgo' :-)

Fik jeg nævnt, at PHP er det sejeste sprog i verden? ;-)

Relaterede indlæg

Comments Ingen kommentarer »

Alle vil gerne undgå museskader – går jeg ud fra. En nem måde at gøre dette er ved at lade være med at bruge musen. Ja, dååh, tænker du måske.

Men tænk over, hvor meget man bruger musen, når man navigerer frem og tilbage på det store internet. For eksempel bare det at klikke på links. Klik, klik, klik.

Men hvad de færreste måske ved er, at Firefox faktisk har en indbygget genvej, så du (sammen med de andre Firefox genveje) faktisk kan slippe musen helt, når du bruger Firefox-browseren.

Du skal blot trykke på '-tasten. Det er den samme tast, som laver en stjerne (*), når du holder SHIFT nede og trykker på den (på PC, vel at mærke). Den lader dig lave en "søg mens du skriver"-søgning, akkurat som Firefox' normale søgefunktion.

Forskellen her er, at den kun søger i links. Det vil sige: Når du ser et link, du gerne vil klikke på, så trykker du på '-knappen og begynder at skrive teksten/titlen på linket. Når Firefox har fundet det rigtige link, trykker du ENTER og vupti!

Endnu et argument for ikke at lade billeder optræder som vigtige links…

Relaterede indlæg

Comments 3 kommentarer »

Blot en kort servicemeddelelse: Online Minds kører nu WordPress 2.6 (den open source publiceringplatform, vi bruger – engelsk/dansk), og opgraderingen var, som det altid er med WordPress, helt utrolig let.

  1. Backup af indlæg ved hjælp af WordPress' egen eksport-funktionalitet (strengt taget behøves dette ikke, men en opgradering er en god anledning til at få taget backup af indholdet :-))
  2. Overskriv den nuværende WordPress-installation med den nye
  3. Gå ind på www.sitenavn.yy/wp-admin og gå igennem de to steps
  4. Færdig

Se, det kunne mange softwareproducenter lære noget af :-)

Så hvis du har en WordPress < 2.6, så se at få opgraderet. Bemærk, at du muligvis skal deaktivere dine plugins inden opgraderingen til 2.6, hvis du opdaterer en en meget gammel version.

Relaterede indlæg

Comments Ingen kommentarer »

Der findes flere forskellige kalender-løsninger til din Wordpress-blog. Men skal det være lidt ud over den almindelige indbyggede WP-kalender, er det letteste nok plug-in'et 'Event-Calender'.

Comments Ingen kommentarer »