i18n Class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Low Code Developer

Functie omschrijving Ben jij toe aan een nieuwe uitdaging en ben jij HBO afgestudeerd in de richting van IT? Heb jij verstand van datamodellering, NO CODE Platformen en kun jij het aan om projecten te leiden? Voor een leuke opdrachtgever in omgeving Capelle aan den IJssel zijn wij op zoek naar een No Code developer die zich bezig gaat houden met het optimaliseren van bedrijfsprocessen bij klanten in heel het land! Wat ga je hier zoal doen? Je gaat geen code kloppen maar bedenken hoe applicaties eruit moet komen te zien. Je gaat werken met een non code platform, je

Bekijk vacature »

Lead Front-end developer

Functie Hun huidige applicatie worden ontwikkeld in o.a. React, Redux, TypeScript. Ze werken graag met de nieuwste technieken en tooling en zoeken ook developers die hier proactief op zoek naar gaan. Als senior/lead developer ben je een kartrekker in het team. Naast het meedenken over bijvoorbeeld de architectuur of toepassing van nieuwe technieken krijg je ook veel tijd om de meer junior (front-end) developers te begeleiden. Zo kun je bijvoorbeeld 1 dag in de week met 2 collega’s bezig zijn om samen met hen te kijken naar hun ontwikkeling, doelstellingen en uiteraard de gewenste begeleiding hierin. Hiernaast sta je als

Bekijk vacature »

Back end developer

Functie Jij als full stack ontwikkelaar komt te werken in een team bestaande uit 4 back end programmeurs, 2 vormgevers/ Front end developers en een online marketeer. Qua persoonlijkheden is het team erg gevarieerd van sportfanaten tot gameliefhebbers en Golfers. Een ding heeft iedereen hier gemeen; Passie voor goede code. In jouw rol zul je voor 90% van je tijd je bezig houden met het ontwikkelen van grote maatwerk applicaties. Daarnaast hebben wij op aanvraag ook wel eens een website of onderhoudsklusje, die opgepakt moet worden en hier ben jij ook niet vies van. De technische uitdaging momenteel is dat

Bekijk vacature »

Ervaren C#.NET programmeur

Functieomschrijving Voor een moderne werkgever in regio Prinsenbeek zijn wij op zoek naar een ervaren C#.NET programmeur die graag de uitdaging aangaat. Je houdt je bezig met het ontwikkelen van maatwerk webapplicaties voor diverse klanten, waarbij complexe processen optimaal worden ondersteund. Verder ziet jouw takenpakket er als volgt uit: Ontwikkelen en onderhouden van C#.NET-applicaties; Schrijven van hoogwaardige, herbruikbare codes; Schrijven van technische documentatie en gebruikershandleidingen; Bijdragen aan het ontwerp en de architectuur van softwaretoepassingen; Troubleshooten en oplossen van bugs in softwaretoepassingen; Werken met databases en dataopslagoplossingen; Implementeren van beveiligingsoplossingen en het waarborgen van de beveiliging van applicaties en gegevens. Bedrijfsprofiel

Bekijk vacature »

Software Programmeur

Functie omschrijving Voor onze opdrachtgever in omgeving Rotterdam zijn wij opzoek naar een software programmeur die goed kan schrijven in de talen C of C++ en die het leuk vind om te werken met Linux! Werkzaamheden Programmeur Je bent bezig met het ontwikkelen van software en webapplicaties. Je kunt technische klussen uitvoeren op locatie. Je onderhoudt contact met de projectleider om er zeker van te zijn dat een project goed verloopt. Je zult klanten ondersteunen. Verder zul je technische ontwerpen en gebruikersdocumentaties schrijven en deze onderhouden. Bedrijfsprofiel Dit bedrijf wil de klanten een volledige oplossing kunnen bieden, waarbij ze een

Bekijk vacature »

Back-end Developer

Functieomschrijving Heb jij kort geleden jouw HBO ICT diploma in ontvangst mogen nemen? Of ben je toe aan een nieuwe uitdaging? Voor een gewaardeerde werkgever in regio Oosterhout zijn wij op zoek naar een back-end developer. Kennis of ervaring met C# & SQL is een must! Je bent verantwoordelijk voor de beheer en ontwikkeling van de software; Je draagt bij aan de implementatie van aanpassingen, verbeteringen en aanvullingen in de C# based applicaties; Je test de software en ontwikkelt deze door; Je houdt je bezig met het ontwikkelen van nieuwe functionaliteiten; Je brengt de aanpassingssuggesties van klanten in kaart, om

Bekijk vacature »

PHP Laravel Ontwikkelaar

Functie omschrijving Weet jij alles over Laravel en krijg je energie van het developen van software hiermee? Laat het weten want wij zoeken een PHP/Laravel developer in regio 's-Hertogenbosch voor klein bedrijf welke softwareoplossingen maakt voor hun klanten. Jouw taken hierbij: Softwareapplicaties ontwikkelen en verder optimaliseren in veel diverse projecten op basis van Agile/Scrum. Documentatie schrijven over applicaties. Uitleg geven over software en applicaties Klantcontact hebben over bestaande applicaties. Techstack: PHP, Laravel, HTML, CSS, Javascript. Bedrijfsprofiel Deze organisatie zit in de regio van 's-Hertogenbosch en is een klein bedrijf. Er werken circa 15 medewerkers, verdeeld in meerdere teams, zoals back-end

Bekijk vacature »

Java Developer

