Criar um 'Pacote de Idiomas' para o Joomla
From Joomla! Documentation
Como criar pacotes de idiomas localizados CORE
Notas
- TODOS OS FICHEIROS DEVEM SER GUARDADOS COMO "UTF8 NO BOM" (para glifos não ASCII como nas letras acentuadas, etc.)
- O componente 'localise' poderá ajudá-lo a criar e a atualizar os ficheiros .ini
- Para a instalação de ficheiros .ini de extensões de terceiros no Joomla 2.5, consulte J2.5:Criar pacotes de idiomas externos
- Para os pacotes de idiomas prinipais do Joomla 2.5 core, consulte J2.5:Criar uma Pacote de Idiomas para o Joomla!
- Desde o Joomla! 3.2.0, en-GB é carregado sempre em primeiro lugar. Assim, se uma "string" estiver em falta ou se ocorrer um erro de análise no pacote de idiomas, será exibido o valor inglês.
- O desenvolvimento atual do Joomla pode ser obtido na Página do Sistema de Gestão de Conteúdo do Joomla! no Github
Pacotes de idioma completos
* pt
é um exemplo do prefixo de idioma.
Um pacote de idioma completo irá conter as traduções para as áreas do site e de administração.
- No caso de um pacote COMPLETO, o pacote é composto de 3 ficheiros, quando comprimidos.
pkg_pt.xml
site_pt.zip
admin_pt.zip
- Nomear o pacote
- pt_joomla_lang_full_3.7.0.1.zip
- Os ficheiros necessários para a eliminação parcial
- cada pacote deverá conter
pt.lib_joomla.ini
e pt.localise.php
que permitem lidar com a eliminação do site ou do pacote de administrador.
- IMPORTANTE: como alguns ficheiros .ini são necessários na área pública e foram efetuadas algumas alterações no carregamento dos ficheiros .ini de plug-in, é sempre necessário incluir algumas partes do administrador no pacote final, mesmo que só para um pacote 'apenas para o site'. Consulte abaixo Apenas o pacote de site
Um ficheiro pkg_pt.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>
Note: TinyMCE files are no more needed since 3.2. They are now shipped with core. If your language is missing, please contact the Translation Team coordination.
Um zip por cliente (por exemplo, site e administrador)
site_pt.zip
admin_pt.zip
Conteúdo do zip de cliente (o exemplo abaixo é de administrador)
um install.xml
Exemplo para administrador
<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>
Notes:
fr-FR.lib_joomla.ini
: Add in both admin and site. At least in site if "site only pack", see below
fr-FR.css
: NEW IN 1.7: this file can be added in the ADMINISTRATOR part if one wants to change the fonts used to display the back-end interface.
fr-FR.xml
: Note the file="meta" tag, telling it's the basic xml holding info about the pack.
install.xml
: Mandatory! This file lets install/uninstall a language. Note file="meta"
fr-FR.localise.php
: Add in both admin and site. At least in site if "site only pack", see below
- Folder media
destination="fr-FR"
: If one needs to add a specific calendar
All the ini files
Beware of new formatting!
- Double quotes in the value should be written as "_QQ_" or as "
- As of 3.7.0 escaped doublequotes \" may be used instead of "_QQ_" which will be deprecated in 4.0
o pt.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>
Notes:
- <locale> the locale is used to sort translated lists when present on the server.
- <firstDay>1</firstDay> used for the Calendar icon to specify what is the first day of the week in that language. 0 is Sunday, 1 is Monday, etc.
- <weekEnd>0,6</weekEnd> used for the Calendar, It defines the days of the week to be greyed. 0,6 is Saturday & Sunday, 1 would be Friday.
- <calendar>gregorian</calendar> is used for the Calendar, jalali will adapt the display of the calendar to Persian languages.
o pt.localise.php
Este ficheiro deveria estar presente pelo menos no zip de site
Explanation of this file: It replaces the fr-FR.ignore.php
and it can be customized depending on languages.
- Ignore search words.
- Define upper and lower limit of search words length.
- Define number of characters to display for the result of the search.
- Define specific plural functionality for some languages where the value of the string can change depending on the count (Russian for example).
- Define custom transliteration (i.e. when NOT using the Unicode URLS parameter in Global Configuration) to ensure proper change of some alphabets to ascii for the alias used when SEF is on. (The transliteration which is now default in 1.7 should take care of all latin-based languages.)
- Define a custom calendar by adding a function as well as some js files
ALWAYS SAVE THIS FILE AS UTF8 NO BOM if it contains non-ascii glyphs (accented letters, etc.)
Ini files can be saved with BOM (Joomla deals with that), but not xmls and php files.
Example 1 - Custom transliteration NOT implemented
Example of a basic fr-FR.localise.php
(where custom transliteration is NOT implemented)
<?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;
}
}
Example 2 - Custom transliteration implemented
Example of the function to add to file localise.php
when custom transliteration is desired
/**
* 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;
}
}
Example 3 - Custom calendar implemented
Here is an example of a function to add in the localise.php
file in order to implement a custom calendar for fa-IR (Persian language). This is different from the meta in the xml(s).
<?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;
}
}
Note: One has also to add the right calendar.js
files in the package.
Apenas o pacote de "Site"
No que diz respeito àqueles que fornecem pacotes apenas site":
I.e. IT IS NECESSARY TO PROVIDE AN ADMIN PACK WITH ALL FILES, SOME OF THEM SHOULD BE TRANSLATED and to post a unique package as for a real "full" pack (See above).
Why? ==> because some plugin ini files are used in front-end! Here is a typical administrator install.xml
in this case. Example for 3.3.x, the files to translate are indicated by =======> :
<?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>
For the untranslated files, just copy the en-GB
ones and change the language prefix.
O que não traduzir
Não traduza estas linhas:
- ficheiro
pt.ini
= as linhas para "JHELP_COMPONENTS_"
exemplo:
JHELP_COMPONENTS_MESSAGING_INBOX="Components_Messaging_Inbox"
Elas são utilizadas para mapear a ajuda. Quando uma wiki específica para ajuda por idioma estiver disponível, elas serão funcionais.
Perguntas Mais Frequentes
Porque é que nós utilizamos os ficheiros .ini, em vez de .po ou .mo
Os ficheiros .ini foram escolhidos em 2006 por vários motivos:
- There was no specific app to deal with .po on all platforms (Poedit was not available on Windows)
- Anyone, even without any code knowledge, could create/edit an ini file
- ini files are readable while .po are not
- You can't load more than one .po file per page.
but not only, and this is why it is better to go on:
the following is an example picked from Wordpress of the code in a simple .php file (BTW WP does NOT use any plurals, as I could see in their .po files):
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,
) );
}
Isto 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.')
É mais simples com ficheiros .ini:
JText::_("SOME_CONSTANT")
Trabalhar com plurais
Some languages like Russian do NOT have the same plurals as English. They need to add strings to fit their definitions. Joomla CMS provides a solution for it and it can be seen in the file localise.php added to the language package. For example:
Concerning plurals, this is the Russian plural:
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;
}
And this is the Scottish gaelic one:
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;
}
Now compare with 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;
}
This means that when we have in 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"
In Russian they need:
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 баннеров успешно разблокировано"
Códigos ISO padrão para nomear pacotes de idiomas
A hiperligação oficial referente aos códigos do país é: https://www.iso.org/obp/ui/#search
Joomla utiliza códigos alpha-2:
CS was the official country code of Tchecoslovakia BEFORE it was separated into the Czeck Republic (CZ) and Slovakia (SK)
Our Lang tags are composed of 2 parts:
- o código de idioma
- o código do país
Aqui está a lista oficial de códigos de idioma: http://www.iso.org/iso/home/standards/language_codes.htm
When possible we use the 2 letters language code, otherwise we use 3. For example we have for Joomla
ckb-IQ for Kurdish Sorani
srp-ME for Montenegrin