also das mit templates mach ich so: es gibt so ne genannte smarty-variablen die in einer externen datei definiert werden können.
http://smarty.php.net/manual/en/config.files.php
da mache ich persönlich verschiedene sections.
z.b.
#fuer alle sprachen
labelsendbutton = "Send"
#fuer deutsch
[de]
labelsendbutton = "Abschicken"
#fuer fran
[fr]
labelsendbutton = "watweißich"
welche config-section geladen werden soll bestimme ich dann vorher in der index.php, je nachdem welche sprache ausgewählt wurde.
und das mit den artikeln halte ich für schwachsinn.
du speicherst in einer tabelle eben die artikel mit zugehörigen sprach-irrelevanten daten. dazu noc ne tabelle mit den sprachrelevanten daten.
dort hast du dann meinetwegen
id | articleid | languageid | text
und dort trägst du dann die artikel-id ein, die id der sprache (falls die irgendwo gespeichert sind) und dann den text von dem artikel.
stell dir vor du willst ne weitere sprache einführen und dann musst du noch ne spalte hinzufügen - sowas macht man nicht.