J3.x

Développement d'un composant MVC - Ajout d'un gestionnaire de langues

From Joomla! Documentation

< J3.x:Developing an MVC Component
This page is a translated version of the page J3.x:Developing an MVC Component/Adding language management and the translation is 100% complete.

Other languages:
العربية • ‎English • ‎español • ‎français • ‎Nederlands
Copyedit.png
This Page Needs Your Help

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.


Joomla! 
3.x
Didacticiel
Développement d'un composant MVC


Ceci est une série qui regroupe plusieurs articles pour devenir un didacticiel sur la façon de développer un Composant pour Joomla! Joomla 3.x 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"

Ajout de traduction lors de la gestion des menus dans le backend

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.

A noter !

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.

Avantages du dossier Language d'une extension

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

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).
Info non-talk.png
General Information

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.

Contributeurs