JeuWeb - Crée ton jeu par navigateur
MongoDB et i18n ? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : MongoDB et i18n ? (/showthread.php?tid=6373)

Pages : 1 2


MongoDB et i18n ? - Maks - 06-09-2012

Quelqu'un saurait gérer l'internationalisation avec MongoDB ? Ou le cas échéant la façon la plus propre de le faire ?

J'ai le model suivant :


mongoose.model 'action', new mongoose.Schema
type : String
description: String
power :
type : Number
default : 1
accuracy :
type : Number
default : 1
cost :
type : Number
default : 1
minPower :
type : Number
default : 0
img : String
frames : Number
move :
type : Boolean
default : false
repeat :
type : Number
default : 1
sound :
type : String
default : ''

Et j'aimerais que la clé description puisse être traduit en anglais. Le plus simple serait d'assigner un hash à description avec en clé "fr" et "en" je pense. Mais si quelqu'un a de meilleures solutions pour le problème je suis preneur Smile


RE: MongoDB et i18n ? - Sephi-Chan - 06-09-2012

Je partirais sur la même solution que toi, à savoir un hash description avec une clé par langue supportée.


RE: MongoDB et i18n ? - Maks - 06-09-2012

Je peux remercier Mongo d'être aussi flexible sur le coup !


RE: MongoDB et i18n ? - Sephi-Chan - 06-09-2012

Avec un SGBDR tu peux avoir deux colonnes : description_fr et description_en.


RE: MongoDB et i18n ? - Maks - 06-09-2012

Certes mais ça fait autant de colonnes de plus par langue c'est pas terrible.


RE: MongoDB et i18n ? - Maks - 07-09-2012

Pendant qu'on est sur le sujet, tu gérerais comment la traduction d'un text long comme le manuel du jeu par exemple ?
Je stocke en JSON les locales et je peux pas passer de lignes du coup.


RE: MongoDB et i18n ? - Sephi-Chan - 07-09-2012

J'utiliserais plutôt des templates statiques.

La traductions de textes longs n'est pas dans la même démarche que de traduire des clés. Tu n'as pas forcément le même nombre de paragraphes, ni les mêmes images, etc.


RE: MongoDB et i18n ? - archANJS² - 07-09-2012

(c'est toujours moi, archANJS ; j'ai été banni automatiquement par le forum pour spam... :'()
+1 Sephi, pour les templates statiques.



J'en profite pour poser une question (et du coup utiliser ton topic Maks Tongue) sur l'i18n.

En fait, j'aimerais surtout avoir votre avis sur ma façon de procéder. Pour savoir si elle est bonne, sinon me dire comment m'y prendre (de façon à ne pas partir sur une mauvaise base).

Exemple de vue, la page d'inscription par exemple (on peut voir qu'il ne reste vraiment plus aucun texte) :


- content_for :page_title, I18n.t('txt.views.users.new.page_title')

- content_for :current_stylesheet do
= stylesheet_link_tag "_register"

.account-container
.content.clearfix
= simple_form_for @user do |f|

%h1= I18n.t 'txt.views.users.new.form_title'

.fields

- if flash[:error]
.alert
= link_to "×", "#", class: "close"
= flash[:error]

.field
= f.input :name, :placeholder => I18n.t('txt.views.users.new.placeholders.name')

.field
= f.input :email, :placeholder => I18n.t('txt.views.users.new.placeholders.email')

.field
= f.input :password, :placeholder => I18n.t('txt.views.users.new.placeholders.password')

.field
= f.input :password_confirmation, :placeholder => I18n.t('txt.views.users.new.placeholders.password_confirmation')

%input{:name => "lastname", Confusedtyle => "display:none;", :type => "text"}

.actions

%span.checkbox
%input#box{:name => "terms", :type => "checkbox"}
%label{:for => "box"}
= I18n.t 'txt.views.users.new.cgu.txt'
= link_to_function I18n.t('txt.views.users.new.cgu.link'), 'cgu_modal()'

%button.button.btn.btn-primary.btn-large{:name => "submit"}= I18n.t 'txt.views.users.new.submit_button'

.account-extra
= I18n.t 'txt.views.users.new.login_page.txt'
= link_to I18n.t('txt.views.users.new.login_page.link'), login_path

C'est surtout dans la nomenclature de mes clés. Je procède selon le schéma suivant:

1. Type de message (txt, msg, errors, mongo_mapper)
2. Type d' "accesseur" (views, controllers), puis l'action (create, new, etc)
3. Clés et sous-clés (page_title, placeholders.name, etc)

Devrais-je inverser le 1 et le 2?


RE: MongoDB et i18n ? - Plume - 08-09-2012

Personnellement, j'inverse le 1 & 2.


RE: MongoDB et i18n ? - niahoo - 08-09-2012

À quoi sert le 2 ?