Java : gestion des messages

java.jpgVoici un exemple de code permettant la gestion de message en Java. Cette petite classe mono-instance charge en fonction de la langue le fichier propriété contenant les messages. Elle permet aussi de gérer le remplacement des champs dynamique dans les messages.

Vous trouverez le fichier java à la fin de ce post.

Comme vous pouvez le voir, cette classe est très simple. Le code suivant permet de charger les messages selon la langue :

msg = ResourceBundle.getBundle("message",new Locale(ApplicationPreference.getLanguage(),"") );

Cette instruction chargera le fichier message.properties qui se trouve dans mon classpath. Si la langue est “fr” alors le fichier chargeras le fichier message_fr.properties si il n’existe pas il tenteras de charger le fichier correspondant à la langue et sinon il chargera en dernier recours message.properties (et si il ne le trouve pas alors une exception est levé).

Ensuite deux fonctions permettent de récupérer les messages selon la clef de ceux-ci. Pour pouvoir gérer les message avec des chaine de caractère dynamique on utilise la classe MessageFormat. Voici le code correspondant :

return MessageFormat.format(getInstance().msg.getString(key),arguments);

La variable “arguments” est une liste d’objet.

Comment cela fonctionne ? Très simplement si le message dans le fichier properties est :

msg1=My name is {1} and not {2}

Alors avec une liste de string contenant Sebastien et Eric, on obtient le message suivant :

My name is Sebastien and not Eric

Voila Voila bonne continuation…

package com.cba.socialBridge.util.application;
 
import java.text.MessageFormat;
import java.util.Locale;
import java.util.ResourceBundle;
 
public class ApplicationMessage
{
static protected ApplicationMessage instance=null;
static public String[] languageList     = { "Français", "English" };
static public String[] languageListCode = { "fr", "en" };
protected ResourceBundle msg;
 
private ApplicationMessage()
{
super();
msg = ResourceBundle.getBundle("message", new Locale(ApplicationPreference.getLanguage(),"") );
}
 
public static int getIndexLanguageInLanguageList()
{
int index=-1;
for (int i=0 ; index==-1 && i
                {
                        if ( languageListCode[i].equals(ApplicationPreference.getLanguage()) )
                        {
                                index = i;
                        }
                }
 
                return index;
        }
 
        protected static ApplicationMessage getInstance()
        {
                if ( instance==null )
                {
                        instance = new ApplicationMessage();
                }
 
                return instance;
        }
 
        public static String getMessage(String key)
        {
                String  result = "?" + key + "?";
 
                try
                {
                        result = getInstance().msg.getString(key);
                }
                catch(Exception e)
                {
                        ApplicationLogger.getLogger().error("There is a problem with messages management : " + e.getMessage() );
                }
 
                if ( result == null )
                 result = "?" + key + "?";
 
                return result;
        }
 
        public static String getMessage(String key,Object[] arguments)
        {
                String  result = "?" + key + "?";
 
                try
                {
                        result = MessageFormat.format(getInstance().msg.getString(key),
                                        arguments);
                }
                catch(Exception e)
                {
                        ApplicationLogger.getLogger().error("There is a problem with messages management : " + e.getMessage() );
                }
 
                if ( result == null )
                 result = "?" + key + "?";
 
                return result;
        }
}
  • Digg
  • del.icio.us
  • Technorati
  • Facebook
  • Google
  • YahooMyWeb

Tags: , , ,   Catégorie : Développement

Plugin Sociale et Polyglot en même temps pour WordPress

Je ne suis pas sur que vous l’aillez remarqué. Cependant les plugins suivants :

Sociable et Polyglot

Ne fonctionne pas bien ensemble du moment où vous avez des titres en plusieurs langues. En effet, les titres dans les liens proposés par le plugin Sociale contiendront les tags non interprété du plugin Polyglot.

Il faut aller faire une petite modification du plugin Sociale pour que cela fonctionne bien.

remplacer la chaine de caractère :
$title = urlencode($post->post_title);

par :
$title = urlencode(polyglot_filter($post->post_title));

  • Digg
  • del.icio.us
  • Technorati
  • Facebook
  • Google
  • YahooMyWeb

Tags: , , ,   Catégorie : Développement

Google Analytics - Générateur de graphique

Je viens de réaliser un petit développement en Php basé sur JPgraph et le plugin Tan Tan Google Analytics Reports.

J’ai simplement réutilisé les librairies de Tan Tan de façon à générer facilement des graphiques.

Le code est facilement adaptable. Voici un exemple :

exemple.jpg

Ce sont des images générées à l’aide de la librairie JPGraph.

Comment l’obtenir :

  • Téléchargez le fichier contenant les sources : GoogleAnalytics_GraphsGenerator_V1.zip
  • Modifiez le fichier visitors.php pour remplacer YourLogin et YourPassword par les valeurs de connexion à Google Analytics.
  • Accedez ensuite au fichier visitors.php en à l’aide votre navigateur : http://votresite/visitors.php?id=XXX
    XXX est à remplacer par l’id de votre profile. Cette id se trouve dans l’url lorsque vous cliquez sur afficher le rapport dans Google Analytics. Par exemple dans l’url suivante https://www.google.com/analytics/reporting/dashboard?id=HERE&scid=dd l’identifiant du profile est HERE.
  • Votre rapport s’affiche.

Il est facilement possible de créer des composants pour iGoogle à fin d’intégrer cette image.

Pour l’instant seul le nombre de visiteurs uniques durant les sept derniers jours s’affiche mais avec un peu de connaissance vous avez tout ce que vous avez besoin pour afficher le rapport que vous désirez.

Bug Connus :

  1. Les valeurs à 0 sont ignorées. Autrement dit si vous n’avez pas de visite un jour, il n’apparraisse pas du tout.
  • Digg
  • del.icio.us
  • Technorati
  • Facebook
  • Google
  • YahooMyWeb

Tags: , , ,   Catégorie : Développement