2010-11-10 11 views
1

Je ces deux tableaux (simplifié):Symfony 1.4: associer plusieurs langues à une table

Website: 
    columns: 
    user_id:   { type: integer, notnull: true } 
    domain_name:  { type: string(30), notnull: true, unique: true } 

WebsiteLanguage: 
    columns: 
    website_id: { type: integer, notnull: true } 
    language: { type: string(5), notnull: true, country: true } 
    indexes: 
    website_id_language: 
     fields: [website_id, language] 
     type: unique 

Comme vous le voyez, je voudrais associer une ou plusieurs langues à mes sites. Je ne veux pas traduire les sites, je veux seulement les associer à des langues comme je le ferais pour les pays.

Je dois afficher un formulaire de site Web avec autant de cases à cocher que de langues. Les langues ne sont pas dans une table, donc je ne sais pas comment faire ça!

Répondre

0

Vous pouvez obtenir une liste des langues de sfCultureInfo:

/* 
* displayLanguage defaults to the current culture set in the session, 
* or you can supply your own - to override it... 
* this will return an array of all languages like array('en' => 'english') 
*/ 
sfCultureInfo::getInstance($dipslayLanguage)->getLanguages(); 

Si vous êtes en utilisant une forme sf pour cela, vous pouvez aussi utiliser le widget très pratique:

//in your form 

$this->widgetSchema['language'] = new sfWidgetFormI18nChoiceLanguage(); 

Cependant, vous ne probablement Vous avez besoin d'associer les langues dans la base de données, sauf sur les enregistrements qui ont des traductions, et vous feriez mieux d'utiliser les fonctionnalités I18n pour gérer tout cela automatiquement pour vous. Alors tout ce que vous avez à faire est de laisser l'utilisateur siffler la culture et tout apparaîtra comme par magie dans la langue appropriée ... Certes, c'est un peu plus complexe que cela, mais vous pouvez automatiser la plupart du travail et de l'installation.

+0

Merci beaucoup pour votre réponse, mais je ne suis pas sûr que ce soit ce que je cherche;) Quand j'éditerai mon formulaire de site Web, j'aimerais avoir beaucoup de cases à cocher (avec les valeurs 'fr', 'en' , 'sp', etc.) Si je vérifie 'fr' et 'en', j'ai besoin de symfony pour créer 2 entrées dans ma table WebsiteLanguage, pour associer ces 2 langues à mon site web. – Manu

+0

Je n'ai pas besoin de traduire mes sites Web;) J'ai seulement besoin de savoir quelles langues sont disponibles sur mon site Web. Je pourrais avoir le même problème si je voulais associer plusieurs pays à mon site web (peut-être que ma question serait plus claire). – Manu