Tu peux essayer de t'inspirer de ce que propose Java avec ses fichiers de propriétés (classe ResourceBundle dans le package java.util).
Un fichier de propriétés est un fichier texte composé simplement de lignes "clé = valeur". Une clé est une suite de caractère alphanumériques, de points, de tirets, et d'underscores. La valeur peut contenir tout caractère et se termine à la fin de la ligne ; le backslash est un caractère d'échappement (classique) pour les séquences \n, \r, ... et pour pouvoir écrire la valeur sur plusieurs lignes.
Les commentaires sont possibles : ce sont les lignes commençant par un dièse.
Enfin, et ce n'est pas la moindre des fonctionnalités, le système a la notion de localisation, sous la forme "langue[_région[_variant]]", ce qui permet à un fichier de ressources "toto" d'être écrit sur plusieurs fichiers, par exemple : "toto" (toutes langues), "toto_en" (anglais générique), "toto_en_US" (anglais américain), "toto_en_GB" (anglais britaninique), "toto_fr" (français générique), "toto_fr_FR" (français de France), "toto_fr_CA" (français du Canada), "toto_fr_BE" (français de Belgique), ...
Ainsi, si la localisation courante est français du Canada ("fr_CA" ), le système va chercher ses messages, désignés par des clés uniques à chaque message, dans "toto_fr_CA". S'il y en a un qu'il ne trouve pas, il regardera automatiquement dans le fichier "français générique", donc "toto_fr" ; et s'il ne le trouve toujours pas, il cherchera dans le fichier "toutes langues", soit "toto". Et là, s'il n'a toujours rien trouvé, alors il dira que le message n'est pas connu (en Java, une exception MissingResourceException est levée).
Gros avantage : les fichiers qui définissent les messages des variants ne redéfinissent que les messages pour lesquels les mots sont différents. L'essentiel des messages est stocké dans le fichier de langue générique => duplication des messages limitée au maximum. Autre avantage : si tu utilises le fichier "toutes langues" comme contenant les messages dans la langue par défaut (typiquement, l'anglais), tu géreras de manière élégante les langues non connues => dans ces langues-là, les messages seront correctement affichés, mais dans la langue par défaut. Et supporter une nouvelle langue ou un nouveau variant sera extrêmement simple : il suffira de rajouter le fichier langue ou variant correspondant, sans avoir à recompiler quoi que ce soit.