i18n Class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Medior PHP Developer

Bij Getnoticed doen wij wat we leuk vinden, websites bouwen en online marketing. Voor veel van onze klanten doen we dan ook allebei. Wel zo fijn om campagnes te draaien voor conversiegerichte website die in eigen beheer zijn. In onze vestiging in Nederweert zitten onze development afdelingen en worden de websites gebouwd. Op dit moment zijn we op zoek naar jou: dé PHP/Back-end developer die net als wij, het hoofd boven het maaiveld durft uit te steken! In het kort Even een paar punten die omschrijven wat deze toffe baan inhoudt: Het bedenken van nieuwe functionaliteiten Het verbeteren van het

Bekijk vacature »

Medior/senior PHP ontwikkelaar E-commerce

Functie Het software development team bestaat momenteel 5 scrum teams . Ieder team heeft een eigen SCRUM Master en eigen tester. Zij werken voornamelijk in PHP en met hun eigen geschreven framework wat Symfony based is . Jij bent samen met je collega’s verantwoordelijk voor het interne softwaresysteem en alle projecten die daar omheen lopen. Alles wat jij ontwikkelt, wordt direct toegepast en uitgerold (wereldwijd). Dit maakt jouw werk tastbaar en uitdagend! Een greep uit jouw werkzaamheden: Toevoegen en ontwikkelen van nieuwe functionaliteiten Logistieke software ontwikkelen voor intern gebruik Tientallen gigabytes aan data inzichtelijk maken Altijd op zoek gaan naar

Bekijk vacature »

Junior Software developer

Functie Als junior .NET ontwikkelaar start jij in een compact team met drie ervaren .NET ontwikkelaars. Wij werken op projectbasis en begeleiden zelf het hele traject van A tot Z. Wij bieden jou dan ook een brede functie aan met veel technische uitdaging! Ons traject ziet er als volgt uit: 1) Wij analyseren de behoefte van onze klant 2) Wij werken de behoefte uit en vertalen dit naar technische werkzaamheden en maken een uren/kosten schatting; 3) Wij gaan aan de slag met het ontwikkelen van het product met directe feedback van de klant, zodat datgene gerealiseerd wordt, wat gewenst is;

Bekijk vacature »

Back end developer PHP

Functie Heb jij altijd al eens bij een bedrijf willen werken waar jij géén nummertje bent, die alleen maar uitvoerend werk doet? Dan zou je hier perfect passen! Tuurlijk, je werkt aan projecten voor grote of kleine bedrijven… Het enige verschil hier is, jouw mening telt hier écht. Jouw inbreng wordt gewaardeerd, serieus genomen en gebruikt. En vergeet niet, je werkt niet alleen aan deze projecten. Er werken in totaal ruim 25 developers en designers, onderverdeeld over 3 development teams. Voornamelijk bestaande uit Medior en Senior developers, die samen voor een inspirerende en ambitieuze omgeving zorgen. Hun visie is namelijk

Bekijk vacature »

Software Developer C# .NET

Functie omschrijving Zoek jij een nieuwe uitdaging binnen development waar je komt te werken binnen een flexibel, jong en ondernemend bedrijf? Wij zijn voor deze functie op zoek naar een C# .NET Developer die enthousiast wordt van het aansluiten en begeleiden van (complexe) nieuwe klanten. Verder begeleid je complexe projecten, ben jij iemand die altijd kansen ziet? Dan zoeken wij jou! Verder ga jij je bezighouden met: Het verbeteren van functionaliteiten binnen het dataplatform; Meedenken in oplossingsrichtingen; Werken aan de architectuur; Ontwikkelen van nieuwe technologieën. Bedrijfsprofiel Waar ga je werken? De organisatie waar je voor gaat werken heeft een onafhankelijk

Bekijk vacature »

Applicatie ontwikkelaar

