gestion de site Web multilingue - Revue de code Stack échange

Bien que cela fonctionne parfaitement, je ne suis pas sûr que ce soit la bonne façon de le faire. Je ne trouve pas beaucoup de tutoriels sur la façon de le faire en utilisant OOP donc j'ai les doutes suivants:

  1. Est-ce une bonne façon de le faire?
  2. est-ce maintenable code?
  3. serait-il plus judicieux de créer une table dans la base de données avec toutes les langues différentes?
  4. Je me bats toujours pour comprendre « classes abstraites ». Serait-ce le cas pour créer une language.php de classe abstraite et étends (j'espère que ce sera la bonne terminologie) cette classe avec d'autres classes de langues (english.php. Italian.php etc).

Vous avez fait un bon début, mais l'instruction switch dans LangueUtilisateur () juste ne se sent pas bien du point de vue orienté objet:

Une classe appelée langue doit représenter une seule langue qui est suffisamment générique pour répondre à tous les cas: mais à l'heure actuelle, quelle que soit la langue qu'il représente, il a les définitions de tous simplement coincées dans cette seule méthode.

Solution 1: fichier de configuration simple

parse_ini_file () est un petit outil très puissant qui fait exactement ce que vous attendez. L'utilisation d'un fichier simple comme celui que nous appellerons en.ini:

Vous pouvez simplement utiliser: parse_ini_file ( « en.ini ») pour retourner un tableau exactement comme dans votre instruction switch, qui sera beaucoup plus facile pour les autres (les non-programmeurs) à lire et à écrire pour vous. Et si vous deviez continuer ensuite nommer les fichiers avec ce style, vous pouvez réduire LangueUtilisateur () à quelque chose comme:

Solution 2: Classe abstraite

En tant que votre tableau est essentiellement agit comme méthodes getter, une classe abstraite de la langue doit avoir toutes les composantes de la langue dont vous avez besoin en elle, comme ceci:

Sinon, vous pouvez combiner ces styles et ont une langue avec des méthodes singleton getter accès à ce tableau, i.e. .:

Qui fournira les avantages des deux. Personnellement, cependant, à moins que vous prévoyez d'ajouter plus de langues dans un avenir très proche, je crois que la solution n ° 2 vous conviendrait le mieux.

avec quelques différences

Par exemple au lieu d'utiliser des constantes composées comme PAGE_TITLE, utilisez la chaîne réelle dans votre langue maternelle.

Donc, mon dossier en_nz.ini ressemble à ceci

Mon fichier fr_fr.ini ressemble à ceci

Un autre avantage est que si vous utilisez plusieurs langages de programmation, le fichier ini est indépendant de ceux-ci.

Vous pouvez également faire des choses plus avancées comme arguments, y compris dans les cordes

Ensuite, lorsque vous restituez la chaîne dans votre page

Articles Liés