Sådan virker sprogne i osCommerce

Længere beskrivelser af hvordan man nemmest kommer gennem "junglen" :o).
Dette forum er ikke beregnet til spørgsmål.
Tanken er at den kan blive en manual - på sigt - mens Tips Og Tricks er til kortere fif.

Redaktør: Redaktionen

Sådan virker sprogne i osCommerce

Indlægaf Kennith » 2008-06-29 05:25

Det efterfølgende er egentligt skrevet som svar i en tråd men da der jævnligt er folk der har problemer der relatere sig til sprog og det mange gange letter arbejdet når man forstår systemet så syntes jeg ligeså godt den kunne smides her også, der er lavet nogle ganske få ændringer.

Det er der såmænd ikke det store hokus pokus i hvordan osCommerce finder ud af hvor den skal finde de rigtige oversættelser, der er nemlig nogen der har fortalt den det :)

Meget hurtigt forklaret og uden at blive for teknisk så kan du i stort set alle filerne se at der bruges en kommando der hedder require(et_eller_andet_fil_navn); det betyder at siden når den loader lige skal indsætte indholdet af den angivne fil der.

Alle synlige sider inkludere filen /includes/application_top.php og her ligger der noget kode der fastslår hvilket sprog der bruges lige nu, og ligger det i en variabel ($language) som så kan kaldes andre steder. Efter at have fastslået sproget så inkludere den den tilhørende sprogfil, f.eks. danish.php og de ting der bliver defineret her i er altså tilgængelige på alle synlige sider.

/includes/header.php er ikke i sig selv en synlig fil men den bliver inkluderet på alle synlige sider, den har ikke sin egen selvstændige sprogfil så den nasser lidt på application_top der jo som nævnt er inkluderet i alle sider.

På de synlige sider som f.eks. index.php finder du i toppen en require(.... der henter en tilhørende sprogfil, på index.php ser det sådan ud: require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_DEFAULT); Nu ender det så med at blive lidt teknisk alligevel ;) DIR_WS_LANGUAGES bliver defineret i /includes/configure.php og indeholder stien til mappem med sprogfiler, son standard includes/languages/ . (punktum) betyder at den skal fortsætte direkte med at skrive indholdet af $languages som vi jo fandt i application_top der kommer så et . igen og den fortsætter nu er det ikke en variabel men "tekst" der skal skrives det skal i denne sammenhæng omsluttes af ' ' så her skiver den altså / igen et . og så FILENAME_DEFAULT, sidstnævnte bliver defineret i includes/filenames.php og hvis du kigger her vil du se at det er index.php. Det endelige resultat er at så require(/includes/languages/danish/index.php) Så langt så godt....(nu er vi næsten færdige)

I filer som f.eks. filenames.php, configure.php og selvfølgelig sprogfilerne ser du en lang række af define(...... et eksempel fra sprogfilen til index.php er define('TABLE_HEADING_MODEL', 'Model'); Hvis vi kigger på "anatomien" i den så er den ret simpel define betyder jo definer så kommer der så en parentes som fortæller os (eller rettere serveren) hvad det er der skal defineres og først kommer det der skal defineres omsluttet af ' ' så kommer der et komma for at fortælle systemet at nu kommer definationen og den er så også omsluttet af ' ' og parentesen afsluttes. Så define('TABLE_HEADING_MODEL', 'Model'); fortæller altså at når du støder på TABLE_HEADING_MODEL så skal du opfatte det som om der stod Model. Et tilsvarende eksempel fra filenames.php er define('FILENAME_ACCOUNT', 'account.php'); og her fortæller vi altså at FILENAME_ACCOUNT skal oprettes som om der stod account.php

Når man ønsker at skrive en "dynamisk" tekst pruger man f.eks. kommandoen echo der betyder skriv/vis og så f.eks. TABLE_HEADING_MODEL Så hvis man i sin fil skriver <?php echo TABLE_HEADING_MODEL; ?> så vil resultatet blive at der på siden som den besøgende får vist bliver skrevet Model, når du har lokaliseret en af definationerne så kan du prøve for sjov at udkommentere eller slette (husk at kopiere først) den linie. Hvis du f.eks. gør det med define('TABLE_HEADING_MODEL', 'Model'); så vil du se at der i dine produktlister i stedet for at stå Model i toppen af listerne nu pludselig står TABLE_HEADING_MODEL fordi den ikke er blevet defineret så skriver osC simpelthen bare det der står.

Så når du har f.eks. installeret et contribution og der ligepludselig står et eller andet der opbygget sådan HER_ER_EN_TEXT istedet for noget fornuftigt så har du garenteret ikke fået lagt danske sprogfiler ind. Løsningen vil så være at kopiere den engelske sprogfil over i mappen danish og efterfølgende rette/oversætte alle define('HER_ER_EN_TEXT', 'oversættelse her').
Hvis du har spørgsmål til Unique Free så stil dem her viewforum.php?f=53
Brugeravatar
Kennith
VIP medlem
VIP medlem
 
Indlæg: 2511
Tilmeldt: 2007-04-30 01:15
Geografisk sted: Aalborg

Tilbage til How-To

Hvem er online

Brugere der læser dette forum: Ingen tilmeldte og 3 gæster

cron