Desarrollo de un Componente MVC/Agregar gestión de idioma
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.
Artículos de esta Serie
Agregar un tipo de menú a la parte del sitio
Agregar un modelo a la parte del sitio
Agregar una variable de petición en el tipo de menú
Utilizando la base de datos
Lado servidor básico
Agregar gestión de idioma
Agregar acciones del lado servidor
Agregar decoraciones del lado servidor
Agregar verificaciones
Agregar categorías
Agregar configuración
Agregar un archivo de secuencia de comandos instalar-desinstalar-actualizar
Agregar un formulario del lado cliente
Usar la facilidad filtro de idioma
- Agregar una Modal
- Agregar Asociaciones
- Agregar Comprobación
- Agregar Ordenamiento
- Agregar Niveles
- Agregar Control de Versiones
- Agregar Etiquetas
- Agregar Accesos
- Agregar procesos por lote
- Agregar Caché
- Agregar un Canal de Noticias
Agregar un servidor de actualización
Esta es una serie multi-artículos de tutoriales sobre cómo desarrollar un Componente Modelo-Vista-Controlador para Joomla! Versión.
Comenzar con la Introducción, y navegar por los artículos de esta serie usando el botón de navegación en la parte inferior o en el cuadro de la derecha (los "Artículos de esta serie").
Introducción
Este artículo es parte del tutorial Desarrollo de un Componente MVC para Joomla! 3.2. Te invitamos a leer las partes anteriores del tutorial antes de leer esto.
Puedes ver un vídeo (en inglés) asociado con este paso del tutorial en Paso 8, agregar administración de idioma.
Joomla! 3.2 gestiona idiomas para los componentes en cuatro situaciones diferentes:
- la visualización de un componente en el sitio público
- la gestión de un componente en el servidor
- la gestión de menús en el lado servidor
- la instalación de un componente
Joomla! 3.2 utiliza dos ubicaciones diferentes para las capetas de idiomas:
- una en administrator/language o language
- una en la carpeta del componente (administrator/components/*component*/language o components/*component*/language)
Depende de cómo se instala el componente.
Agregar traducción del idioma en el sitio público
Con tu administrador y editor de archivos favoritos, coloca un archivo site/language/en-GB/en-GB.com_helloworld.ini. Este archivo contiene la traducción de la parte pública. Por el momento, este archivo está vacío.
site/language/en-GB/en-GB.com_helloworld.ini
Por el momento, no hay traducciones de cadenas en este archivo.
Agregar traducción de idioma en la gestión del componente
Con tu administrador y editor de archivos favoritos, coloca un archivo admin/language/en-GB/en-GB.com_helloworld.ini. Este archivo contiene la traducción para la parte del servidor.
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"
Agregar traducción de idiomas en la gestión de los menús en el lado servidor
Con tu administrador y editor de archivos favoritos, coloca un archivo admin/language/en-GB/en-GB.com_helloworld.sys.ini. Este archivo contiene la traducción para el lado servidor.
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!"
Archivo de Idioma Opciones de Ubicación
A partir de la versión 1.7 hay 2 formas de instalar los archivos de idioma para una extensión. Se puede usar uno, el otro o una combinación de ambos.
En la versión 1.5, los archivos se instalan en la carpeta de idiomas del NÚCLEO (ROOT/administrator/language/ y ROOT/language/). Desde la versión 1.6, los archivos se instalan en una carpeta "idioma" en la raíz de la extensión.
Por lo tanto, una extensión puede incluir una carpeta de idioma con un .sys.ini diferente del que se ha instalado en las carpetas de idioma del núcleo de Joomla. (Este último no está incluido en la carpeta de ese lenguaje, pero en la raíz o en cualquier otra carpeta no instalada).
Esto nos permite mostrar 2 descripciones diferentes: una desde el sys.ini en la carpeta "idioma" se utiliza como un mensaje que se muestra cuando termine la instalación, el otro (desde .ini) se utiliza para el funcionamiento "normal", es decir, cuando la extensión es editada en el lado servidor. Esto puede ser muy útil cuando la instalación también utiliza algunas secuencias de comandos y requiere un valor diferente de la descripción.
El archivo sys.ini también se utiliza para traducir el nombre de las extensiones en algunos Gestores del lados servidor back-end y a proporciona al menú la traducción a los componentes.
Por lo tanto, el xml incluiría desde la versión 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>
y/o (en la versión 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>
o simplemente en la RAÍZ:
<languages>
<language tag="en-GB">en-GB.whatever.ini</language>
<language tag="en-GB">en-GB.whatever.sys.ini</language>
</languages>
El archivo de idioma usado por el script de instalación durante la instalación de un componente (primera instalación, no una actualización) obedece a reglas específicas que se describen en el artículo, Especificación de los archivos de idioma. Durante la primera instalación, sólo el archivo de idioma incluido en la carpeta (/administrator/components/com_helloworld/language)
del componente se utiliza cuando esta presente. Si este archivo se proporciona sólo en la carpeta de idioma del NÚCLEO (/administrator/language)
, no produce ninguna traducción. Esto también se aplica a las Claves que se utilizan en el archivo de manifiesto.
Al actualizar o desinstalar la extensión (no instalar), el archivo sys.ini presente en la carpeta de idioma en la raiz de la extensión mostrará el resultado de la instalación a partir de la descripción de clave/valor. A partir de entonces, si está presente, el sys.ini así como el .ini instalado en la carpeta de lenguaje del NÚCLEO tendrá prioridad sobre los archivos presentes en la carpeta de idioma de la raíz de la extensión.
Una de las ventajas de la instalación de los archivos en la carpeta "idioma" de la extensión es que estos no son tocados cuando se actualiza un paquete de idioma.
La otra ventaja es que esta carpeta puede incluir varios idiomas (en-GB siempre, fr-FR, it-IT, etc). no requiere que el usuario instale el paquete de idioma correspondiente. Esto es muy práctico cuando ya están disponibles o si posteriormente, un usuario instala el paquete correspondiente.Empaquetado del componente
El contenido de tu directorio de código
- 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
Crea un archivo comprimido de este directorio o descargar directamente el archivo e instálalo con el gestor de extensiones de Joomla. Puedes agregar un elemento de menú de este componente usando el gestor de menús en el lado del servidor.
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>
En el archivo helloworld.xml anterior los archivos de idiomas son instalados en:
- administrador/language para la parte de la administración (ver las etiquetas xml languages).
- componentes/com_helloworld/language para la parte del sitio (no hay etiqueta xml language en la parte de descripción del sitio del archivo xml, pero la carpeta de idioma está incluida).
Por favor, crea una petición o tema en https://github.com/joomla/Joomla-3.2-Hello-World-Component para cualquier discrepancia en el código o para la edición de cualquier parte del código fuente de esta página.