i18n Class

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Agile Software Developer

Agile Software Developer Voel jij je als een vis in het water binnen een Agile team en wil jij bijdragen aan het ontwikkelen van oplossingen die antwoord bieden op complexe IT-vraagstukken? Ben jij een software developer met diepgaande kennis van en ervaring met Java en Linux en word je blij van de hightech wereld? Dan zijn wij op zoek naar jou! Ter uitbreiding van ons Software Development team in de regio Hengelozijn wij momenteel op zoek naar een Agile Software Developer met kennis van Java en Linux. Als Agile Software Developer bij Altran ben je betrokken bij de volledige software

Bekijk vacature »

Software Engineer (Front-end Developer) (M/V)

Op korte termijn zijn wij voor de afdeling IT op zoek naar een: Software Engineer (Front-end Developer) (M/V) Wat ga je doen? Als Front-end Developer ontwerp, bouw, test en onderhoud je software voor intern- en extern gebruik. Ook lever je support op de ontwikkelde software en draag je zorg voor de documentatie voor beheer en voor eindgebruikers. Daarbij adviseer je over de inzet van nieuwe technologieën en methodieken en breng je wijzigingen en verbeteringen aan in bestaande software. Wij zoeken een collega die: Analytisch, accuraat en communicatief vaardig is. Een Hbo-opleiding Informatica heeft afgerond. Zelfstandig kan werken. Tenminste 3 jaar

Bekijk vacature »

Integratie Ontwikkelaar

Interessante klus beschikbaar voor een freelance Developer Integratie (Tibco/Apache Camel) Wij zijn op zoek naar een ervaren Integratie Developer. Tijdens dit project van minimaal 6 maanden werk je vanuit het kantoor in Rotterdam. Integratie Developer (Middleware) Voor 40 uur in de week Projectdetails startdatum: bij voorkeur per 1 oktober, maar in overleg bespreekbaar projectduur: voor minimaal 6 maanden (optie op verlenging) uur per week: 40 uur (en anders bespreekbaar) locatie: Rotterdam reden project: extra werkzaamheden (en daarom zoeken we 2 developers) Wat zijn enkele van de werkzaamheden? Omdat deze organisatie van Tibco naar Apache Camel gaat, zullen de werkzaamheden o.a.

Bekijk vacature »

Java developer met Docker- en Android kennis, IoT

Functieomschrijving De Senior heeft verschillende mogelijkheden en krijgt veel verantwoordelijkheden. De Java backend developer moet begrijpen hoe hij met Docker/Jenkins werkt en weten hoe hij de backend kan draaien op hun server. Je moet namelijk weten hoe je de server configureert. Daarnaast is het fijn dat je met Android native om kan gaan. Als je nog niet alles weet aangaande Android ofwel backend dan is dat niet erg, maar er moet wel een basis liggen. Functie-eisen – HBO/WO opleiding afgerond; – Minimaal 1 jaar ervaring en bij voorkeur meer; - Werkervaring met Java Backend; – Kennis van Docker of Jenkins;

Bekijk vacature »

Junior back-end C# ASP.NET Developer

Organisatie Voor een van onze businesspartners ben ik momenteel op zoek naar een creatieve C#, ASP.NET developer. Het ambitierijke bedrijf zit in zijn tiende jaar en is steeds harder aan het groeien. Het houdt zich bezig met gerichte oplossingen voor vele verschillende branches. Waar een wil is, is een weg is het motto. Je komt terecht in een jong en ambitieus team waarbinnen de gemiddelde leeftijd tussen de 24 en 32 ligt. Er heerst een open en informele sfeer wat betekent dat je gewoon lekker jezelf kunt zijn, je je driedelig maatpak in de kast kunt laten hangen en op

Bekijk vacature »

Junior tot senior Full- Stack developers gezocht i

