[PHP] bindtextdomain/gettext met een basis taal

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • Bender
  • Registratie: Augustus 2000
  • Laatst online: 01-07 19:36
Voor een website met als basis Nederlands en daarbij aanvullend Brits Engels (en_GB) als Amerikaans Engels (en_US) wil ik dubbele vertaalstrings eigenlijk voorkomen.
Momenteel wordt daardoor enkel en_GB gebruikt.

Bijvoorbeeld het woord tafel is zowel in Brits als Amerikaans table en dat is prima.

Maar ik zou graag willen dat provincie in en_GB county is en in en_US state.
Zonder dat ik ook tafel in de language file van zowel en_GB en en_US moet zetten.

Dus eigenlijk wil ik en_GB en daarna en_US laden om dit te overrulen, maar dat kan dus niet zover ik zie.

Heeft iemand wellicht een praktische oplossing hier voor?


Ik begrijp dat Brits en Amerikaans geen talen zijn, maar dat maakte het onderscheid denk ik duidelijker

Alle reacties


Acties:
  • +1 Henk 'm!

  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Je kunt toch gewoon een dubbele lookup doen? Dus eerst zoeken op de volledige "languagecode-regioncode" ( en-GB ), en als die geen result heeft alleen op "languagecode" (en). Eigenlijk zou je het zelfs in 3 stappen moeten doen want stel je zoekt een niet bestaande taal op, dan val je als laatste terug naar je default language.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


Acties:
  • +1 Henk 'm!

  • Ulster Seedling
  • Registratie: December 2007
  • Laatst online: 06-07 11:25

Ulster Seedling

“Middelgrote appel”

Misschien kun je met één van de gettext manipulation tools een script maken dat automatisch de onvertaalde strings in de ene taal overneemt uit de andere taal? Dan hoef je niet dubbel handmatig de vertalingen in te vullen, en ook geen gekke dingen te doen bij je lookups.

“(…) met een rode blos op een geelgroene ondergrond.” Volgens Wikipedia tenminste.


Acties:
  • 0 Henk 'm!

  • Bender
  • Registratie: Augustus 2000
  • Laatst online: 01-07 19:36
Woy schreef op donderdag 20 januari 2022 @ 08:00:
Je kunt toch gewoon een dubbele lookup doen? Dus eerst zoeken op de volledige "languagecode-regioncode" ( en-GB ), en als die geen result heeft alleen op "languagecode" (en). Eigenlijk zou je het zelfs in 3 stappen moeten doen want stel je zoekt een niet bestaande taal op, dan val je als laatste terug naar je default language.
Ik krijg nog niet helemaal helder hoe je dit in uitvoer ziet.

Stel je start met bindtextdomain('sitenaam', 'lang/en_GB')
en dan doe je gettext('Provincie','sitenaam')

Indien in en_GB/sitenaam.mo de vertaling Provincie voorkomt, dan staat er County en anders gewoon Provincie.

Maar hoe zet je daar een 'dialect' dus bij?

Acties:
  • +1 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Wat Woy zegt, in gettext terminologie:
Je bind meerdere domains, en je bepaalt een array met de domains n.a.v. voorkeur eindgebruiker.
Bij het vertalen loop je dan over de voorkeuren totdat dgettext() een vertaling vind.

Maar aangezien je vertalingen niet vaak wijzigen is de suggestie van Ulster wellicht beter.

{signature}


Acties:
  • 0 Henk 'm!

  • Bender
  • Registratie: Augustus 2000
  • Laatst online: 01-07 19:36
Voutloos schreef op donderdag 20 januari 2022 @ 13:29:
Wat Woy zegt, in gettext terminologie:
Je bind meerdere domains, en je bepaalt een array met de domains n.a.v. voorkeur eindgebruiker.
Bij het vertalen loop je dan over de voorkeuren totdat dgettext() een vertaling vind.

Maar aangezien je vertalingen niet vaak wijzigen is de suggestie van Ulster wellicht beter.
Maar dan bedoelen jullie dat je als domain gaat gebruiken als taal, hoewel het kan klinkt het mij niet logisch.
Of is dat meer omdat het de enige manier is (ik kan zelf ook geen andere manier bedenken, vandaar)
Pagina: 1