Search code examples
laravellocalization

Laravel Gendered Nouns Localisation


I've been implementing localisation in a Laravel project and I've had some concerns that I want to address early so I don't have to go back.

I understand some languages have gendered nouns like Spanish and French. German introduces a third gender of "neuter".

Currently the way I've been implementing gendered translations is like this:

// English
'nameLogo' => ':name Logo|:name Logo'

// Spanish
'nameLogo' => 'Logo del :name|Logo de la :name'

Given German will have a third case for some strings, how do I handle this for languages that have less? Or a simpler question, do I have to add 2+ cases for each string in English or is the one enough and this gets handled by Laravel?


Solution

  • You can use Laravel's pluralization syntax like this:

    // 0: Male, 1: Female
    // fallback to gender-neutral
    
    // English (gender neutral)
    'nameLogo' => ':name Logo'
    
    // Language (male, female, gender neutral)
    'nameLogo' => '{0}Logo del :name|{1}Logo de la :name|Logo = :name'
    
    // Other language (only male and gender neutral?)
    'nameLogo' => '{0}Logo del :name|Logo = :name'
    
    // yet another language (female and gender neutral?)
    'nameLogo' => '{1}Logo de la :name|Logo = :name'
    

    Then, specify 0 for male, 1 for female, and any other number for gender-neutral.