Junior tot senior Full- Stack developers gezocht in de omgeving van Eindhoven! Voor een technisch full-service internetbureau in hartje Eindhoven ben ik op zoek naar ervaren PHP Developer met kennis van C# en Angular.Js. Het gaat hier om een online web bureau die helpt bij online strategieën van hun klanten. Het betreft een organisatie met korte lijnen en een informele bedrijfscultuur. Jij als Developer zal je hier snel thuis voelen omdat het technisch team een belangrijk rol speelt in de organisatie. Het bedrijf bestaat uit ongeveer 15 werknemers die hun klanten helpen bij de online strategieën van bedrijven en hun

Bekijk vacature »

Medior en Senior C#/.NET Developers gezocht voor d

Organisatie & Afdeling Voor een goede businesspartner in de omgeving van Apeldoorn zijn wij op zoek naar Medior/senior C#/.NET Developers die graag aan de slag wilt gaan voor diverse grote en kleine klanten. Deze partij bestaat al 13 jaar en is heeft 2 vestigingen waaruit zij te werk gaan. Hun core business is het leveren van ICT professionals. Dit wordt voorzien aan de hand van tijdelijke en permanente behoefte aan extra mankracht en/of kennis op het gebied van o.a. softwareontwikkeling. Voorheen bood deze partij alleen softwareontwikkelaars aan bij klanten, maar sinds een paar jaar hebben ze een tweede domein toegevoegd

Bekijk vacature »

Senior .Net Developer Doorgroeimogelijkheden Cloud

Senior .Net Developer Doorgroeimogelijkheden Cloud Wat ga je doen als Senior .Net developer? Bij deze IT organisatie in Utrecht ga je als senior .Net developer werken aan innovatieve en complexe oplossingen. Je levert een waardevolle bijdrage aan het ontwikkelen van applicaties voor klanten zoals de Tilburg University, GVB, IBM, de SVB, Ziggo, de NS, Telegraaf Media Groep en BNP Paribas Group. Zo houd je je bezig met de ontwikkeling van accelerated application development om platformen voor deze klanten op te zetten. Dit heeft het doel om kosten efficiënt maatwerk applicaties te leveren, zoals de Ziggo Go app om online TV

Bekijk vacature »

Junior PHP developer / Big Data

Organisatie Onze klant is een van de grootste hosting providers in Europa en groeit nog steeds erg hard. Deze organisatie ligt op loopafstand van Amsterdam centraal en levert verschillende diensten als webhosting, VPS, cloudhosting, domeinregistratie, SaaS aan zowel particuliere als zakelijke klanten. Wegens snelle groei zijn ze voortdurend op zoek naar de beste developers om intern verder op te leiden. Er werkt nu zo’n 150 man waarvan de development afdeling ongeveer 25 developers telt. Komend jaar gaat er veel geïnvesteerd worden in het uitbreiden van hun diensten pakket en de doorontwikkeling van het personeel. Als PHP developer zal je mee

Bekijk vacature »

Medior (Fullstack) .NET Developer gezocht!

Organisatie & Afdeling Voor een businesspartner, gevestigd nabij centrum Utrecht die zowel nationaal als internationaal actief is, zijn wij op zoek naar een .NET Developer die ook kennis en ervaring heeft met Front-end! Deze organisatie helpt haar klanten bij het verbinden, integreren en versnellen van processen op verschillende disciplines binnen de organisaties. Daarbij bieden ze SaaS-oplossingen toe aan hun klanten. Dit zijn generieke oplossingen die in een continue proces zit om verbeterd te worden met nieuwe functionaliteiten. Deze partij is al meer dan 30 jaar actief binnen hun vakgebied en door de constante groei en verbetering van hun producten heeft

Bekijk vacature »

Full-Stack Java/Mobile Developers gezocht voor com