Java Developers opgelet! Bij Luminis zijn ze opzoek naar jou. Lees de vacature en solliciteer direct. Luminis is een software- en technologiebedrijf met meerdere vestigingen. Vanuit deze vestigingen werken 200 professionals aan technisch hoogwaardige oplossingen voor klanten zoals KLM, Nike en Bol.com. Ook ontwikkelt Luminis eigen oplossingen op het gebied van cloud, Internet of Things, data intelligence, e-sports en e-learning. Luminis onderscheidt zich door aantoonbaar voorop te lopen in technologie en innovatie. Luminis heeft drie kernpunten die verankerd zitten in alles wat we doen: het omarmen van nieuwe technologie, meesterschap en kennis delen. Functiebeschrijving First things first! Het is belangrijk

Bekijk vacature »

Integratie Developer / Architect

Dit ga je doen Als Integratie Developer / Architect binnen deze organisatie krijg je echt de kans om impact te maken. De organisatie is groeiende maar houdt een corporate cultuur buiten de deur. Heb je een goede business case: zorg voor goede argumentatie en ga ervoor! Geen stroperig beslissingsproces dat jouw ideeën in de weg staat! Enkele van jouw taken: Je ontwerpt en ontwikkelt nieuwe integraties met behulp van interne tools (Boomi) of externe partners; Je vertaalt functionele specificaties naar technische oplossingen; Je denkt mee over strategische ontwikkelingen op het gebied van applicatie integratie; Je voert regie op leveranciers en

Bekijk vacature »

.NET developer

Functie Jouw team van vier collega .NET developers is verantwoordelijk voor het bouwen van de ETL processen van jouw nieuwe werkgever. Op dit moment wordt de front-end gedaan door een extern team van professionals. Echter wilt jouw nieuwe werkgever graag intern deze kennis uitbreiden en heeft dan ook de ambitie om dit voor het eind van het jaar intern te gaan aanpakken. Dit betekend dat jij als .NET ontwikkelaar de ideale kans krijgt om jezelf samen met jouw collega’s te ontwikkelen als full stack developer. Als .NET ontwikkelaar werk jij bij deze gave werkgever met C# .NET, SQL, JavaScript, REST

Bekijk vacature »

WordPress & Azure Developer

Dit ga je doen Zowel front- als back-end development aan de online website omgeving; Het up-to-date houden van alle WordPress-sites; Koppelingen maken tussen applicaties; Meedenken en adviseren over verbeteringen; Development door middel van WordPress, Javascript, HTML en CSS; Werken binnen Scrum/Agile team. Hier ga je werken Voor een grote overheidsinstelling in Den Haag zijn wij opzoek naar een WordPress developer, met kennis en ervaring op het gebied van Azure. De organisatie zit in een grote transitie waarbij de gehele website/online omgeving vernieuwd zal gaan worden. Binnen dit Scrum/Agile team ben je verantwoordelijk voor deze grote migratie/ombouw van de omgeving. De

Bekijk vacature »

Software Developer

Functie omschrijving Heb jij affiniteit met ICT en een WO diploma in de pocket? Dan ben je hier aan het juiste adres. Voor een opdrachtgever in Amsterdam zijn wij op zoek naar kandidaten die (enige) ervaring hebben met Java, Javascript, C of C++. Je zal door middel van trainingen worden opgeleid tot een volwaardige Software Developer. Er wordt tijdens de training natuurlijk veel aandacht besteedt aan de vaktechnische aspecten, maar er gaat ook veel aandacht uit naar jouw persoonlijke ontwikkeling. Bedrijfsprofiel Bij deze opdrachtgever in de omgeving van Amsterdam zoeken ze meerdere enthousiaste kandidaten die hun carrière willen starten met

Bekijk vacature »

C#.NET developer

Functie Het development team bestaat momenteel uit vijf backend C#/.NET ontwikkelaars. Op dit moment zit één ontwikkelaar dedicated op de mobiele applicatie. Als team werk je samen aan het zelf ontwikkelde software platform. Dit bestaat uit zowel apps als websites. Om het systeem door meer dan honderdduizenden gebruikers wordt gebruikt is het bijna vanzelfsprekend dat de kwaliteit van het product hoog moet liggen. Het systeem bestaat uit drie projecten. Je werkt dus aan deze drie projecten waarbij de focus op z’n tijd verschuift. De technieken die worden toegepast zijn o.a. .NET Core, Xamarin, C# en MVC. Je zal dus met

Bekijk vacature »

Traineeship Full Stack Java developer

Dit ga je doen Start jij op 7 augustus bij de Experis Academy dan kickstart jij jouw IT-carrière! We leiden je op tot een gewilde Full Stack Java Developer met alle kennis en vaardigheden die nodig zijn om de arbeidsmarkt te betreden. Wat kun je verwachten, hoe zit een dag in het leven van een Trainee eruit? Periode 1 Als Full Stack Java Developer Trainee volg je vanuit huis een op maat gemaakte onlinetraining die in het Engels wordt gegeven. De tijd die je kwijt bent aan het volgen van de training kun je vergelijken met een fulltime werkweek. In

Bekijk vacature »

Fullstack developer

Zie jij mogelijkheden om onze tooling technisch te verbeteren en uit te bouwen? Over Jobmatix Jobmatix is een innovatieve en internationale speler op het gebied van jobmarketing. Onze jobmarketing automation tool helpt organisaties bij het aantrekken van nieuw talent door vacatures digitaal, geautomatiseerd en op een efficiënte manier te adverteren en onder de aandacht te brengen bij de doelgroep op 25+ jobboards. Volledig performance-based, waarbij organisaties betalen op basis van cost per click of cost per applicant. Maandelijks wordt onze jobmarketing automation tool al gebruikt door vele directe werkgevers, intermediairs en mediabureaus, waaronder Picnic, Rijkswaterstaat, AdverOnline, Schiphol, DPA, Teleperformance en

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

19/04/2024 07:12:43
 
- 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.