Exemple
Voici un exemple minimaliste d'un fichier de langue avec du francais et de l'anglais :
# <program_name> language file. [TRANSLATORS] { # One translator informations block. Only one per translator ! TRANSLATOR { LangID:fr Name:HECHT Franck Date:24/11/2007 Language:Francais Mail:franhec@gmail.com Website:http://franckh.developpez.com } TRANSLATOR { LangID:en Name:HECHT Franck Date:24/11/2007 Language:Anglais Mail:franhec@gmail.com Website:http://franckh.developpez.com } } [LANGUAGES] { # Format: <language_name>:<language_id> Francais:fr Anglais:en } # Strings list. [SENTENCES] { # String about the program. ABOUT { fr:A propos de C_Lang. en:About C_Lang. } }
Dans le premier bloc se trouve la liste des différents traducteurs dont un bloc par traducteur à l'intérieur du bloc principal. Le second bloc est la liste des langues avec en plus l'id de chacune d'entre elles. L'id permettra à la bibliothèque de retrouver les bonnes lignes de texte à charger. Le dernier bloc permet quant à lui de stocker toutes les phrases dans toutes les langues dont vos projets seront pourvus. Chaque sous-bloc correspond à une phrase dans toutes les langues que le fichier contient. Le titre de chaque bloc correspond à l'id des phrases qui vous seront utiles pour les retrouver avec les fonctions adéquates.
Voici un exemple de code :
#include <stdio.h> #include <stdlib.h> #include "c_lang.h" int main (void) { /* Ouverture du module avec la langue Anglaise */ lang_infos * p_self = c_lang_init ("language.lang", "Anglais"); if (p_self != NULL) { printf ("========== Informations de la langue ==========\n\n"); printf ("> Filename = %s\n", c_lang_get_filename (p_self)); printf ("> Language = %s\n", c_lang_get_language (p_self)); printf ("> ID = %s\n", c_lang_get_id (p_self)); printf ("\n\n========== Phrases dans le fichier de test ==========\n\n"); printf ("ABOUT = %s\n", c_lang_get_string (p_self, "ABOUT")); printf ("\n\n========== Informations du traducteur ==========\n\n"); printf ("> Nom de l'auteur : %s\n", c_lang_get_translator_name (p_self)); printf ("> Date d'ajout : %s\n", c_lang_get_translator_date (p_self)); printf ("> Langue : %s\n", c_lang_get_translator_language (p_self)); printf ("> Adresse mail : %s\n", c_lang_get_translator_mail (p_self)); printf ("> Site internet : %s\n", c_lang_get_translator_website (p_self)); /* Fermeture du module */ c_lang_close (& p_self); } return EXIT_SUCCESS; }
L'extension du fichier de langue est facultative mais par convention l'extension pour la bibliothèque est *.lang. Voici la sortie sur la console pour le programme ci-dessus :
========== Informations de la langue ==========
> Filename = language.lang
> Language = Anglais
> ID = en
========== Phrases dans le fichier de test ==========
ABOUT = About C_Lang.
========== Informations du traducteur ==========
> Nom de l'auteur : HECHT Franck
> Date d'ajout : 24/11/2007
> Langue : Anglais
> Adresse mail : franhec@gmail.com
> Site internet : http://franckh.developpez.com
typedef struct _lang_infos | lang_infos |
const char * | c_lang_get_product_id (void) |
const char * | c_lang_get_version (void) |
int | c_lang_get_major (void) |
int | c_lang_get_minor (void) |
int | c_lang_get_revision (void) |
const char * | c_lang_get_filename (const lang_infos *self) |
const char * | c_lang_get_language (const lang_infos *self) |
const char * | c_lang_get_id (const lang_infos *self) |
size_t | c_lang_get_nb_string (const lang_infos *self) |
const char * | c_lang_get_string (const lang_infos *self, const char *id) |
const char * | c_lang_get_translator_name (const lang_infos *self) |
const char * | c_lang_get_translator_date (const lang_infos *self) |
const char * | c_lang_get_translator_language (const lang_infos *self) |
const char * | c_lang_get_translator_mail (const lang_infos *self) |
const char * | c_lang_get_translator_website (const lang_infos *self) |
lang_infos * | c_lang_init (const char *filename, const char *lang) |
void | c_lang_close (lang_infos **self) |
typedef struct _lang_infos lang_infos |
Type opaque contenant toutes les informations de la langue et les phrases par rapport à la langue choisie ainsi que les informations sur le traducteur.
const char* c_lang_get_product_id | ( | void | ) |
Renvoie l'ID de la bibliothèque.
const char* c_lang_get_version | ( | void | ) |
Renvoie la version de la bibliothèque.
int c_lang_get_major | ( | void | ) |
Renvoie la version majeur de la bibliothèque.
int c_lang_get_minor | ( | void | ) |
Renvoie la version mineur de la bibliothèque.
int c_lang_get_revision | ( | void | ) |
Renvoie la version revision de la bibliothèque.
const char* c_lang_get_filename | ( | const lang_infos * | self | ) |
Renvoie le nom du fichier de langue en cours d'utilisation.
self | Pointeur sur la structure d'informations du fichier de langue en cours. |
const char* c_lang_get_language | ( | const lang_infos * | self | ) |
Renvoie le nom de la langue en cours d'utilisation.
self | Pointeur sur la structure d'informations du fichier de langue en cours. |
const char* c_lang_get_id | ( | const lang_infos * | self | ) |
Renvoie l'id de la langue en cours d'utilisation.
self | Pointeur sur la structure d'informations du fichier de langue en cours. |
size_t c_lang_get_nb_string | ( | const lang_infos * | self | ) |
Renvoie le nombre de phrases de la langue en cours d'utilisation.
self | Pointeur sur la structure d'informations du fichier de langue en cours. |
const char* c_lang_get_string | ( | const lang_infos * | self, | |
const char * | id | |||
) |
Renvoie la phrase par rapport a son ID.
self | Pointeur sur la structure d'informations du fichier de langue en cours. | |
id | ID de la phrase a retrouver dans le tableau. |
const char* c_lang_get_translator_name | ( | const lang_infos * | self | ) |
Renvoie le nom du traducteur de la langue courante.
self | Pointeur sur la structure d'informations du fichier de langue en cours. |
const char* c_lang_get_translator_date | ( | const lang_infos * | self | ) |
Renvoie la date d'ajout de la langue du traducteur de la langue courante.
self | Pointeur sur la structure d'informations du fichier de langue en cours. |
const char* c_lang_get_translator_language | ( | const lang_infos * | self | ) |
Renvoie le nom complet de la langue ajoutee par le traducteur de la langue courante.
self | Pointeur sur la structure d'informations du fichier de langue en cours. |
const char* c_lang_get_translator_mail | ( | const lang_infos * | self | ) |
Renvoie l'adresse mail du traduteur de la langue courante.
self | Pointeur sur la structure d'informations du fichier de langue en cours. |
const char* c_lang_get_translator_website | ( | const lang_infos * | self | ) |
Renvoie l'adresse du site internet du traducteur de la langue courante.
self | Pointeur sur la structure d'informations du fichier de langue en cours. |
lang_infos* c_lang_init | ( | const char * | filename, | |
const char * | lang | |||
) |
Initialisation du module de gestion de langues.
filename | Nom complet du fichier de langue a utiliser. | |
lang | Nom de la langue a charger. |
void c_lang_close | ( | lang_infos ** | self | ) |
Fermeture du module de gestion de langues.
self | Adresse de la structure d'informations du fichier de langue en cours. |