Bedrijfsinformatie Mijn opdrachtgever is een bedrijf die complexe software ontwikkeld voor verschillende opdrachtgevers (sportbranche en Fin-Tech). Deze organisatie is al jaren een begrip in de Java/Mobile community, het bedrijf ontwikkeld verschillende maatwerk aanvragen van verschillende Financiele instellingen maar ook in de zorgbranche. Het gaat voornamelijk om Real-time omgevingen die te maken hebben met een grote hoeveelheid Data die moet worden weergeven in een Dashboard of in een mobile app. Verder maken zij ook zeer complexe Mobile Applicaties voor de sport branche hier komt AI bij kijken, middels machine learning worden bepaalde bewegingen opgenomen en wordt daaruit vandaan data verzameld en

Bekijk vacature »

Front-end Developer

Organisatie Ben jij een ‘eind baas’ als het gaat om programmeren maar ondanks dat jij al tot de beste ontwikkelaars hoort weet je dat het altijd beter kan? Zowel starters als ervaren ontwikkelaars werken samen binnen dit bedrijf. Ze hebben allemaal 1 overeenkomst en dat is passie voor het vak, iets willen betekenen en willen bereiken. Binnen dit bedrijf krijg je de ruimte om zowel jezelf persoonlijk als zakelijk te laten groeien. Om een echte eindbaas te worden worden er iedere 2 maanden hackathons georganiseerd. Dit kan een case zijn voor bijvoorbeeld Jumbo, Achmea of Deloitte. Je gaat dan 2

Bekijk vacature »

Als Fullstack Developer aan de slag voor de groots

Wil jij met een kleine hechte groep werken voor de allergrootste bedrijven? Zoek dan niet verder! Deze partij uit Rotterdam is rond 1990 klein begonnen, maar ondertussen uitgegroeid tot een reus die 98% van de markt bediend. Samen met zo’n 15 gedreven collega’s werk je aan de software om klantcontact tussen bedrijf en consument mogelijk te maken. Denk hierbij aan wachtrijbeheer, kalender koppelingen, sms-diensten, terugbelverzoeken en de uitgebreide realtime statistieken die hierbij horen. Naast het stroomlijnen van één-op-één-communicatie tussen bedrijf en consument is dit bedrijf gespecialiseerd in de software voor onder andere voting-diensten voor tv-programma’s en bel & win acties.

Bekijk vacature »

C#.NET Developer

Als C#.NET Developer ontwikkel je een innovatief complex C#.NET / C++ realtime verkeerssysteem. Het systeem verwerkt realtime gegevens om er zodoende voor te zorgen dat de doorstroming van verkeer zo optimaal mogelijk wordt. Je moet hierbij o.a. denken aan connectie met mobiele telefoons en het onderkennen van prioriteitsverkeer. Iedere 1,5 seconde wordt de situatie opnieuw bepaald om de doorstroming zo optimaal mogelijk te houden. Daarnaast wordt er gebruik gemaakt van historische data (Big Data) om verkeersdrukte te voorspellen. De afgelopen maanden is er een start gemaakt met de bouw van het systeem. Er gaan steeds meer innovaties aan toegevoegd worden

Bekijk vacature »

.Net Ontwikkelaar Heerenveen

.Net Ontwikkelaar Heerenveen Jij zorgt voorontwikkeling Locatie: Heerenveen Niveau: HBO/WO Dienstverband: 40 uur per week Complexe software ontwikkelen: dat is jouw ding! Voor onze vestiging in Heerenveen zoeken wij fanatieke junior en senior .Net Ontwikkelaars die met de laatste Microsoft-tools en -technieken willen werken. Jij bent gemotiveerd en draagt graag verantwoordelijkheid voor je 'eigen' software, die wordt ingezet in ziekenhuizen door heel Nederland. Jouw baan Je bent verantwoordelijk voor het ontwerpen, ontwikkelen, ondersteunen en onderhouden van jouw eigen module. Dit gaat om complexe ICT-producten die feilloos moeten functioneren binnen de complexe omgeving van een zorgorganisatie. Je werkt zelfstandig of in

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/10/2018 16:40:02
 
- 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.