Functie omschrijving Zelfstandige applicatie ontwikkelaar gezocht voor familiair bedrijf in omgeving Barendrecht! Ben jij op zoek naar een nieuwe uitdaging en zoek jij een informele werkgever waar je zelfstandig kunt werken binnen een leuk IT team, lees dan snel verder want wie weet zijn wij op zoek naar jou! Binnen deze rol houdt jij je met het volgende bezig: Onderhouden en ontwikkelen van de IT systemen; Opzetten van Azure Cloud systemen, denk aan interfaces, hardware op de Cloud, webportalen of BI functies; Werken aan scripts binnen verschillende software applicaties, denk aan ERP en CAD; Ontwikkelen en implementeren van MS PowerApps

Bekijk vacature »

Web Application Developer

Dit ga je doen Samen met het team werk je aan de visualisatie functionaliteiten en hoe dit gebruikt kan worden in een operationele setting; Het ontwerpen, ontwikkelen, onderhouden en leveren van support betreft het Warehouse Management Systeem en de bijbehorende web visualisaties; Je gebruikt hierbijde tools WebGL en ASP.net; Het meewerken in implementatieprojecten; Het leveren van Go-Live Support; Sparren met jouw Amerikaanse collega's. Hier ga je werken Voor een internationale organisatie in de transport zijn wij momenteel op zoek naar een Web Application Developer. Ze zijn wereldwijd de grootste speler en lopen voorop met het automatiseren van alle processen van

Bekijk vacature »

Senior .Net developer

Sogeti is een organisatie met een goede werksfeer en zo min mogelijk hiërarchische verhoudingen. Ga je bij ons als .Net Developer aan de slag? Dan werk je dagelijks met collega’s aan de mooiste IT-projecten. Deze snelgroeiende groep collega’s krijgt energie van hun vak en dat merk je op de werkvloer. Natuurlijk krijg jij de mogelijkheid je te certificeren. We organiseren regelmatig technische Meet-ups en doen we veel aan kennisdeling. Mede hierdoor zij wij dit jaar Microsoft Partner of the year geworden. Sogetisten staan klaar voor elkaar, hebben lol met elkaar en daarmee behalen we de mooiste resultaten! Werken bij Sogeti

Bekijk vacature »

PHP Developer

Functie omschrijving Als PHP Developer ga jij aan de slag met uitdagende software projecten. Jij gaat in deze functie software applicaties ontwikkelen. Deze software projecten zijn heel divers, en deze organisatie maakt software, van A tot Z. Klanten kunnen in elke sector werkzaam zijn, van profit tot non-profit. Deze software bouw je vooral in PHP en specifiek Laravel. Dit framework kent dus geen geheimen voor jou. De software die jij gaat ontwikkelen is heel divers, van urenregistratiesystemen tot compleet geautomatiseerde tools. In deze veelzijdige functie ga jij je zeker niet vervelen, elke dag bestaat weer uit nieuwe uitdagingen. Bedrijfsprofiel Deze

Bekijk vacature »

IT Manager team PaaS

TenneT is hard groeiende om haar ambities waar te kunnen maken. Zo nemen wij een leidende rol in het aanjagen van de energietransitie. Het werven van nieuw talent speelt daarin een cruciale rol. Wij zijn op zoek naar een gedreven Lead PaaS die hieraan wil bijdragen en misschien ben jij dat wel? Jouw bijdrage aan TenneT Je wordt de Teammanager (Lead) van een nieuw team binnen de afdeling Basic van Information Technology and Facilities (ITF) van TenneT. Het team heet Platform as a Service. Hier wordt elke dag in een goede sfeer met zijn allen hard gewerkt om vanuit IT

Bekijk vacature »

Developer Angular & Kotlin

Dit ga je doen Het (door)ontwikkelen van mobiele apps en webapplicaties; Het opstellen van technisch ontwerp en het bespreken van ontwerpen met de software architect; Het uitvoeren van werkzaamheden op het gebied van technisch testen; Het in de gaten houden van nieuwe ontwikkelingen op jouw vakgebied en het adviseren van de organisatie hierover. Hier ga je werken Het gaat om een bekend internationaal handelsbedrijf met ruim 800 medewerkers, verdeeld over verschillende deelbedrijven. Deze organisatie is van oorsprong een familiebedrijf, er wordt hard gewerkt, er heerst een no nonsense en doeners mentaliteit, een informele sfeer en er is een mix van

