Je te déconseille cependant d'avoir recours à une fonction plus générique car ce genre de manipulation ne permet pas facilement d'internationaliser ton application.
Fabien
"Fabian Vilers" a écrit dans le message de news: 42dd0647$0$1815$
Bonjour à tous,
Je me demande si ceci est possible... Imaginons ce bout de code:
Je te déconseille cependant d'avoir recours à une fonction plus générique
car ce genre de manipulation ne permet pas facilement d'internationaliser
ton application.
Fabien
"Fabian Vilers" <fvilers@REMOVME.be.keyware.com> a écrit dans le message de
news: 42dd0647$0$1815$6c56d894@reader0.news.be.easynet.net...
Bonjour à tous,
Je me demande si ceci est possible... Imaginons ce bout de code:
Je te déconseille cependant d'avoir recours à une fonction plus générique car ce genre de manipulation ne permet pas facilement d'internationaliser ton application.
Fabien
"Fabian Vilers" a écrit dans le message de news: 42dd0647$0$1815$
Bonjour à tous,
Je me demande si ceci est possible... Imaginons ce bout de code:
> Je te déconseille cependant d'avoir recours à une fonction plus générique car ce genre de manipulation ne permet pas facilement d'internationaliser ton application.
Merci pour cette réponse et ce conseil. Mon application ne devrait jamais être localisées, mais on ne sais jamais ;-)
> Je te déconseille cependant d'avoir recours à une fonction plus générique
car ce genre de manipulation ne permet pas facilement d'internationaliser
ton application.
Merci pour cette réponse et ce conseil. Mon application ne devrait jamais
être localisées, mais on ne sais jamais ;-)
> Je te déconseille cependant d'avoir recours à une fonction plus générique car ce genre de manipulation ne permet pas facilement d'internationaliser ton application.
Merci pour cette réponse et ce conseil. Mon application ne devrait jamais être localisées, mais on ne sais jamais ;-)
Ambassadeur Kosh
> Merci pour cette réponse et ce conseil. Mon application ne devrait jamais être localisées, mais on ne sais jamais ;-)
outre le côté interchangeable, c'est pratique. un texte qui apparait à l'écran et qui a besoin d'etre changé l'est immédiatement sans difficulté, ni impact sur le code.
tu pourrais t'appuyer sur des resources. c'est un truc qu'on trouve fréquement dans le framework : une classe ResourceHelper qui fourni les chaines. à defaut d'un ResourceHelper, des constantes feront l'affaire, mais c'est quand meme un début d'organisation. donc, pas de bricolage avec les "s" et "".
public void f(int n) { string format = n < 2 ? MessageSingular : MessagePlural ; string message = string.Format(format , n) ; } }
reste le probleme habituel avec Format, si la chaine comprend 3 parametre et que tu n'en passes qu'un, c'est la fete, et ça ne se voit pas à la compilation. alors qu'une fonction, ça se voit de suite. j'ai donc reecrit un custom tool qui detecte les {0},{1},{2} et offre dans le ResourceHelper generé des fonctions qui prennent les parametre. dans notre cas, on aurait un truc qui ressemble à ceci
class ResourceHelper { public string MessageSingular(string arg0) ... public string MessagePlural(string arg0) ... }
si ça interesse qqun, je peux mettre les sources à disposition...
> Merci pour cette réponse et ce conseil. Mon application ne devrait jamais
être localisées, mais on ne sais jamais ;-)
outre le côté interchangeable, c'est pratique. un texte qui apparait à
l'écran et qui a besoin d'etre changé l'est immédiatement sans difficulté,
ni impact sur le code.
tu pourrais t'appuyer sur des resources.
c'est un truc qu'on trouve fréquement dans le framework : une classe
ResourceHelper qui fourni les chaines.
à defaut d'un ResourceHelper, des constantes feront l'affaire, mais c'est
quand meme un début d'organisation.
donc, pas de bricolage avec les "s" et "".
public void f(int n)
{
string format = n < 2 ? MessageSingular : MessagePlural ;
string message = string.Format(format , n) ;
}
}
reste le probleme habituel avec Format, si la chaine comprend 3 parametre et
que tu n'en passes qu'un, c'est la fete, et ça ne se voit pas à la
compilation. alors qu'une fonction, ça se voit de suite. j'ai donc reecrit
un custom tool qui detecte les {0},{1},{2} et offre dans le ResourceHelper
generé des fonctions qui prennent les parametre. dans notre cas, on aurait
un truc qui ressemble à ceci
class ResourceHelper
{
public string MessageSingular(string arg0) ...
public string MessagePlural(string arg0) ...
}
si ça interesse qqun, je peux mettre les sources à disposition...
> Merci pour cette réponse et ce conseil. Mon application ne devrait jamais être localisées, mais on ne sais jamais ;-)
outre le côté interchangeable, c'est pratique. un texte qui apparait à l'écran et qui a besoin d'etre changé l'est immédiatement sans difficulté, ni impact sur le code.
tu pourrais t'appuyer sur des resources. c'est un truc qu'on trouve fréquement dans le framework : une classe ResourceHelper qui fourni les chaines. à defaut d'un ResourceHelper, des constantes feront l'affaire, mais c'est quand meme un début d'organisation. donc, pas de bricolage avec les "s" et "".
public void f(int n) { string format = n < 2 ? MessageSingular : MessagePlural ; string message = string.Format(format , n) ; } }
reste le probleme habituel avec Format, si la chaine comprend 3 parametre et que tu n'en passes qu'un, c'est la fete, et ça ne se voit pas à la compilation. alors qu'une fonction, ça se voit de suite. j'ai donc reecrit un custom tool qui detecte les {0},{1},{2} et offre dans le ResourceHelper generé des fonctions qui prennent les parametre. dans notre cas, on aurait un truc qui ressemble à ceci
class ResourceHelper { public string MessageSingular(string arg0) ... public string MessagePlural(string arg0) ... }
si ça interesse qqun, je peux mettre les sources à disposition...