Hacer un Paquete de Idioma para Joomla!
From Joomla! Documentation
Cómo crear paquetes de idioma localizados del NÚCLEO
Notas
- TODOS LOS ARCHIVOS DEBEN SER GUARDADOS COMO UTF8 SIN BOM (para los glifos no-ascii como en letras acentuadas, etc.)
- El Localizar un componente puede ayudarte a crear y actualizar los archivos ini
- Para las extensiones de terceras partes auto-contenidas en los archivos ini de la instalación en Joomla 2.5, mira J2.5:Hacer paquetes de idioma que no son del núcleo
- Para paqueets de idioma del núcleo de Joomla! 2.5, mira J2.5:Hacer un Paquete de Idioma para Joomla!
- A partir de Joomla! 3.2.0, en-GB siempre se carga primero. Por lo tanto, si una cadena está presente, o si hay un error de análisis en un paquete de idioma, el texto en inglés será mostrado.
- El actual de desarrollo de Joomla! puede ser obtenido de la Inicio del Sistema de Gestión de contenidos Joomla! en Github
Paquetes de idioma completos
* fr-FR
se toma como un ejemplo de prefijo de idioma.
Un paquete de idioma completo debe contener traducciones tanto para la sección del sitio como la administración.
- En el caso de un paquete COMPLETO, el mismo se compone de 3 archivos, luego comprmidos (zip).
pkg_fr-FR.xml
site_fr-FR.zip
admin_fr-FR.zip
- Nombre del paquete
- fr-FR_joomla_lang_full_3.4.1v1.zip
- Archivos necesarios para la supresión parcial
- cada paquete debe incluir un
fr-FR.lib_joomla.ini
y un fr-FR.localise.php
para hacer frente para la eliminación del paquete del sitio o la administración por parte del usuario.
- IMPORTANTE: Ya que algunos administradores de archivos ini son necesarios en Lado Cliente y algunos cambios fueron introducidos en la carga del plugin de archivos ini, siempre es necesario incluir algún parte del administrados en el paquete final, incluso para un paquete qeu se sólo para el 'sitio'. Mira a continuación El paquete solo para el sitio
Un archivo pkg_fr-FR.xml
<?xml version="1.0" encoding="UTF-8"?>
<extension type="package" version="3.7" method="upgrade"> <!-- method="upgrade" is compulsory since 3.4 -->
<name>French language pack</name> <!-- name should be only ALPHA characters since 3.7 -->
<packagename>fr-FR</packagename> <!-- the packagename has to be the same as the name of pkg_whatever.xml -->
<version>3.7.0.1</version> <!-- change the version # 3.x.x.x when updating, will display in manager -->
<creationDate>03/02/2017</creationDate> <!-- will display in manager -->
<author>French translation team : joomla.fr</author> <!-- will display in manager -->
<authorEmail>traduction@joomla.fr</authorEmail> <!-- will display in manager -->
<authorUrl>http://joomla.fr</authorUrl> <!-- will display in manager -->
<copyright>Copyright (C) 2005 - 2017 Joomla.fr and Open Source Matters, Inc. All rights reserved.</copyright>
<license>http://www.gnu.org/licenses/gpl-2.0.html GNU/GPL</license>
<url></url>
<packager></packager>
<packagerurl></packagerurl>
<description><![CDATA[<div style="text-align:left;">
<h3>Joomla! 3.7.0 Full French (fr-FR) Language Package - Version 3.7.0v1</h3>
<h3>Paquet de langue Joomla! 3.7.0 français (fr-FR) complet - Version 3.7.0v1</h3>
</div>]]></description>
<blockChildUninstall>true</blockChildUninstall> <!-- New in 3.7.0: prevents uninstalling separately site or admin parts. -->
<files>
<file type="language" client="site" id="fr-FR">site_fr-FR.zip</file>
<file type="language" client="administrator" id="fr-FR">admin_fr-FR.zip</file>
</files>
<updateservers>
<server type="collection" priority="1" name="Accredited Joomla! Translations">
https://update.joomla.org/language/translationlist_3.xml
</server>
</updateservers>
</extension>
Nota: no son más necesarios archivos TinyMCE para 3.2. Ahora son enviados con el núcleo. Si falta tu idioma, pónte en contacto con la coordinación del Equipo de Traducción.
Un zip, por cliente (es decir, el sitio y la administración)
site_fr-FR.zip
admin_fr-FR.zip
Contenido del zip de cliente (el ejemplo siguiente es para el administrador)
un install.xml
Ejemplo para admin
<extension version="3.7" client="administrator" type="language" method="upgrade"> <!-- change to client="site" if site pack -->
<name>French (fr-FR)</name> <!-- New in 3.7.0: Use only latin ascii characters. -->
<tag>fr-FR</tag>
<version>3.7.0.1</version>
<creationDate>15/02/2017</creationDate>
<author>French translation team : joomla.fr</author>
<authorEmail>traduction@joomla.fr</authorEmail>
<authorUrl>www.joomla.fr</authorUrl>
<copyright>Copyright (C) 2005 - 2017 joomla.fr et Open Source Matters. Tous droits réservés</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<description>fr-FR administrator language</description>
<files>
<filename>fr-FR.com_admin.ini</filename>
<filename>fr-FR.com_admin.sys.ini</filename>
<filename>fr-FR.com_ajax.ini</filename>
<filename>fr-FR.com_ajax.sys.ini</filename>
<filename>fr-FR.com_associations.ini</filename>
<filename>fr-FR.com_associations.sys.ini</filename>
<filename>fr-FR.com_banners.ini</filename>
<filename>fr-FR.com_banners.sys.ini</filename>
<filename>fr-FR.com_cache.ini</filename>
<filename>fr-FR.com_cache.sys.ini</filename>
<filename>fr-FR.com_categories.ini</filename>
<filename>fr-FR.com_categories.sys.ini</filename>
<filename>fr-FR.com_checkin.ini</filename>
<filename>fr-FR.com_checkin.sys.ini</filename>
<filename>fr-FR.com_config.ini</filename>
<filename>fr-FR.com_config.sys.ini</filename>
<filename>fr-FR.com_contact.ini</filename>
<filename>fr-FR.com_contact.sys.ini</filename>
<filename>fr-FR.com_content.ini</filename>
<filename>fr-FR.com_content.sys.ini</filename>
<filename>fr-FR.com_contenthistory.ini</filename>
<filename>fr-FR.com_contenthistory.sys.ini</filename>
<filename>fr-FR.com_cpanel.ini</filename>
<filename>fr-FR.com_cpanel.sys.ini</filename>
<filename>fr-FR.com_fields.ini</filename>
<filename>fr-FR.com_fields.sys.ini</filename>
<filename>fr-FR.com_finder.ini</filename>
<filename>fr-FR.com_finder.sys.ini</filename>
<filename>fr-FR.com_installer.ini</filename>
<filename>fr-FR.com_installer.sys.ini</filename>
<filename>fr-FR.com_joomlaupdate.ini</filename>
<filename>fr-FR.com_joomlaupdate.sys.ini</filename>
<filename>fr-FR.com_languages.ini</filename>
<filename>fr-FR.com_languages.sys.ini</filename>
<filename>fr-FR.com_login.ini</filename>
<filename>fr-FR.com_login.sys.ini</filename>
<filename>fr-FR.com_mailto.sys.ini</filename>
<filename>fr-FR.com_media.ini</filename>
<filename>fr-FR.com_media.sys.ini</filename>
<filename>fr-FR.com_menus.ini</filename>
<filename>fr-FR.com_menus.sys.ini</filename>
<filename>fr-FR.com_messages.ini</filename>
<filename>fr-FR.com_messages.sys.ini</filename>
<filename>fr-FR.com_modules.ini</filename>
<filename>fr-FR.com_modules.sys.ini</filename>
<filename>fr-FR.com_newsfeeds.ini</filename>
<filename>fr-FR.com_newsfeeds.sys.ini</filename>
<filename>fr-FR.com_plugins.ini</filename>
<filename>fr-FR.com_plugins.sys.ini</filename>
<filename>fr-FR.com_postinstall.ini</filename>
<filename>fr-FR.com_postinstall.sys.ini</filename>
<filename>fr-FR.com_redirect.ini</filename>
<filename>fr-FR.com_redirect.sys.ini</filename>
<filename>fr-FR.com_search.ini</filename>
<filename>fr-FR.com_search.sys.ini</filename>
<filename>fr-FR.com_tags.ini</filename>
<filename>fr-FR.com_tags.sys.ini</filename>
<filename>fr-FR.com_templates.ini</filename>
<filename>fr-FR.com_templates.sys.ini</filename>
<filename>fr-FR.com_users.ini</filename>
<filename>fr-FR.com_users.sys.ini</filename>
<filename>fr-FR.com_weblinks.ini</filename>
<filename>fr-FR.com_weblinks.sys.ini</filename>
<filename>fr-FR.com_wrapper.ini</filename>
<filename>fr-FR.com_wrapper.sys.ini</filename>
<filename>fr-FR.css</filename> <!-- this file can be added in the ADMINISTRATOR pack if one wants to change the fonts used to display the back-end interface.-->
<filename>fr-FR.ini</filename>
<filename>fr-FR.lib_joomla.ini</filename>
<filename>fr-FR.localise.php</filename>
<filename>fr-FR.mod_custom.ini</filename>
<filename>fr-FR.mod_custom.sys.ini</filename>
<filename>fr-FR.mod_feed.ini</filename>
<filename>fr-FR.mod_feed.sys.ini</filename>
<filename>fr-FR.mod_latest.ini</filename>
<filename>fr-FR.mod_latest.sys.ini</filename>
<filename>fr-FR.mod_logged.ini</filename>
<filename>fr-FR.mod_logged.sys.ini</filename>
<filename>fr-FR.mod_login.ini</filename>
<filename>fr-FR.mod_login.sys.ini</filename>
<filename>fr-FR.mod_menu.ini</filename>
<filename>fr-FR.mod_menu.sys.ini</filename>
<filename>fr-FR.mod_multilangstatus.ini</filename>
<filename>fr-FR.mod_multilangstatus.sys.ini</filename>
<filename>fr-FR.mod_popular.ini</filename>
<filename>fr-FR.mod_popular.sys.ini</filename>
<filename>fr-FR.mod_quickicon.ini</filename>
<filename>fr-FR.mod_quickicon.sys.ini</filename>
<filename>fr-FR.mod_stats_admin.ini</filename>
<filename>fr-FR.mod_stats_admin.sys.ini</filename>
<filename>fr-FR.mod_status.ini</filename>
<filename>fr-FR.mod_status.sys.ini</filename>
<filename>fr-FR.mod_submenu.ini</filename>
<filename>fr-FR.mod_submenu.sys.ini</filename>
<filename>fr-FR.mod_title.ini</filename>
<filename>fr-FR.mod_title.sys.ini</filename>
<filename>fr-FR.mod_toolbar.ini</filename>
<filename>fr-FR.mod_toolbar.sys.ini</filename>
<filename>fr-FR.mod_version.ini</filename>
<filename>fr-FR.mod_version.sys.ini</filename>
<filename>fr-FR.plg_authentication_cookie.ini</filename>
<filename>fr-FR.plg_authentication_cookie.sys.ini</filename>
<filename>fr-FR.plg_authentication_gmail.ini</filename>
<filename>fr-FR.plg_authentication_gmail.sys.ini</filename>
<filename>fr-FR.plg_authentication_joomla.ini</filename>
<filename>fr-FR.plg_authentication_joomla.sys.ini</filename>
<filename>fr-FR.plg_authentication_ldap.ini</filename>
<filename>fr-FR.plg_authentication_ldap.sys.ini</filename>
<filename>fr-FR.plg_captcha_recaptcha.ini</filename>
<filename>fr-FR.plg_captcha_recaptcha.sys.ini</filename>
<filename>fr-FR.plg_content_contact.ini</filename>
<filename>fr-FR.plg_content_contact.sys.ini</filename>
<filename>fr-FR.plg_content_emailcloak.ini</filename>
<filename>fr-FR.plg_content_emailcloak.sys.ini</filename>
<filename>fr-FR.plg_content_fields.ini</filename>
<filename>fr-FR.plg_content_fields.sys.ini</filename>
<filename>fr-FR.plg_content_finder.ini</filename>
<filename>fr-FR.plg_content_finder.sys.ini</filename>
<filename>fr-FR.plg_content_joomla.ini</filename>
<filename>fr-FR.plg_content_joomla.sys.ini</filename>
<filename>fr-FR.plg_content_loadmodule.ini</filename>
<filename>fr-FR.plg_content_loadmodule.sys.ini</filename>
<filename>fr-FR.plg_content_pagebreak.ini</filename>
<filename>fr-FR.plg_content_pagebreak.sys.ini</filename>
<filename>fr-FR.plg_content_pagenavigation.ini</filename>
<filename>fr-FR.plg_content_pagenavigation.sys.ini</filename>
<filename>fr-FR.plg_content_vote.ini</filename>
<filename>fr-FR.plg_content_vote.sys.ini</filename>
<filename>fr-FR.plg_editors-xtd_article.ini</filename>
<filename>fr-FR.plg_editors-xtd_article.sys.ini</filename>
<filename>fr-FR.plg_editors-xtd_contact.ini</filename>
<filename>fr-FR.plg_editors-xtd_contact.sys.ini</filename>
<filename>fr-FR.plg_editors-xtd_fields.ini</filename>
<filename>fr-FR.plg_editors-xtd_fields.sys.ini</filename>
<filename>fr-FR.plg_editors-xtd_image.ini</filename>
<filename>fr-FR.plg_editors-xtd_image.sys.ini</filename>
<filename>fr-FR.plg_editors-xtd_menu.ini</filename>
<filename>fr-FR.plg_editors-xtd_menu.sys.ini</filename>
<filename>fr-FR.plg_editors-xtd_module.ini</filename>
<filename>fr-FR.plg_editors-xtd_module.sys.ini</filename>
<filename>fr-FR.plg_editors-xtd_pagebreak.ini</filename>
<filename>fr-FR.plg_editors-xtd_pagebreak.sys.ini</filename>
<filename>fr-FR.plg_editors-xtd_readmore.ini</filename>
<filename>fr-FR.plg_editors-xtd_readmore.sys.ini</filename>
<filename>fr-FR.plg_editors_codemirror.ini</filename>
<filename>fr-FR.plg_editors_codemirror.sys.ini</filename>
<filename>fr-FR.plg_editors_none.ini</filename>
<filename>fr-FR.plg_editors_none.sys.ini</filename>
<filename>fr-FR.plg_editors_tinymce.ini</filename>
<filename>fr-FR.plg_editors_tinymce.sys.ini</filename>
<filename>fr-FR.plg_extension_joomla.ini</filename>
<filename>fr-FR.plg_extension_joomla.sys.ini</filename>
<filename>fr-FR.plg_fields_calendar.ini</filename>
<filename>fr-FR.plg_fields_calendar.sys.ini</filename>
<filename>fr-FR.plg_fields_checkboxes.ini</filename>
<filename>fr-FR.plg_fields_checkboxes.sys.ini</filename>
<filename>fr-FR.plg_fields_color.ini</filename>
<filename>fr-FR.plg_fields_color.sys.ini</filename>
<filename>fr-FR.plg_fields_editor.ini</filename>
<filename>fr-FR.plg_fields_editor.sys.ini</filename>
<filename>fr-FR.plg_fields_gallery.ini</filename>
<filename>fr-FR.plg_fields_gallery.sys.ini</filename>
<filename>fr-FR.plg_fields_image.ini</filename>
<filename>fr-FR.plg_fields_image.sys.ini</filename>
<filename>fr-FR.plg_fields_imagelist.ini</filename>
<filename>fr-FR.plg_fields_imagelist.sys.ini</filename>
<filename>fr-FR.plg_fields_integer.ini</filename>
<filename>fr-FR.plg_fields_integer.sys.ini</filename>
<filename>fr-FR.plg_fields_list.ini</filename>
<filename>fr-FR.plg_fields_list.sys.ini</filename>
<filename>fr-FR.plg_fields_media.ini</filename>
<filename>fr-FR.plg_fields_media.sys.ini</filename>
<filename>fr-FR.plg_fields_radio.ini</filename>
<filename>fr-FR.plg_fields_radio.sys.ini</filename>
<filename>fr-FR.plg_fields_sql.ini</filename>
<filename>fr-FR.plg_fields_sql.sys.ini</filename>
<filename>fr-FR.plg_fields_text.ini</filename>
<filename>fr-FR.plg_fields_text.sys.ini</filename>
<filename>fr-FR.plg_fields_textarea.ini</filename>
<filename>fr-FR.plg_fields_textarea.sys.ini</filename>
<filename>fr-FR.plg_fields_url.ini</filename>
<filename>fr-FR.plg_fields_url.sys.ini</filename>
<filename>fr-FR.plg_fields_user.ini</filename>
<filename>fr-FR.plg_fields_user.sys.ini</filename>
<filename>fr-FR.plg_fields_usergrouplist.ini</filename>
<filename>fr-FR.plg_fields_usergrouplist.sys.ini</filename>
<filename>fr-FR.plg_finder_categories.ini</filename>
<filename>fr-FR.plg_finder_categories.sys.ini</filename>
<filename>fr-FR.plg_finder_contacts.ini</filename>
<filename>fr-FR.plg_finder_contacts.sys.ini</filename>
<filename>fr-FR.plg_finder_content.ini</filename>
<filename>fr-FR.plg_finder_content.sys.ini</filename>
<filename>fr-FR.plg_finder_newsfeeds.ini</filename>
<filename>fr-FR.plg_finder_newsfeeds.sys.ini</filename>
<filename>fr-FR.plg_finder_tags.ini</filename>
<filename>fr-FR.plg_finder_tags.sys.ini</filename>
<filename>fr-FR.plg_finder_weblinks.ini</filename>
<filename>fr-FR.plg_finder_weblinks.sys.ini</filename>
<filename>fr-FR.plg_installer_folderinstaller.ini</filename>
<filename>fr-FR.plg_installer_folderinstaller.sys.ini</filename>
<filename>fr-FR.plg_installer_packageinstaller.ini</filename>
<filename>fr-FR.plg_installer_packageinstaller.sys.ini</filename>
<filename>fr-FR.plg_installer_urlinstaller.ini</filename>
<filename>fr-FR.plg_installer_urlinstaller.sys.ini</filename>
<filename>fr-FR.plg_installer_webinstaller.ini</filename>
<filename>fr-FR.plg_installer_webinstaller.sys.ini</filename>
<filename>fr-FR.plg_quickicon_extensionupdate.ini</filename>
<filename>fr-FR.plg_quickicon_extensionupdate.sys.ini</filename>
<filename>fr-FR.plg_quickicon_joomlaupdate.ini</filename>
<filename>fr-FR.plg_quickicon_joomlaupdate.sys.ini</filename>
<filename>fr-FR.plg_quickicon_phpversioncheck.ini</filename>
<filename>fr-FR.plg_quickicon_phpversioncheck.sys.ini</filename>
<filename>fr-FR.plg_search_categories.ini</filename>
<filename>fr-FR.plg_search_categories.sys.ini</filename>
<filename>fr-FR.plg_search_contacts.ini</filename>
<filename>fr-FR.plg_search_contacts.sys.ini</filename>
<filename>fr-FR.plg_search_content.ini</filename>
<filename>fr-FR.plg_search_content.sys.ini</filename>
<filename>fr-FR.plg_search_newsfeeds.ini</filename>
<filename>fr-FR.plg_search_newsfeeds.sys.ini</filename>
<filename>fr-FR.plg_search_tags.ini</filename>
<filename>fr-FR.plg_search_tags.sys.ini</filename>
<filename>fr-FR.plg_search_weblinks.ini</filename>
<filename>fr-FR.plg_search_weblinks.sys.ini</filename>
<filename>fr-FR.plg_system_cache.ini</filename>
<filename>fr-FR.plg_system_cache.sys.ini</filename>
<filename>fr-FR.plg_system_debug.ini</filename>
<filename>fr-FR.plg_system_debug.sys.ini</filename>
<filename>fr-FR.plg_system_fields.ini</filename>
<filename>fr-FR.plg_system_fields.sys.ini</filename>
<filename>fr-FR.plg_system_highlight.ini</filename>
<filename>fr-FR.plg_system_highlight.sys.ini</filename>
<filename>fr-FR.plg_system_languagecode.ini</filename>
<filename>fr-FR.plg_system_languagecode.sys.ini</filename>
<filename>fr-FR.plg_system_languagefilter.ini</filename>
<filename>fr-FR.plg_system_languagefilter.sys.ini</filename>
<filename>fr-FR.plg_system_log.ini</filename>
<filename>fr-FR.plg_system_log.sys.ini</filename>
<filename>fr-FR.plg_system_logout.ini</filename>
<filename>fr-FR.plg_system_logout.sys.ini</filename>
<filename>fr-FR.plg_system_p3p.ini</filename>
<filename>fr-FR.plg_system_p3p.sys.ini</filename>
<filename>fr-FR.plg_system_redirect.ini</filename>
<filename>fr-FR.plg_system_redirect.sys.ini</filename>
<filename>fr-FR.plg_system_remember.ini</filename>
<filename>fr-FR.plg_system_remember.sys.ini</filename>
<filename>fr-FR.plg_system_sef.ini</filename>
<filename>fr-FR.plg_system_sef.sys.ini</filename>
<filename>fr-FR.plg_system_stats.ini</filename>
<filename>fr-FR.plg_system_stats.sys.ini</filename>
<filename>fr-FR.plg_system_updatenotification.ini</filename>
<filename>fr-FR.plg_system_updatenotification.sys.ini</filename>
<filename>fr-FR.plg_twofactorauth_totp.ini</filename>
<filename>fr-FR.plg_twofactorauth_totp.sys.ini</filename>
<filename>fr-FR.plg_twofactorauth_yubikey.ini</filename>
<filename>fr-FR.plg_twofactorauth_yubikey.sys.ini</filename>
<filename>fr-FR.plg_user_contactcreator.ini</filename>
<filename>fr-FR.plg_user_contactcreator.sys.ini</filename>
<filename>fr-FR.plg_user_joomla.ini</filename>
<filename>fr-FR.plg_user_joomla.sys.ini</filename>
<filename>fr-FR.plg_user_profile.ini</filename>
<filename>fr-FR.plg_user_profile.sys.ini</filename>
<filename>fr-FR.tpl_hathor.ini</filename>
<filename>fr-FR.tpl_hathor.sys.ini</filename>
<filename>fr-FR.tpl_isis.ini</filename>
<filename>fr-FR.tpl_isis.sys.ini</filename>
<filename file="meta">install.xml</filename> <!-- This file is mandatory as otherwise the pack can't be uninstalled. -->
<filename file="meta">fr-FR.xml</filename>
</files>
<media destination="fr-FR"> <!-- If one needs to add a specific calendar -->
<filename>index.html</filename>
<filename>js/index.html</filename>
<filename>js/calendar-setup.js</filename>
<filename>js/calendar.js</filename>
</media>
<params />
</extension>
Notas:
fr-FR.lib_joomla.ini
: Añadir tanto admin y sitio. Al menos en sitio si es "paquete solo para el sitio", ver más abajo
fr-FR.css
: NUEVO EN 1.7: este archivo puede ser agregado en el paquete del ADMINISTRADOR si uno quiere cambiar las fuentes utilizadas para mostrar la interfaz del Lado Servidor.
fr-FR.xml
: Ten en cuenta la etiqueta fie="meta", diciendo que es el xml básico conteniendo información sobre el paquete.
install.xml
: Obligatorio! Este archivo permite instalar/desinstalar un idioma. Ten en cuenta file="meta"
fr-FR.localise.php
en : Añadir tanto al admin y al sitio. Al menos en sitio si es "paquete solo para el sitio", ver más abajo
- Carpeta media
destination="fr-FR"
: Si uno necesita agregar un calendario específico
Todos los archivos ini
Cuidado con el nuevo formato!
- Las comillas dobles en el valor debe ser escrito como "_QQ_" o como "
el fr-FR.xml
<?xml version="1.0" encoding="utf-8"?>
<metafile version="3.7" client="administrator">
<tag>fr-FR</tag>
<name>French (fr-FR)</name>
<version>3.7.0.1</version>
<creationDate>02/02/2017</creationDate>
<author>French translation team : joomla.fr</author>
<authorEmail>traduction@joomla.fr</authorEmail>
<authorUrl>www.joomla.fr</authorUrl>
<copyright>Copyright (C) 2005 - 2017 Open Source Matters & Joomla.fr. All rights reserved.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<description>French administrator language for Joomla 3.0</description>
<metadata>
<name>Français (FR)</name>
<nativeName>Français (France)</nativeName> <!-- NEW in 3.7.0. Use the native alphabet here.-->
<tag>fr-FR</tag>
<rtl>0</rtl>
<locale>fr_FR.utf8, fr_FR.UTF-8, fr_FR.UTF-8@euro, fr_FR, fre_FR, fr, france</locale>
<firstDay>1</firstDay>
<weekEnd>0,6</weekEnd>
<calendar>gregorian</calendar> <!-- NEW in 3.7.0. gregorian and jalali are proposed. If absent, gregorian will be used as default. Do NOT translate-->
</metadata>
<params />
</metafile>
Notas:
- <locale> se utiliza para ordenar las listas traducidas cuando están presentes en el servidor.
- <firstDay>1</firstDay> se utiliza para el icono de Calendario, para especificar cual es el primer día de la semana en ese idioma. 0 es domingo, 1 es lunes, etc.
- <weekEnd>0,6</weekEnd> se utiliza para el Calendario, define los días de la semana a ser de color gris. 0,6 es el sábado y el domingo, 1 sería el viernes.
el fr-FR.localise.php
Este archivo debe estar presente al menos en el zip del sitio
Explicación de este archivo: reemplaza el fr-FR.ignore.php
y puede ser personalizado en función de los idiomas.
- Ignorar las palabras de búsqueda.
- Define el límite superior e inferior de la longitud de las palabras de búsqueda.
- Define el número de caracteres a mostrar en el resultado de la búsqueda.
- Define funcionalidades específicas del plural para algunos idiomas, donde el valor de la cadena puede cambiar dependiendo de la cuenta (el ruso, por ejemplo).
- Define la transliteración (es decir, cuando NO se utiliza el parámetro URL Unicode, en la Configuración Global) para asegurar el correcta cambio de algunos alfabetos a ascii del alias utilizado cuando SEF esta habilitado. (La transcripción predeterminada ahora en 1.7 debe tener en cuenta todos los lenguajes de base latina.)
- Define un calendario personalizado mediante la adición de una función, así como algunos archivos js
SIEMPRE GUARDE ESTE ARCHIVO COMO UTF-8 SIN BOM si contiene glifos no-ascii (letras acentuadas, etc.)
Ejemplo 1 - Transliteración personalizada NO implementada
Ejemplo de un fr-FR.localise.php
básico (donde la transcripción personalizada, NO está implementada)
<?php
/**
* @version $Id: fr-FR.localise.php 15628 2010-03-27 05:20:29Z infograf768 $
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
/**
* fr-FR localise class
*
* @package Joomla.Site
* @since 1.6
*/
abstract class Fr_FRLocalise { //// !!!! NOTE the use of Fr_FR for the class !!! // not the same as your language prefix.
/**
* Returns the potential suffixes for a specific number of items
*
* @param int $count The number of items.
* @return array An array of potential suffixes.
* @since 1.6
*/
public static function getPluralSuffixes($count) {
if ($count == 0) {
$return = array('0');
}
elseif($count == 1) {
$return = array('1');
}
else {
$return = array('MORE'); // Beware, this will be added to a language KEY. It should be in ascii and Uppercase.
}
return $return;
}
/**
* Returns the ignored search words
*
* @return array An array of ignored search words.
* @since 1.6
*/
public static function getIgnoredSearchWords() {
$search_ignore = array();
$search_ignore[] = "et";
$search_ignore[] = "si";
$search_ignore[] = "ou";
return $search_ignore;
}
/**
* Returns the lower length limit of search words
*
* @return integer The lower length limit of search words.
* @since 1.6
*/
public static function getLowerLimitSearchWord() {
return 3;
}
/**
* Returns the upper length limit of search words
*
* @return integer The upper length limit of search words.
* @since 1.6
*/
public static function getUpperLimitSearchWord() {
return 20;
}
/**
* Returns the number of chars to display when searching
*
* @return integer The number of chars to display when searching.
* @since 1.6
*/
public static function getSearchDisplayedCharactersNumber() {
return 200;
}
}
Ejemplo 2 - Transliteración personalizada implementada
Ejemplo de la función para agregar un archivo localise.php
cuando la transliteración personalizada es deseada
/**
* This method processes a string and replaces all accented UTF-8 characters by unaccented
* ASCII-7 "equivalents"
*
* @param string $string The string to transliterate
* @return string The transliteration of the string
* @since 1.6
*/
public static function transliterate($string)
{
$str = \Joomla\String\StringHelper::strtolower($string); // since 3.8.0 to prepare 4.0
//Specific language transliteration.
//This one is for latin 1, latin supplement , extended A, Cyrillic, Greek
$glyph_array = array(
'a' => 'a,à,á,â,ã,ä,å,ā,ă,ą,ḁ,α,ά',
'ae' => 'æ',
'b' => 'β,б',
'c' => 'c,ç,ć,ĉ,ċ,č,ћ,ц',
'ch' => 'ч',
'd' => 'ď,đ,Ð,д,ђ,δ,ð',
'dz' => 'џ',
'e' => 'e,è,é,ê,ë,ē,ĕ,ė,ę,ě,э,ε,έ',
'f' => 'ƒ,ф',
'g' => 'ğ,ĝ,ğ,ġ,ģ,г,γ',
'h' => 'ĥ,ħ,Ħ,х',
'i' => 'i,ì,í,î,ï,ı,ĩ,ī,ĭ,į,и,й,ъ,ы,ь,η,ή',
'ij' => 'ij',
'j' => 'ĵ,j',
'ja' => 'я',
'ju' => 'яю',
'k' => 'ķ,ĸ,κ',
'l' => 'ĺ,ļ,ľ,ŀ,ł,л,λ',
'lj' => 'љ',
'm' => 'μ,м',
'n' => 'ñ,ņ,ň,ʼn,ŋ,н,ν',
'nj' => 'њ',
'o' => 'ò,ó,ô,õ,ø,ō,ŏ,ő,ο,ό,ω,ώ',
'oe' => 'œ,ö',
'p' => 'п,π',
'ph' => 'φ',
'ps' => 'ψ',
'r' => 'ŕ,ŗ,ř,р,ρ,σ,ς',
's' => 'ş,ś,ŝ,ş,š,с',
'ss' => 'ß,ſ',
'sh' => 'ш',
'shch' => 'щ',
't' => 'ţ,ť,ŧ,τ,т',
'th' => 'θ',
'u' => 'u,ù,ú,û,ü,ũ,ū,ŭ,ů,ű,ų,у',
'v' => 'в',
'w' => 'ŵ',
'x' => 'χ,ξ',
'y' => 'ý,þ,ÿ,ŷ',
'z' => 'ź,ż,ž,з,ж,ζ'
);
foreach( $glyph_array as $letter => $glyphs ) {
$glyphs = explode( ',', $glyphs );
$str = str_replace( $glyphs, $letter, $str );
}
return $str;
}
}
Ejemplo 3 - Calendario personalizado implementado
Aquí hay un ejemplo de una función para agregar en el archivo localise.php
, con el fin de implementar un calendario personalizado para fa-IR (idioma farsi)
<?php
/**
* @version $Id: language.php 15628 2010-03-27 05:20:29Z infograf768 $
* @copyright Copyright (C) 2005 - 2017 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
jimport('joomla.utilities.date');
abstract class Fa_IRLocalise {
public static function getPluralSuffixes($count) {
if ($count == 0)
{
$return = array('0');
}
elseif($count == 1)
{
$return = array('1');
}
else
{
$return = array('MORE');
}
return $return;
}
public static function getIgnoredSearchWords() {
$search_ignore = array();
$search_ignore[] = "and"; //change here to fit
$search_ignore[] = "in"; //change here to fit
$search_ignore[] = "on"; //change here to fit
return $search_ignore;
}
public static function getLowerLimitSearchWord() {
return 3;
}
public static function getUpperLimitSearchWord() {
return 20;
}
public static function getSearchDisplayedCharactersNumber() {
return 200;
}
}
class fa_IRDate extends JDate {
const DAY_NUMBER = "\x027\x03";
const DAY_NUMBER2 = "\x030\x03";
const DAY_YEAR = "\x032\x03";
const MONTH_ABBR = "\x033\x03";
const MONTH_NAME = "\x034\x03";
const MONTH_NUMBER = "\x035\x03";
const MONTH_NUMBER2 = "\x036\x03";
const MONTH_LENGTH = "\x037\x03";
const YEAR_ABBR = "\x040\x03";
const YEAR_NAME = "\x041\x03";
const AM_LOWER = "\x042\x03";
const AM_UPPER = "\x043\x03";
const PERSIAN_EPOCH = 1948320.5;
protected static $month_names = array("فروردين","ارديبهشت","خرداد","تیر","مرداد","شهریور","مهر","آبان","آذر","دی","بهمن","اسفند");
public function calendar($format, $local = false, $translate = true)
{
// Do string replacements for date format options that can be translated.
$format = preg_replace('/(^|[^\\\])d/', "\\1".self::DAY_NUMBER2, $format);
$format = preg_replace('/(^|[^\\\])j/', "\\1".self::DAY_NUMBER, $format);
$format = preg_replace('/(^|[^\\\])z/', "\\1".self::DAY_YEAR, $format);
$format = preg_replace('/(^|[^\\\])M/', "\\1".self::MONTH_ABBR, $format);
$format = preg_replace('/(^|[^\\\])F/', "\\1".self::MONTH_NAME, $format);
$format = preg_replace('/(^|[^\\\])n/', "\\1".self::MONTH_NUMBER, $format);
$format = preg_replace('/(^|[^\\\])m/', "\\1".self::MONTH_NUMBER2, $format);
$format = preg_replace('/(^|[^\\\])t/', "\\1".self::MONTH_LENGTH, $format);
$format = preg_replace('/(^|[^\\\])y/', "\\1".self::YEAR_ABBR, $format);
$format = preg_replace('/(^|[^\\\])Y/', "\\1".self::YEAR_NAME, $format);
$format = preg_replace('/(^|[^\\\])a/', "\\1".self::AM_LOWER, $format);
$format = preg_replace('/(^|[^\\\])A/', "\\1".self::AM_UPPER, $format);
// Format the date.
$return = parent::calendar($format, $local);
$jd = gregoriantojd($this->month, $this->day, $this->year);
$jalaliDate = self::jd_to_persian($jd);
$m = $jalaliDate['mon'];
$d = $jalaliDate['day'];
$y = $jalaliDate['year'];
// Manually modify the strings in the formated time.
if (strpos($return, self::DAY_NUMBER) !== false) {
$return = str_replace(self::DAY_NUMBER, $d , $return);
}
if (strpos($return, self::DAY_NUMBER2) !== false) {
$return = str_replace(self::DAY_NUMBER2, sprintf("%02d",$d), $return);
}
if (strpos($return, self::DAY_YEAR) !== false) {
$return = str_replace(self::DAY_YEAR, $jd - self::persian_to_jd(1,1,$y)+1, $return);
}
if (strpos($return, self::MONTH_ABBR) !== false) {
$return = str_replace(self::MONTH_ABBR, self::$month_names[$m-1] , $return);
}
if (strpos($return, self::MONTH_NAME) !== false) {
$return = str_replace(self::MONTH_NAME, self::$month_names[$m-1] , $return);
}
if (strpos($return, self::MONTH_NUMBER) !== false) {
$return = str_replace(self::MONTH_NUMBER, $m , $return);
}
if (strpos($return, self::MONTH_NUMBER2) !== false) {
$return = str_replace(self::MONTH_NUMBER2, sprintf("%02d", $m) , $return);
}
if (strpos($return, self::MONTH_LENGTH) !== false) {
$return = str_replace(self::MONTH_LENGTH, $m < 7 ? 31 : $m < 12 ? 30 : self::leap_persian($y) ? 30 : 29 , $return);
}
if (strpos($return, self::YEAR_ABBR) !== false) {
$return = str_replace(self::YEAR_ABBR, sprintf("%02d",$y % 100), $return);
}
if (strpos($return, self::YEAR_NAME) !== false) {
$return = str_replace(self::YEAR_NAME, $y, $return);
}
if (strpos($return, self::AM_LOWER) !== false) {
$return = str_replace(self::AM_LOWER, $this->format('a',$local)=='pm' ? 'ب ظ' : 'ق ظ', $return);
}
if (strpos($return, self::AM_UPPER) !== false) {
$return = str_replace(self::AM_UPPER, $this->format('a',$local)=='pm' ? 'ب ظ' : 'ق ظ', $return);
}
return $return;
}
public static function jd_to_persian($jd)
{
//var $year, $month, $day, $depoch, $cycle, $cyear, $ycycle,
// $aux1, $aux2, $yday;
$jd = floor($jd) + 0.5;
$depoch = $jd - self::persian_to_jd(1, 1, 475);
$cycle = floor($depoch / 1029983);
$cyear = $depoch % 1029983;
if ($cyear == 1029982) {
$ycycle = 2820;
} else {
$aux1 = floor($cyear / 366);
$aux2 = $cyear % 366;
$ycycle = floor(((2134 * $aux1) + (2816 * $aux2) + 2815) / 1028522) +
$aux1 + 1;
}
$year = $ycycle + (2820 * $cycle) + 474;
if ($year <= 0) {
$year--;
}
$yday = ($jd - self::persian_to_jd(1, 1, $year)) + 1;
$month = ($yday <= 186) ? ceil($yday / 31) : ceil(($yday - 6) / 30);
$day = ($jd - self::persian_to_jd($month, 1, $year)) + 1;
return array('year'=>$year, 'mon'=>$month,'day'=> $day);
}
public static function persian_to_jd($month, $day, $year)
{
//var $epbase, $epyear;
$epbase = $year - (($year >= 0) ? 474 : 473);
$epyear = 474 + $epbase % 2820;
return $day +
(($month <= 7) ?
(($month - 1) * 31) :
((($month - 1) * 30) + 6)
) +
floor((($epyear * 682) - 110) / 2816) +
($epyear - 1) * 365 +
floor($epbase / 2820) * 1029983 +
self::PERSIAN_EPOCH;
}
public static function leap_persian($year) {
return (((((($year - (($year > 0) ? 474 : 473)) % 2820) + 474) + 38) * 682) % 2816) < 682;
}
}
Nota: también se tiene que añadir los archivos calendar.js
necesarios en el paquete.
El paquete solo para el sitio
En cuanto a aquellos de ustedes que proporcionan paquetes sólo para el sitio:"'
Es decir: HAY QUE PROPORCIONAR UN PAQUETE DEL ADMIN CON TODOS LOS ARCHIVOS, algunos de ellos deben ser traducidos y enviar un paquete único como un verdadero paquete "completo" (véase más arriba).
¿Por qué? ==> debido a que algunos archivos ini de plugins se utilizan en el front-end! Este es un install.xml
típico del administrador con este caso. Ejemplo para 3.3.x, los archivos a traducir indicados con =======> :
<?xml version="1.0" encoding="utf-8"?>
<extension version="3.3" client="administrator" type="language" method="upgrade">
<name>MyLanguage (xx-XX)</name>
<tag>xx-XX</tag>
<version>3.3.3.1</version>
<creationDate>July 2014</creationDate>
<author>MyLanguage translation team : xx-XX Team/author</author>
<authorEmail>traduction@mysite.com</authorEmail>
<authorUrl>http://mysite.com</authorUrl>
<copyright>Copyright (C) 2005 - 2014 Open Source Matters. All rights reserved.</copyright>
<copyright>Copyright (C) date_year - date_year My Team or name. All rights reserved.</copyright>
<license>GNU General Public License version 2 or later; see LICENSE.txt</license>
<description>xx-XX administrator language for 3.3.x</description>
<files>
<filename>xx-XX.com_admin.ini</filename>
<filename>xx-XX.com_admin.sys.ini</filename>
<filename>xx-XX.com_banners.ini</filename>
<filename>xx-XX.com_banners.sys.ini</filename>
<filename>xx-XX.com_ajax.ini</filename>
<filename>xx-XX.com_ajax.sys.ini</filename>
<filename>xx-XX.com_cache.ini</filename>
<filename>xx-XX.com_cache.sys.ini</filename>
<filename>xx-XX.com_categories.ini</filename>
<filename>xx-XX.com_categories.sys.ini</filename>
<filename>xx-XX.com_checkin.ini</filename>
<filename>xx-XX.com_checkin.sys.ini</filename>
<filename>xx-XX.com_config.ini</filename>
<filename>xx-XX.com_config.sys.ini</filename>
<filename>xx-XX.com_contact.ini</filename>
<filename>xx-XX.com_contact.sys.ini</filename>
<filename>xx-XX.com_content.ini</filename>
<filename>xx-XX.com_content.sys.ini</filename>
<filename>xx-XX.com_contenthistory.ini</filename>
<filename>xx-XX.com_contenthistory.sys.ini</filename>
<filename>xx-XX.com_cpanel.ini</filename>
<filename>xx-XX.com_cpanel.sys.ini</filename>
<filename>xx-XX.com_finder.ini</filename>
<filename>xx-XX.com_finder.sys.ini</filename>
<filename>xx-XX.com_installer.ini</filename>
<filename>xx-XX.com_installer.sys.ini</filename>
<filename>xx-XX.com_joomlaupdate.ini</filename>
<filename>xx-XX.com_joomlaupdate.sys.ini</filename>
<filename>xx-XX.com_languages.ini</filename>
<filename>xx-XX.com_languages.sys.ini</filename>
<filename>xx-XX.com_login.ini</filename>
<filename>xx-XX.com_login.sys.ini</filename>
<filename>xx-XX.com_mailto.sys.ini</filename>
<filename>xx-XX.com_media.ini</filename>
<filename>xx-XX.com_media.sys.ini</filename>
<filename>xx-XX.com_menus.ini</filename>
<filename>xx-XX.com_menus.sys.ini</filename>
<filename>xx-XX.com_messages.ini</filename>
<filename>xx-XX.com_messages.sys.ini</filename>
<filename>xx-XX.com_modules.ini</filename>
<filename>xx-XX.com_modules.sys.ini</filename>
<filename>xx-XX.com_newsfeeds.ini</filename>
<filename>xx-XX.com_newsfeeds.sys.ini</filename>
<filename>xx-XX.com_plugins.ini</filename>
<filename>xx-XX.com_plugins.sys.ini</filename>
<filename>xx-XX.com_postinstall.ini</filename>
<filename>xx-XX.com_postinstall.sys.ini</filename>
<filename>xx-XX.com_redirect.ini</filename>
<filename>xx-XX.com_redirect.sys.ini</filename>
<filename>xx-XX.com_search.ini</filename>
<filename>xx-XX.com_search.sys.ini</filename>
<filename>xx-XX.com_tags.ini</filename>
<filename>xx-XX.com_tags.sys.ini</filename>
<filename>xx-XX.com_templates.ini</filename>
<filename>xx-XX.com_templates.sys.ini</filename>
<filename>xx-XX.com_users.ini</filename>
<filename>xx-XX.com_users.sys.ini</filename>
<filename>xx-XX.com_weblinks.ini</filename>
<filename>xx-XX.com_weblinks.sys.ini</filename>
<filename>xx-XX.com_wrapper.ini</filename>
<filename>xx-XX.com_wrapper.sys.ini</filename>
<filename>xx-XX.ini</filename>
<filename>xx-XX.lib_joomla.ini</filename>
<filename>xx-XX.localise.php</filename>
<filename>xx-XX.mod_custom.ini</filename>
<filename>xx-XX.mod_custom.sys.ini</filename>
<filename>xx-XX.mod_feed.ini</filename>
<filename>xx-XX.mod_feed.sys.ini</filename>
<filename>xx-XX.mod_latest.ini</filename>
<filename>xx-XX.mod_latest.sys.ini</filename>
<filename>xx-XX.mod_logged.ini</filename>
<filename>xx-XX.mod_logged.sys.ini</filename>
<filename>xx-XX.mod_login.ini</filename>
<filename>xx-XX.mod_login.sys.ini</filename>
<filename>xx-XX.mod_menu.ini</filename>
<filename>xx-XX.mod_menu.sys.ini</filename>
<filename>xx-XX.mod_multilangstatus.ini</filename>
<filename>xx-XX.mod_multilangstatus.sys.ini</filename>
<filename>xx-XX.mod_popular.ini</filename>
<filename>xx-XX.mod_popular.sys.ini</filename>
<filename>xx-XX.mod_quickicon.ini</filename>
<filename>xx-XX.mod_quickicon.sys.ini</filename>
<filename>xx-XX.mod_stats_admin.ini</filename>
<filename>xx-XX.mod_stats_admin.sys.ini</filename>
<filename>xx-XX.mod_status.ini</filename>
<filename>xx-XX.mod_status.sys.ini</filename>
<filename>xx-XX.mod_submenu.ini</filename>
<filename>xx-XX.mod_submenu.sys.ini</filename>
<filename>xx-XX.mod_title.ini</filename>
<filename>xx-XX.mod_title.sys.ini</filename>
<filename>xx-XX.mod_toolbar.ini</filename>
<filename>xx-XX.mod_toolbar.sys.ini</filename>
<filename>xx-XX.mod_version.ini</filename>
<filename>xx-XX.mod_version.sys.ini</filename>
<filename>xx-XX.plg_authentication_cookie.ini</filename>
<filename>xx-XX.plg_authentication_cookie.sys.ini</filename>
<filename>xx-XX.plg_authentication_gmail.ini</filename>
<filename>xx-XX.plg_authentication_gmail.sys.ini</filename>
<filename>xx-XX.plg_authentication_joomla.ini</filename>
<filename>xx-XX.plg_authentication_joomla.sys.ini</filename>
<filename>xx-XX.plg_authentication_ldap.ini</filename>
<filename>xx-XX.plg_authentication_ldap.sys.ini</filename>
=========> <filename>xx-XX.plg_captcha_recaptcha.ini</filename>
<filename>xx-XX.plg_captcha_recaptcha.sys.ini</filename>
<filename>xx-XX.plg_content_emailcloak.ini</filename>
<filename>xx-XX.plg_content_contact.ini</filename>
<filename>xx-XX.plg_content_contact.sys.ini</filename>
<filename>xx-XX.plg_content_emailcloak.sys.ini</filename>
<filename>xx-XX.plg_content_finder.ini</filename>
<filename>xx-XX.plg_content_finder.sys.ini</filename>
<filename>xx-XX.plg_content_joomla.ini</filename>
<filename>xx-XX.plg_content_joomla.sys.ini</filename>
<filename>xx-XX.plg_content_loadmodule.ini</filename>
<filename>xx-XX.plg_content_loadmodule.sys.ini</filename>
=========> <filename>xx-XX.plg_content_pagebreak.ini</filename>
<filename>xx-XX.plg_content_pagebreak.sys.ini</filename>
<filename>xx-XX.plg_content_pagenavigation.ini</filename>
<filename>xx-XX.plg_content_pagenavigation.sys.ini</filename>
=========> <filename>xx-XX.plg_content_vote.ini</filename>
<filename>xx-XX.plg_content_vote.sys.ini</filename>
<filename>xx-XX.plg_editors_codemirror.ini</filename>
<filename>xx-XX.plg_editors_codemirror.sys.ini</filename>
<filename>xx-XX.plg_editors_none.ini</filename>
<filename>xx-XX.plg_editors_none.sys.ini</filename>
<filename>xx-XX.plg_editors_tinymce.ini</filename>
<filename>xx-XX.plg_editors_tinymce.sys.ini</filename>
=========> <filename>xx-XX.plg_editors-xtd_article.ini</filename>
<filename>xx-XX.plg_editors-xtd_article.sys.ini</filename>
=========> <filename>xx-XX.plg_editors-xtd_image.ini</filename>
<filename>xx-XX.plg_editors-xtd_image.sys.ini</filename>
=========> <filename>xx-XX.plg_editors-xtd_pagebreak.ini</filename>
<filename>xx-XX.plg_editors-xtd_pagebreak.sys.ini</filename>
=========> <filename>xx-XX.plg_editors-xtd_readmore.ini</filename>
<filename>xx-XX.plg_editors-xtd_readmore.sys.ini</filename>
<filename>xx-XX.plg_extension_joomla.ini</filename>
<filename>xx-XX.plg_extension_joomla.sys.ini</filename>
=========> <filename>xx-XX.plg_finder_categories.ini</filename>
<filename>xx-XX.plg_finder_categories.sys.ini</filename>
=========> <filename>xx-XX.plg_finder_contacts.ini</filename>
<filename>xx-XX.plg_finder_contacts.sys.ini</filename>
=========> <filename>xx-XX.plg_finder_content.ini</filename>
<filename>xx-XX.plg_finder_content.sys.ini</filename>
=========> <filename>xx-XX.plg_finder_newsfeeds.ini</filename>
<filename>xx-XX.plg_finder_newsfeeds.sys.ini</filename>
=========> <filename>xx-XX.plg_finder_tags.ini</filename>
<filename>xx-XX.plg_finder_tags.sys.ini</filename>
=========> <filename>xx-XX.plg_finder_weblinks.ini</filename>
<filename>xx-XX.plg_finder_weblinks.sys.ini</filename>
<filename>xx-XX.plg_installer_webinstaller.ini</filename>
<filename>xx-XX.plg_installer_webinstaller.sys.ini</filename>
<filename>xx-XX.plg_quickicon_extensionupdate.ini</filename>
<filename>xx-XX.plg_quickicon_extensionupdate.sys.ini</filename>
<filename>xx-XX.plg_quickicon_joomlaupdate.ini</filename>
<filename>xx-XX.plg_quickicon_joomlaupdate.sys.ini</filename>
=========> <filename>xx-XX.plg_search_categories.ini</filename>
<filename>xx-XX.plg_search_categories.sys.ini</filename>
=========> <filename>xx-XX.plg_search_contacts.ini</filename>
<filename>xx-XX.plg_search_contacts.sys.ini</filename>
=========> <filename>xx-XX.plg_search_content.ini</filename>
<filename>xx-XX.plg_search_content.sys.ini</filename>
=========> <filename>xx-XX.plg_search_newsfeeds.ini</filename>
<filename>xx-XX.plg_search_newsfeeds.sys.ini</filename>
=========> <filename>xx-XX.plg_search_tags.ini</filename>
<filename>xx-XX.plg_search_tags.sys.ini</filename>
=========> <filename>xx-XX.plg_search_weblinks.ini</filename>
<filename>xx-XX.plg_search_weblinks.sys.ini</filename>
<filename>xx-XX.plg_system_cache.ini</filename>
<filename>xx-XX.plg_system_cache.sys.ini</filename>
<filename>xx-XX.plg_system_debug.ini</filename>
<filename>xx-XX.plg_system_debug.sys.ini</filename>
<filename>xx-XX.plg_system_highlight.ini</filename>
<filename>xx-XX.plg_system_highlight.sys.ini</filename>
<filename>xx-XX.plg_system_languagecode.ini</filename>
<filename>xx-XX.plg_system_languagecode.sys.ini</filename>
<filename>xx-XX.plg_system_languagefilter.ini</filename>
<filename>xx-XX.plg_system_languagefilter.sys.ini</filename>
<filename>xx-XX.plg_system_log.ini</filename>
<filename>xx-XX.plg_system_log.sys.ini</filename>
<filename>xx-XX.plg_system_logout.ini</filename>
<filename>xx-XX.plg_system_logout.sys.ini</filename>
<filename>xx-XX.plg_system_p3p.ini</filename>
<filename>xx-XX.plg_system_p3p.sys.ini</filename>
<filename>xx-XX.plg_system_redirect.ini</filename>
<filename>xx-XX.plg_system_redirect.sys.ini</filename>
<filename>xx-XX.plg_system_remember.ini</filename>
<filename>xx-XX.plg_system_remember.sys.ini</filename>
<filename>xx-XX.plg_system_sef.ini</filename>
<filename>xx-XX.plg_system_sef.sys.ini</filename>
<filename>xx-XX.plg_twofactorauth_totp.ini</filename>
<filename>xx-XX.plg_twofactorauth_totp.sys.ini</filename>
<filename>xx-XX.plg_twofactorauth_yubikey.ini</filename>
<filename>xx-XX.plg_twofactorauth_yubikey.sys.ini</filename>
<filename>xx-XX.plg_user_contactcreator.ini</filename>
<filename>xx-XX.plg_user_contactcreator.sys.ini</filename>
<filename>xx-XX.plg_user_joomla.ini</filename>
<filename>xx-XX.plg_user_joomla.sys.ini</filename>
=========> <filename>xx-XX.plg_user_profile.ini</filename>
<filename>xx-XX.plg_user_profile.sys.ini</filename>
<filename>xx-XX.tpl_hathor.ini</filename>
<filename>xx-XX.tpl_hathor.sys.ini</filename>
<filename>xx-XX.tpl_isis.ini</filename>
<filename>xx-XX.tpl_isis.sys.ini</filename>
=========> <filename file="meta">install.xml</filename>
=========> <filename file="meta">xx-XX.xml</filename>
</files>
<params />
</extension>
Para los archivos sin traducir, sólo tienes que copiar el en-GB
deseado y cambiar el prefijo de idioma.
¿Qué no traducir?
No traducir estas líneas:
- archivo
fr-fr.ini
= las líneas de "JHELP_COMPONENTS_"
ejemplo:
JHELP_COMPONENTS_MESSAGING_INBOX="Components_Messaging_Inbox"
Se utilizan para la asignación de la ayuda. Cuando un wiki específico de ayuda para cada idioma está disponible, será funcional.
Preguntas Frecuentes
¿Por qué usamos archivos .ini en lugar de .po .mo?
Los archivos INI fueron elegidos en 2006 por varias razones:
- No hubo ninguna aplicación específica a tratar .po en todas las plataformas (Poedit no estaba disponible en Windows)
- Cualquier persona, incluso sin ningún tipo de conocimiento sobre código, podría crear/editar un archivo ini
- los archivos ini son legibles .po no lo son
- No puede cargar más de uno archivo .po por página.
pero no sólo, y por eso es mejor ir en:
el siguiente es un ejemplo recogido del código de Wordpress en un simple .archivo php (por CIERTO WP NO utilizar cualquiera de los plurales, como pude ver en sus archivos .po):
get_current_screen()->add_help_tab( array(
'id' => 'publish-box',
'title' => __('Publish Settings'),
'content' => $publish_box,
) );
$discussion_settings = '<p>' . __('<strong>Send Trackbacks</strong> - Trackbacks are a way to notify legacy blog systems that you’ve linked to them. Enter the URL(s) you want to send trackbacks. If you link to other WordPress sites they’ll be notified automatically using pingbacks, and this field is unnecessary.') . '</p>';
$discussion_settings .= '<p>' . __('<strong>Discussion</strong> - You can turn comments and pings on or off, and if there are comments on the post, you can see them here and moderate them.') . '</p>';
get_current_screen()->add_help_tab( array(
'id' => 'discussion-settings',
'title' => __('Discussion Settings'),
'content' => $discussion_settings,
) );
} elseif ( 'page' == $post_type ) {
$page_attributes = '<p>' . __('<strong>Parent</strong> - You can arrange your pages in hierarchies. For example, you could have an “About” page that has “Life Story” and “My Dog” pages under it. There are no limits to how many levels you can nest pages.') . '</p>' .
'<p>' . __('<strong>Template</strong> - Some themes have custom templates you can use for certain pages that might have additional features or custom layouts. If so, you’ll see them in this dropdown menu.') . '</p>' .
'<p>' . __('<strong>Order</strong> - Pages are usually ordered alphabetically, but you can choose your own order by entering a number (1 for first, etc.) in this field.') . '</p>';
get_current_screen()->add_help_tab( array(
'id' => 'page-attributes',
'title' => __('Page Attributes'),
'content' => $page_attributes,
) );
}
Esto para GetText:
__('<strong>Parent</strong> - You can arrange your pages in hierarchies. For example, you could have an “About” page that has “Life Story” and “My Dog” pages under it. There are no limits to how many levels you can nest pages.')
Es más sencillo con los archivos ini:
JText::_("SOME_CONSTANT")
El trabajo con los plurales
Algunos idiomas, como el ruso, NO tiene, los mismos plurales como el inglés. Ellos necesitan agregar cadenas para que se ajuste a sus definiciones. Joomla CMS ofrece una solución para eso y puede ser visto en el archivo localise.php agregado al paquete de idioma. Por ejemplo:
Sobre los plurales, este es el plural ruso:
public static function getPluralSuffixes($count)
{
if ($count == 0) {
$return = array('0');
} else {
$return = array(($count%10==1 && $count%100!=11 ? '1' : ($count%10>=2 && $count%10<=4 && ($count%100<10 || $count%100>=20) ? '2' : 'MORE')));
}
return $return;
}
Y este es el gaélico Escocés:
public static function getPluralSuffixes($count) {
if ($count == 0 || $count > 19) {
$return = array('0');
}
elseif($count == 1 || $count == 11) {
$return = array('1');
}
elseif($count == 2 || $count == 12) {
$return = array('2');
}
elseif(($count > 2 && $count < 12) || ($count > 12 && $count < 19)) {
$return = array('FEW');
}
return $return;
}
Compare ahora con en-GB:
public static function getPluralSuffixes($count) {
if ($count == 0) {
$return = array('0');
}
elseif($count == 1) {
$return = array('1');
}
else {
$return = array('MORE');
}
return $return;
}
Esto significa que cuando tenemos en en-GB:
COM_BANNERS_BANNERS_N_ITEMS_CHECKED_IN_0="No banner successfully checked in"
COM_BANNERS_BANNERS_N_ITEMS_CHECKED_IN_1="%d banner successfully checked in"
COM_BANNERS_BANNERS_N_ITEMS_CHECKED_IN_MORE="%d banners successfully checked in"
En ruso necesitan:
COM_BANNERS_BANNERS_N_ITEMS_CHECKED_IN_0="Ни один баннер не был разблокирован"
COM_BANNERS_BANNERS_N_ITEMS_CHECKED_IN_1="%d баннер успешно разблокирован"
COM_BANNERS_BANNERS_N_ITEMS_CHECKED_IN_2="%d баннера успешно разблокировано"
COM_BANNERS_BANNERS_N_ITEMS_CHECKED_IN_MORE="%d баннеров успешно разблокировано"
La norma ISO de códigos de nomenclatura para los paquetes de idiomas
El enlace oficial sobre los códigos de País es: https://www.iso.org/obp/ui/#search
Joomla! utiliza códigos de 2 letras:
CS era el código oficial de país de Tchecoslovakia ANTES de separarse en el República Checa (CZ) y Eslovaquia (SK)
Nuestras etiquetas Lang se componen de 2 partes:
- el código de idioma
- el código del país
Aquí está la lista oficial para el código de idioma: http://www.iso.org/iso/home/standards/language_codes.htm
Cuando sea posible se utiliza el código de idioma de 2 letras, de lo contrario usar 3. Por ejemplo, tenemos para Joomla!
ckb-IQ para el Sorani Kurdo
srp-ME para el Montenegrino