Bekijk vacature »

.Net Front-end Ontwikkelaar

Wij zoeken een .Net Front-end Ontwikkelaar! Omschrijving Kun jij snel schakelen en ben je stressbestendig? Dan zoeken wij jou! Als .Net Front-end Ontwikkelaar help je mee aan de webapplicatie die over de hele wereld door allerlei bedrijven wordt gebruikt. Je werkt daarnaast mee aan nieuwe en verbeterde functionaliteiten en helpt met het oplossen van bugs. Over de opdrachtgever Je komt te werken in een ambitieus team dat zich blijft ontwikkelen. Dit is alle informatie die we nu kunnen delen over de werkplek. Als jij de .Net Front-end Ontwikkelaar bent voor deze job, vertellen we je snel nóg meer. Eisen Heb

Bekijk vacature »

C# Ontwikkelaar

Functie omschrijving We are looking for a dutch native speaker Wil jij graag aan de slag als C# ontwikkelaar en jouw skills verder ontwikkelen? Zoek niet verder! Als C# ontwikkelaar ga je aan de slag met de volgende taken: (verdere) ontwikkeling van de software voor de interne processen binnen een .net omgeving; optimaliseren van de dataprocessing; ontwerpen en implementeren van zowel desktop- als web-programmatuur; ontwikkeling van tools ten behoeve van consultants en klanten. Bedrijfsprofiel Deze organisatie is gevestigd in de regio van Den Bosch. Zij ontwikkelen business intelligence software voor een specifieke branche. Dit houdt in dat zij dashboards ontwikkelen

Bekijk vacature »

Back-end programmeur

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een uitdagende werkgever in omgeving Waalwijk zijn wij op zoek naar een enthousiaste softwareontwikkelaar met kennis of ervaring met C# en SQL. In een uitdagende rol als C#.NET Developer werk je samen met een enthousiast en informeel team aan het bouwen van maatwerk software voor variërende klanten. Verder ziet jouw takenpakket er als volgt uit: Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je houdt je bezig met het ontwikkelen

Bekijk vacature »

Senior Airport Developer ( System engineer)

De functie Nice to know (you) De nieuwe A-pier wordt de duurzaamste van Schiphol. Als deze af is ligt er 4000 vierkante meter zonnepanelen op het dak. En de toiletten? Die spoelen door met regenwater. we gaan ervoor: het creëren van de meest duurzame en hoogwaardige luchthavens ter wereld. een toekomstbestendig en duurzaam Schiphol. Daar werken we elke dag hard aan in team Development & Sustainability. Jij bent regisseur, expert én aanjager van de ontwikkeling van Schiphol. Connecting your world Hoe maak je de ambities en doelstellingen van Schiphol concreet in een project? De waarde voor Schiphol naar eisen die

Bekijk vacature »
Donald Boers

Donald Boers

07/10/2018 16:10:02
Quote Anchor link
Ik weet niet of er iemand bekend is met i18n Class? Dit is een class bedoeld voor meertalige websites. Hiermee kun je op een relatief makkelijke manier bepaalde secties (b.v. contact pagina) in de website in diversen talen weergeven d.m.v. van vertaalbestanden(lang_en.ini, lang_nl.ini). Op zich werkt dit prima ik zit alleen met het format van de output:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php echo L::contact_naam; ?>

Waar L de prefix is gevolgd door twee maal dubbele punt, waardoor ik dit onbruikbaar is als PHP variabele als ik dit in een database zou opslaan. Mijn vraag is derhalve: Is iemand bekend met deze Class en zo ja hoe kan ik di dubbele punten omzeilen. Als ik het nu in de database zet wordt gewoon de daadwerkelijke tekst L::contact_naam"in plaats van de waarde die ik er aan heb toegekend in de ini files
 
