angle-uparrow-clockwisearrow-counterclockwisearrow-down-uparrow-leftatcalendarcard-listchatcheckenvelopefolderhouseinfo-circlepencilpeoplepersonperson-fillperson-plusphoneplusquestion-circlesearchtagtrashx

Meertalige uitwijkmogelijkheid opnieuw bekeken en een paginaboottekst met meertalige links

Bewaar de vertaalde titel en slak op één plaats en markeer ze geldig zodat ze kunnen worden gebruikt, zelfs als de rest van het item niet geldig is.

14 september 2019
post main image
unsplash.com/@olidale

Voordat je verder leest, wil je misschien eerst mijn vorige bericht over de taal fallback lezen, zie onderstaande link. Hier is een voorbeeld van de complexiteit van meertaligheid. De link moet worden getoond in de taal die u op dit moment gebruikt .... een andere keer.

Het leven is één lange reeks van problemen die we voortdurend aan het oplossen zijn. Het begint met het krijgen van voldoende zuurstof, opgelost door ademhaling, misschien is het tweede punt wel bugs en onvolledige architectuur wanneer je een ontwikkelaar en programmeur bent. Hoe dan ook, het was tijd om een meertalige paginabodem te implementeren, dit is het onderste deel van de pagina met links naar pagina's als Over, Contact, Gebruiksvoorwaarden, Privacy beleid. Voor een echte meertalige site moeten deze links in de gekozen taal zijn.

Ik ben begonnen met twee tabellen en heb een nieuw deel van de beheerder aangemaakt om deze te beheren:

Voetregel Voetregel Voetregel
VoetregelVertaling

Met behulp van de beheerder maak ik een voettekst-item en voeg ik er een of meer taalrecords aan toe, voor elke taal wordt een vertaalrecord toegevoegd. Mijn eerste gedachte was om hier de naam en slak voor een pagina te specificeren, ik bedoel, een pagina is misschien niet beschikbaar in de geselecteerde taal en we willen terugvallen op de uitwijktaal. De vertaalde linknaam (paginatitel) en slak moeten ergens worden opgeslagen.

Bij het bouwen van de query om de pagina's te selecteren vond ik dit echter veel te complex omdat ik nu niet alleen de content_item en content_item tabellen maar ook de footer_item en footer_item_item_translation tabel moest opvragen. Niet precies wat ik in gedachten had, ik ben een programmeur en heb een voorkeur voor KISS.

Mijn oplossing om de complexiteit te verminderen is het opnieuw misbruiken van de content_item_vertaling record, de laatste keer dat ik de 'do_not_fallback' vlag heb toegevoegd en nu heb ik een andere vlag toegevoegd: 'can_use_slug'. De betekenis is als volgt:

  • Wanneer het content_item_vertalingsrecord niet bestaat, vallen we terug naar de fallback taal.
  • Wanneer het content_item_vertalingsrecord bestaat en gepubliceerd is, gebruiken we het.
  • Wanneer de content_item_vertaling record bestaat maar niet gepubliceerd is, hebben we twee voorwaarden: - do_not_fallback
    , indien True, is het item niet beschikbaar.
    - can_use_slug, als do_not_fallback False is, en can_use_slug is True kunnen we de titel en slak van de content_item_vertaling record gebruiken.

Het leuke is dat we nu een echte meertalige footer kunnen bouwen, met meertalige links, zelfs als de pagina niet gepubliceerd is, alleen door de paginatitel en de slak toe te voegen aan de content_item_vertaling record en de can_use_slug vlag te zetten. De titel en de slak van de pagina staan maar op één plaats.

Een bonus is dat we dit ook kunnen gebruiken bij het tonen van de pagina om de titel van de pagina in de geselecteerde taal weer te geven terwijl de andere delen in het Engels blijven. U kunt dit controleren door de Gebruiksvoorwaarden pagina van deze website in meerdere talen te bekijken. Deze pagina is alleen beschikbaar in het Engels, maar we hebben nog steeds meertalige links in de footer en een meertalige titel.

Implementatie is net als het cache-object en instellingen-object beschreven in eerdere berichten en maakt natuurlijk gebruik van caching, geen noodzaak om de voettekst van elk verzoek te genereren. Geen code in dit bericht, moet eerst wat opruimen....

Links / credits

Refining multilanguage: adding language fallback as an option
/en/blog/refining-multilanguage-adding-language-fallback-as-an-option

Lees meer

Multilanguage

Laat een reactie achter

Reageer anoniem of log in om commentaar te geven.

Opmerkingen

Laat een antwoord achter

Antwoord anoniem of log in om te antwoorden.