Développement d'un composant MVC - Ajout d'un gestionnaire de langues
From Joomla! Documentation
< J3.x:Developing an MVC Component
This page is tagged because it NEEDS REVIEW. You can help the Joomla! Documentation Wiki by contributing to it.
More pages that need help similar to this one are here. NOTE-If you feel the need is satistified, please remove this notice.
Les articles de cette série
Ajout d'un type de menu à la partie site
Ajout d'un modèle à la partie site
Ajout d'une requête de variable dans le type de menu
Utilisation de la base de données
Backend de base
Ajout de la gestion des langues
Ajout d'actions en backend
Ajout de décorations pour le backend
Ajout de vérifications
Ajout de catégories
Ajout de configuration
Ajout d'un fichier script installation/désinstallation/mise à jour
Ajout d'un formulaire de frontend
Utilisation du filtre de langues
- Ajouter une fenêtre modale
- Ajout d'associations
- Ajout de Checkout
- Ajout d'un filtre
- Ajout de niveaux
- Ajout de versions
- Ajout de tags
- Ajout d'accès
- Ajout d'un processus de traitement
- Ajout d'un cache
- Ajout d'un fil d'actualité
Ajout d'un serveur de mise à jour
Ceci est une série qui regroupe plusieurs articles pour devenir un didacticiel sur la façon de développer un Composant pour Joomla! suivant le principe Modèle-Vue-Contrôleur.
Commencez avec l'introduction, et naviguez dans les articles de cette série soit à l'aide des boutons de navigation en bas des articles, soit grâce au menu de droite : Les articles de cette série.
Introduction
Ce didacticiel fait partie de la série de didacticiels sur le Développement d'un Composant MVC pour Joomla! 3.x. Vous êtes invité à lire les articles précédents de cette série avant de lire celui-ci.
Vous pouvez voir une vidéo associée à cette étape dans le didacticiel Étape 8, Ajout d'un Gestionnaire de Langues.
Joomla! 3.2 gère les langues pour les composants dans quatre situations différentes :
- affichage d'un composant sur le site public
- gestion d'un composant dans le backend
- gestion des menus dans le backend
- installation d'un composant
Joomla! 3.2 utilise deux emplacements de dossier différents pour les langues :
- dans administrator/language ou language
- dans le dossier du composant (administrator/components/*component*/language ou de components/*component*/language)
Tout dépend de la façon dont le composant est installé.
Ajout de la traduction dans la partie publique du site
A l'aide de votre gestionnaire de fichiers et éditeur préférés, ajoutez un fichier site/language/en-GB/en-GB.com_helloworld.ini. Ce fichier contiendra la traduction de la partie publique. Pour le moment, ce fichier est vide.
site/language/en-GB/en-GB.com_helloworld.ini
Pour le moment, il n'y a aucune chaîne de traduction dans ce fichier.
Ajout de traduction lors de la gestion du composant
A l'aide de votre gestionnaire de fichiers et éditeur préférés, ajoutez un fichier admin/language/en-GB/en-GB.com_helloworld.ini. Ce fichier contiendra la traduction pour le backend.
admin/language/en-GB/en-GB.com_helloworld.ini
; Joomla! Project
; Copyright (C) 2005 - 2018 Open Source Matters. All rights reserved.
; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php
; Note : All ini files need to be saved as UTF-8
COM_HELLOWORLD_NUM="#"
COM_HELLOWORLD_PUBLISHED="Published"
COM_HELLOWORLD_HELLOWORLDS_NAME="Name"
COM_HELLOWORLD_ID="Id"
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC="This message will be displayed"
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL="Message"
COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING="Greeting"
COM_HELLOWORLD_HELLOWORLD_HEADING_ID="Id"
A l'aide de votre gestionnaire de fichiers et éditeur préférés, ajoutez un fichier admin/language/en-GB/en-GB.com_helloworld.sys.ini. Ce fichier contiendra la traduction pour le backend.
admin/language/en-GB/en-GB.com_helloworld.sys.ini
; Joomla! Project
; Copyright (C) 2005 - 2015 Open Source Matters. All rights reserved.
; License GNU General Public License version 2 or later; see LICENSE.txt, see LICENSE.php
; Note : All ini files need to be saved as UTF-8
COM_HELLOWORLD="Hello World!"
COM_HELLOWORLD_DESCRIPTION="This is the Hello World description"
COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_TITLE="Hello World"
COM_HELLOWORLD_HELLOWORLD_VIEW_DEFAULT_DESC="This view displays a selected message"
COM_HELLOWORLD_MENU="Hello World!"
Options d'emplacement des fichiers de langue
Depuis Joomla! 1.7, il existe deux façons d'installer les fichiers de langue pour une extension. Il est possible d'utiliser l'une ou l'autre ou une combinaison des deux.
Sous Joomla! 1.5, les fichiers étaient installés dans les dossiers de langue NATIFS (RACINE/administrator/language/ et RACINE/language/). Depuis Joomla! 1.6, les fichiers sont inclus dans un dossier language installé à la racine de l'extension.
Par conséquent, une extension peut inclure un dossier de langue avec un .sys.ini différent de celui installé dans les dossiers de langue natifs de Joomla. (Ce dernier n'étant pas inclus dans ce dossier de langue, mais à la racine ou dans tout autre dossier non installé.)
Cela nous permet d'afficher deux descriptions différentes : l'une (celle du fichier sys.ini du dossier language) est utilisée pour afficher un message lorsque l'installation est terminée ; la seconde (celle du fichier .ini) est utilisée pour les opérations normales, c'est-à-dire lorsque l'extension est éditée en backend. Cela peut être très utile lorsque l'installation utilise également certains scripts et nécessite une valeur différente pour la description.
Le fichier sys.ini est également utilisé pour traduire le nom des extensions dans certains gestionnaires de backend et pour fournir une traduction du menu pour les composants.
Par conséquent, le document xml inclut depuis 1.6 :
<files>
<[...]
<folder>language</folder> // This folder HAS to include the right subfolders, i.e. language/en-GB/ ... language/fr-FR/
<filename>whatever</filename>
[...]
</files>
<administration>
<files folder="admin">
<[...]
<folder>language</folder>
<filename>whatever</filename>
<[...]
</files>
</administration>
et/ou (1.5) :
<languages folder="joomlacorelanguagefolders"> // If using another language folder for cleanliness. (Any folder name will fit.)
<language tag="en-GB">en-GB/en-GB.whatever.ini</language> // or
<language tag="en-GB">en-GB.whatever.ini</language> if no tagged subfolder
<language tag="en-GB">en-GB/en-GB.whatever.sys.ini</language> // or
<language tag="en-GB">en-GB.whatever.sys.ini</language> if no tagged subfolder
</languages>
ou tout simplement à la RACINE :
<languages>
<language tag="en-GB">en-GB.whatever.ini</language>
<language tag="en-GB">en-GB.whatever.sys.ini</language>
</languages>
Le fichier langue utilisé par le script d'installation lors de l'installation d'un composant (la première installation et non pas une mise à niveau) obéit à des règles spécifiques décrites dans l'article Spécification des fichiers de langue. Lors de la première installation, seul le fichier de langue inclus dans le dossier du composant (/administrator/components/com_helloworld/language)
est utilisé, s'il est présent. Si ce fichier n'est fourni que dans le dossier de langue NATIF (/administrator/language)
, alors aucune traduction ne se produit. Ceci s'applique également aux clés utilisées dans le fichier Manifest.
Lors de la mise à niveau ou de la désinstallation de l'extension (pas l'installation), c'est le fichier sys.ini présent à la racine de l'extension dans le dossier language qui va afficher le résultat de l'installation grâce à la description clé/valeur. Par la suite, et le cas échéant, ce sont les fichiers sys.ini et .ini installés dans le dossier NATIF language qui auront la priorité sur les fichiers présents à la racine de l'extension dans le dossier language.
L'un des avantages de l'installation des fichiers dans le dossier "language" de l'extension est qu'ils ne sont pas touchés lors de la mise à jour d'un pack de langue.
L'autre avantage est que ce dossier peut inclure plusieurs langues (toujours en-GB, fr-FR, it-IT, etc.) ne nécessitant pas l'installation par l'utilisateur du pack de langue correspondant. Ce qui est pratique car ils sont disponibles si, plus tard, un utilisateur installe le pack correspondant.Empaqueter le composant
Contenu de votre répertoire de code
- helloworld.xml
- site/helloworld.php
- site/index.html
- site/controller.php
- site/views/index.html
- site/views/helloworld/index.html
- site/views/helloworld/view.html.php
- site/views/helloworld/tmpl/index.html
- site/views/helloworld/tmpl/default.xml
- site/views/helloworld/tmpl/default.php
- site/models/index.html
- site/models/helloworld.php
- site/language/index.html
- site/language/en-GB/index.html
- site/language/en-GB/en-GB.com_helloworld.ini
- admin/index.html
- admin/helloworld.php
- admin/controller.php
- admin/sql/index.html
- admin/sql/install.mysql.utf8.sql
- admin/sql/uninstall.mysql.utf8.sql
- admin/sql/updates/index.html
- admin/sql/updates/mysql/index.html
- admin/sql/updates/mysql/0.0.1.sql
- admin/sql/updates/mysql/0.0.6.sql
- admin/models/index.html
- admin/models/fields/index.html
- admin/models/fields/helloworld.php
- admin/models/helloworlds.php
- admin/views/index.html
- admin/views/helloworlds/index.html
- admin/views/helloworlds/view.html.php
- admin/views/helloworlds/tmpl/index.html
- admin/views/helloworlds/tmpl/default.php
- admin/tables/index.html
- admin/tables/helloworld.php
- admin/language/index.html
- admin/language/en-GB/en-GB.com_helloworld.ini
- admin/language/en-GB/en-GB.com_helloworld.sys.ini
- admin/language/en-GB/index.html
Créez un fichier compressé de ce répertoire ou téléchargez directement l'archive et installez-le en utilisant le gestionnaire des extensions Joomla. Vous pouvez ajouter un élément de menu pour ce composant à l'aide du gestionnaire de menus dans le backend.
helloworld.xml
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="3.0" method="upgrade">
<name>COM_HELLOWORLD</name>
<!-- The following elements are optional and free of formatting constraints -->
<creationDate>January 2018</creationDate>
<author>John Doe</author>
<authorEmail>john.doe@example.org</authorEmail>
<authorUrl>http://www.example.org</authorUrl>
<copyright>Copyright Info</copyright>
<license>License Info</license>
<!-- The version string is recorded in the components table -->
<version>0.0.8</version>
<!-- The description is optional and defaults to the name -->
<description>COM_HELLOWORLD_DESCRIPTION</description>
<install> <!-- Runs on install -->
<sql>
<file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
</sql>
</install>
<uninstall> <!-- Runs on uninstall -->
<sql>
<file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
</sql>
</uninstall>
<update> <!-- Runs on update; New since J2.5 -->
<schemas>
<schemapath type="mysql">sql/updates/mysql</schemapath>
</schemas>
</update>
<!-- Site Main File Copy Section -->
<!-- Note the folder attribute: This attribute describes the folder
to copy FROM in the package to install therefore files copied
in this section are copied from /site/ in the package -->
<files folder="site">
<filename>index.html</filename>
<filename>helloworld.php</filename>
<filename>controller.php</filename>
<folder>views</folder>
<folder>models</folder>
</files>
<languages folder="site/language">
<language tag="en-GB">en-GB/en-GB.com_helloworld.ini</language>
</languages>
<administration>
<!-- Administration Menu Section -->
<menu link='index.php?option=com_helloworld'>COM_HELLOWORLD_MENU</menu>
<!-- Administration Main File Copy Section -->
<!-- Note the folder attribute: This attribute describes the folder
to copy FROM in the package to install therefore files copied
in this section are copied from /admin/ in the package -->
<files folder="admin">
<!-- Admin Main File Copy Section -->
<filename>index.html</filename>
<filename>helloworld.php</filename>
<filename>controller.php</filename>
<!-- SQL files section -->
<folder>sql</folder>
<!-- tables files section -->
<folder>tables</folder>
<!-- models files section -->
<folder>models</folder>
<!-- views files section -->
<folder>views</folder>
</files>
<languages folder="admin/language">
<language tag="en-GB">en-GB/en-GB.com_helloworld.ini</language>
<language tag="en-GB">en-GB/en-GB.com_helloworld.sys.ini</language>
</languages>
</administration>
</extension>
Dans ce fichier helloworld.xml, les langues sont installées dans :
- administrator/language pour la partie administration (regardez la balise languages du xml).
- components/com_helloworld/language pour la partie site (il n'y a pas de balises xml de langue dans la partie site du fichier de description xml, mais le dossier de langue est inclus).
Merci de créer un pull request ou un rapport d'anomalie sur https://github.com/joomla/Joomla-3.2-Hello-World-Component pour toute incohérence dans le code ou pour modifier le code source de cette page.