PHP hulp

PHP hulp

27/05/2026 01:38:18
 
- Ariën  -
Beheerder

- Ariën -

07/10/2018 16:24:19
Quote Anchor link
Maar met welke reden zet je dat in de database? En waar vind ik die class?
Gewijzigd op 07/10/2018 16:37:04 door - Ariën -
 
Donald Boers

Donald Boers

07/10/2018 17:05:33
Quote Anchor link
- Ariën - op 07/10/2018 16:24:19:
Maar met welke reden zet je dat in de database? En waar vind ik die class?


`@- Ariën -
Ik heb b.v.een sectie met verschillende categorieen. In plaats van alles inline te zetten leek het mij handig om doormiddel van een foreach loop over deze categorieen te gaan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<?php foreach ($categories as $category): ?>

De betreffende class vindt je hier
 
Adoptive Solution

Adoptive Solution

07/10/2018 17:14:16
Quote Anchor link
Als ik de voorbeelden zie, staat de vertaling van L::contact_naam in een ini of json bestand voor die taal.

https://github.com/Philipp15b/php-i18n/blob/master/example.php
https://github.com/Philipp15b/php-i18n/blob/master/lang/lang_de.ini
 
- Ariën  -
Beheerder

- Ariën -

07/10/2018 17:15:15
Quote Anchor link
Dan zou ik denken aan eval() maar het blijft iets wat je eigenlijk niet moet gebruiken uit veiligheidsoverwegingen.

De class heeft er voor zover ik zie geen ondersteuning voor.
Misschien dat het met GetText beter zal gaan dan met een uitgeklede class die haast hetzelfde bereikt.
 
Rob Doemaarwat

Rob Doemaarwat

07/10/2018 17:34:21
Quote Anchor link
Zo te zien compileert die class vanuit je .ini bestand een PHP bestand met een class "L" (dat is de default "prefix"). Vanuit die class L kun je "static" (met dubbele-dubbele-punt) de teksten aanroepen. Je kunt (als ik het zo 123 even goed lees) echter ook met een functie de vertaling ophalen (er even vanuit gaande dat je de prefix op "L" heft gelaten):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
$strs = new L(); //eenmalig
$id = 'contact_naam'; //id van vertaling die je op wilt halen
print($strs->L($id));

(zie regel 160 van de i18n class)

En dan kun je dus gewoon met "gewone" variabelen werken.
 
Donald Boers

Donald Boers

07/10/2018 17:53:20
Quote Anchor link
** quoteknip **
@Rob Doemaarwat
En als ik gewoonweg de dubbele-dubbelepunt uit deze lijn weghaal:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$return = constant("'.$this->prefix.'::".$string);'."\n"

of kan dat niet. Overigens dit is een voorbeeld van een .ini bestand(nl):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
[categorie]
label1    = "Antiek"
label2    = "Oudheden"
label3    = "Kunst"
label4    = "Curiosa"
label5    = "Instrumenten"
label6    = "Boeken"
label7    = "Platen"
label8    = "Meubelen"

Hetgeen momenteel de volgende, eerder genoemde ouput vereist
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
L::categorie_label1






Toevoeging op 07/10/2018 18:35:08:

@Rob Doemaarwat

Wat ik je vroeg:

En als ik gewoonweg de dubbele-dubbelepunt uit deze lijn weghaal

Werkt dus niet. Kun je wat duidelijker uitleggen wat je bedoeld met het door jou voorgestelde?

Alvast bedankt
Gewijzigd op 08/10/2018 23:09:38 door - Ariën -
 
Adoptive Solution

Adoptive Solution

07/10/2018 19:28:52
Quote Anchor link
In het README.md bestand staat hoe je variable kunt gebruiken.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
echo L($string);
// Outputs a dynamically chosen static property


Dus zoiets, waarbij ik de categorie (en taal) uit de URL haal :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
example.php?lang=nl&cat=8


met dit :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$categorie
= 'categorie_label' . $_GET['cat'];
?>

<p>Categorie : <?php echo L($categorie); ?></p>
 
Donald Boers

Donald Boers

07/10/2018 20:46:07
Quote Anchor link
**quoteknip**

@Adoptive Solution. Bedankt voor de reactie. Of ik heb het verkeerd uitgelegd, of ik begrijp je verkeerd. Ik probeer met gebruik van een foreach loop een 8-tal categorieën te tonen (met bijbehorende foto's etc):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php foreach ($categories as $category) {
    echo $categorie['label'];
}

 ?>

In de database had ik derhalve in het veld label, waardes als:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
L::categorie_label1, L::categorie_label2 etc

welke overeenkomen met de waardes in de .ini files:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
[categorie]
label1    = "Antiek"
label2    = "Oudheden"
label3    = "Kunst"
label4    = "Curiosa"
label5    = "Instrumenten"
label6    = "Boeken"
label7    = "Platen"
label8    = "Meubelen"

Maar zoals ik al eerder aangaf werkte dat niet door de dubbele-dubbele punt. Het heeft dus niets met een url variabele ($_GET) te maken. Ik zoek naar een manier waarbij de waardes in het veld label in de database de waardes weergeven uit de .ini files
Gewijzigd op 08/10/2018 23:09:15 door - Ariën -
 
Adoptive Solution

Adoptive Solution

07/10/2018 21:46:37
Quote Anchor link
Of je het categorienummer uit een url haal of uit een database, het resultaat is hetzelfde.

Sla in de database de nummers (1...n) van de categorie op, vraag ze op en toon ze in de loop.

Aangenomen dat $category o.a. het categorienummer bevat :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
foreach ($categories as $category) {
    echo L( 'categorie_label' . $category['label'] );
}

?>
Gewijzigd op 07/10/2018 21:47:49 door Adoptive Solution
 
Thomas van den Heuvel

Thomas van den Heuvel

08/10/2018 00:07:21
Quote Anchor link
Als je hier wat abstracter naar kijkt dan heb je hier gewoon een lijst van woorden (categorieën) die je achter elkaar wilt uitdraaien. Het is niet erg elegant en waarschijnlijk ook niet altijd voor de hand liggend dat zo'n lijst in alle talen dezelfde volgorde heeft, laat staan dat alle categorieën in alle talen beschikbaar zijn / op alle talen van toepassing zouden zijn.

Het is mogelijk handiger om de beschikbare categorieën en de volgorde per taal vast te leggen in de database, dan kun je vervolgens 1:1 een vertaling van een specifieke (in die taal van toepassing zijnde) categorie opsnorren?

Ik denk dat je jezelf in de problemen werkt door het op de bovenstaande manier in wezen te hardcoden en tegelijkertijd de volgorde te verankeren door het (mogelijk?) taalonafhankelijke "$categories".

Alle "administratie" voor het uitdraaien van $categories zou voor dat moment eigenlijk al gedaan moeten zijn, en niet van een taalbestand af moeten hangen door een nummering (in zekere zin hard coding?). Dit is voor de vertaling/vertaalfunctionaliteit niet relevant en zou dus daar niet bepaald moeten worden.

tl;dr trek even wat zaken uit elkaar: bepaal eerst wat er weergegeven moet worden (selectie van relevante categorieën in huidige taal) en vervolgens hoe dit zou moeten gebeuren (simpelweg een 1:1 vertaling in specifieke taal).

En zorg ervoor dat je vertaalfunctionaliteit ook uitsluitend doet waar het voor bedoeld is: enkel vertalen, zonder enige extra logica.

NB: op de bovenstaande manier creëer je daadwerkelijk een dynamische meertalige pagina.

De waarden van de labels zelf volgen toch ook vaak de vertaling van de standaardtaal en zijn niet generiek zoals "categorie_1" of wat dan ook? Bijvoorbeeld: standaard taal EN, het label voor de vertaling "meubels" in het NL is dan bijvoorbeeld "furniture", en om aan te geven dat dit een categorienaam betreft zou je bijvoorbeeld "category_furniture" o.i.d. kunnen gebruiken, of dit op een andere manier kunnen categoriseren? dit is enkel naamgeving-logica, zonder hard coding van magische nummers. Het lijkt mij dat je geen (in ieder geval geen programmeer)logica in je taalbestanden wilt stoppen :/.
Gewijzigd op 08/10/2018 00:25:07 door Thomas van den Heuvel
 
Donald Boers

Donald Boers

08/10/2018 10:17:48
Quote Anchor link
@Adoptive Solution. Dat werkt perfect. Hartelijk bedankt
 
Thomas van den Heuvel

Thomas van den Heuvel

08/10/2018 13:09:55
Quote Anchor link
Als je dan toch al in de database bezig bent, waarom houd je daar dan niet direct een vertaling bij? :/

Dit klinkt allemaal vreselijk inefficiënt, bedenk eens wat je allemaal aan het verzetten bent om enkel een categorienaam in taal X weer te kunnen geven...

Maar goed, je hebt je gram, dus je kunt verder naar je volgende klus?
 
Donald Boers

Donald Boers

08/10/2018 22:21:49
Quote Anchor link
@Thomas van den Heuvel. Ik ben niet zo enorm veel aan het verzetten hoor Thomas. Valt echt reuze mee!
Gewijzigd op 08/10/2018 22:25:32 door Donald Boers
 
Rob Doemaarwat

Rob Doemaarwat

08/10/2018 23:54:02
Quote Anchor link
Op zich hoeft het niet meteen in een DB, maar ik vraag me wel een beetje af waarom je je vertalingen eerst in een .ini bestand in zou voeren, en de boel dan weer door een wrapper class naar PHP files zou compileren (incl. constante check of de .ini toevallig nieuwer is dan de .php).

Zet het dan meteen in een PHP bestand en include gewoon direct het juiste bestand. Bijvoorbeeld:

nl.php
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php return [
  'label1' => "Antiek",
  'label2' => "Oudheden",
  'label3' => "Kunst",
  'label4' => "Curiosa",
  'label5' => "Instrumenten",
  'label6' => "Boeken",
  'label7' => "Platen",
  'label8' => "Meubelen"
]; ?>


pseudo code voor ophalen vertaling (je mag er ook een mooie class van maken):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
$lang = $_GET['lang'] ?? 'nl'; //of net zoiets als die getUserLangs()
$langs = ['nl','en','fr']; //ondersteunde talen, waar dus een xx.php bestand voor bestaat
if(!in_array($lang,$langs)) $lang = 'nl'; //default lang
$strs = require($lang . '.php');

function str($key){ //string ophalen (met default indien niet bestaand)
  global $strs;
  return $strs[$key] ?? null;
}
Gewijzigd op 08/10/2018 23:54:24 door Rob Doemaarwat
 
Thomas van den Heuvel

Thomas van den Heuvel

09/10/2018 00:01:52
Quote Anchor link
Donald Boers op 08/10/2018 22:21:49:
@Thomas van den Heuvel. Ik ben niet zo enorm veel aan het verzetten hoor Thomas. Valt echt reuze mee!

Twee abstractielagen (database + (gecachede?) ini bestanden) voor iets simpels, dan is wat @Rob hierboven doet vele malen eenvoudiger en zeker meer lichtgewicht.

Ook is het stuk minder complex, wat het ook veel makkelijker maakt om te debuggen wanneer er onverhoopt iets fout zou gaan.
 
Ward van der Put
Moderator

Ward van der Put

09/10/2018 07:57:38
Quote Anchor link
In plaats van een class constant L::contact_name zou je globale constanten zoals I18N_CONTACT_NAME of constanten zoals I18N\CONTACT_NAME in een eigen namespace kunnen gebruiken.

Ik gebruik zelf ook een database voor het complete translation memory (TM) plus aparte cachebestanden per taal.
 
Donald Boers

Donald Boers

10/10/2018 09:49:09
Quote Anchor link
@Rob Doemaarwat. Als dit principe ook zonder deze Class uitgevoerd kan worden ben ik een en al oor. Ik begrijp echter niet zo goed hoe ik dit dan implementeer. Gebruikmakend van de Class wordt deze op de volgende manier aangeroepen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3

$i18n = new i18n(APP_PATH.'/lang/lang_{LANGUAGE}.ini', APP_PATH.'/langcache/', 'nl');        
$i18n->init();

Met de manier zoals geformuleerd door @Adoptive Solution kan ik de Class zowel met als zonder database. Hoe zou het werken met database in jou voorbeeld opgaan?

@Ward van der Put. Een heleboel informatie, die ik vandaag eens rustig ga verwerken en doornemen. Hartelijk bedankt voor de input

@Thomas van den Heuvel. Het is niet zo zeer dat ik niet begrijp dat het een en ander beter in de database gedefinieerd kan worden want voor de rest van de site in kwestie gebeurt dat al door middel van een veld(`lang` char(2) NOT NULL) in de verschillende tafels. Het is meer dat ik wilde weten of ik deze class op een efficiënte manier zou kunnen gebruiken waarbij mij is opgevallen dat het voor losse fragmenten een handige class zou kunnen zijn zijn. Echter de methode van @Rob Doemaarwat spreekt me ook zeer aan
 
Adoptive Solution

Adoptive Solution

10/10/2018 10:14:29
Quote Anchor link
Als die i18n class alleen maar wordt gebruikt om de naam van een categorie uit een ini bestand te halen, lijkt het me dat je dat ini bestand ook kan omzetten naar een array om vanuit daar verder te gaan.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php

// voorbeeld url : categories.php?lang=nl&cat=label4
// kan ook uit DB worden gehaald


$lang = $_GET['lang'];
$cat  = $_GET['cat'];

// parse_ini_file = FALSE
$categories = parse_ini_file( "lang/lang_". $lang . ".ini" , FALSE );
echo '<pre>';
print_r($categories);
echo '</pre>';
echo '<p>Categorie is : ' . $categories[$cat] . '</p>';

// parse_ini_file = TRUE
$categories = parse_ini_file( "lang/lang_". $lang . ".ini" , TRUE );
echo '<pre>';
print_r($categories);
echo '</pre>';
echo '<p>Categorie is : ' . $categories['categorie'][$cat] . '</p>';

?>
Gewijzigd op 10/10/2018 13:45:20 door Adoptive Solution
 
Rob Doemaarwat

Rob Doemaarwat

10/10/2018 15:19:48
Quote Anchor link
Volgens mij staat alles hierboven. Ipv uit de $_GET haal je je actieve taal gewoon uit je cookie van je vorige vraag, dus dan wordt het (en ik zou je vertaal bestanden in een aparte map zetten, dus translations/nl.php, enz):
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
$lang = $_COOKIE["language"] ?? 'nl';
$langs = ['nl','en','fr']; //ondersteunde talen, waar dus een xx.php bestand voor bestaat
if(!in_array($lang,$langs)) $lang = 'nl'; //default lang
$strs = require("translations/$lang.php");

function str($key){ //string ophalen (met default indien niet bestaand)
  global $strs;
  return $strs[$key] ?? null;
}

Met bovenstaande ergens in je algemene initialisatie code kun je dan je vertalingen ophalen via:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
print(str('id-van-je-str'));
Gewijzigd op 10/10/2018 15:20:29 door Rob Doemaarwat
 
Donald Boers

Donald Boers

11/10/2018 09:49:38
Quote Anchor link
@Rob Doemaarwat. Ik begrijp het. Hartelijk bedankt voor alle input. Andere leden trouwens ook bedankt
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.