J3.x

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

From Joomla! Documentation

< J3.x:Developing an MVC Component
Revision as of 09:32, 23 July 2015 by Sandra97 (talk | contribs)
Other languages:
English • ‎Nederlands • ‎español • ‎français • ‎العربية • ‎中文(台灣)‎
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

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

  1. Ajout d'ACL

Ajout d'un fichier script installation/désinstallation/mise à jour

Ajout d'un formulaire de frontend

  1. Ajout d'une image
  2. Ajout d'un plan
  3. Ajout d'AJAX
  4. Ajout d'un alias

Utilisation du filtre de langues

  1. Ajouter une fenêtre modale
  2. Ajout d'associations
  3. Ajout de Checkout
  4. Ajout d'un filtre
  5. Ajout de niveaux
  6. Ajout de versions
  7. Ajout de tags
  8. Ajout d'accès
  9. Ajout d'un processus de traitement
  10. Ajout d'un cache
  11. Ajout d'un fil d'actualité

Ajout d'un serveur de mise à jour

  1. Adding Custom Fields
  2. Upgrading to Joomla4



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. 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 du backend.

admin/language/en-GB/en-GB.com_helloworld.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_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 du 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>

Language file used by the installation script during the installation of a component(the first install, not an upgrade) obeys specific rules described in the article, Specification of language files. During the first installation, only the language file included in the component folder (/administrator/components/com_helloworld/language) is used when present. If this file is only provided in the CORE language folder (/administrator/language), no translation occurs. This also applies to KEYs used in the manifest file.

When upgrading or uninstalling the extension (not installing), it is the sys.ini file present in the extension root language folder which will display the result of the installation from the description key/value. Thereafter, if present, the sys.ini as well as the .ini installed in the CORE language folder will have priority over the files present in the root language folder of the extension.

Advantages of Extension "Language" Folder

One advantage of installing the files in the extension "language" folder is that these are not touched when updating a language pack.

The other advantage is that this folder can include multiple languages (en-GB always, fr-FR, it-IT, etc.) not requiring the user to install the corresponding language pack. This is handy as they are available if, later on, a user installs the corresponding pack.

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.2.0" method="upgrade">

	<name>COM_HELLOWORLD</name>
	<!-- The following elements are optional and free of formatting constraints -->
	<creationDate>January 2014</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 d'administration (regardez la balise languages du xml).
  • components/com_helloworld/language for the site part (there are no xml languages tag in the site part of the xml description file, but the language folder is included).
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